1
0
mirror of https://github.com/tmate-io/tmate-ssh-server.git synced 2020-11-18 19:53:51 -08:00

Monitoring: session paired/not-paired

This commit is contained in:
Nicolas Viennot 2013-06-19 18:16:18 -04:00
parent 316bd7a9f8
commit 6ada73295c

View File

@ -5,20 +5,24 @@
require 'rubygems' require 'rubygems'
require 'bundler' require 'bundler'
require 'logger'
require 'set'
Bundler.require Bundler.require
require 'logger'
StatsD.server = 'monitor:8125' StatsD.server = 'monitor:8125'
StatsD.logger = Logger.new(STDERR)
StatsD.mode = 'production' StatsD.mode = 'production'
StatsD.logger = Logger.new(STDERR)
hostname = Socket.gethostname hostname = Socket.gethostname
seen_tokens = Set.new
loop do loop do
server_count = 0 sessions = {}
client_count = 0 new_sessions = 0
ips = [] paired = 0
not_paired = 0
Dir['/proc/*/cmdline'].map do |f| Dir['/proc/*/cmdline'].map do |f|
if File.open(f).read =~ /^tmate-slave \[(.+)\] \((.+)\) (.+)$/ if File.open(f).read =~ /^tmate-slave \[(.+)\] \((.+)\) (.+)$/
@ -26,15 +30,25 @@ loop do
role = $2 role = $2
ip = $3 ip = $3
server_count += 1 if role == 'server' new_sessions += 1 unless seen_tokens.include?(token)
client_count += 1 if role == 'client' seen_tokens << token
ips << ip
sessions[token] ||= []
sessions[token] << ip
end end
end end
StatsD.gauge("tmate.#{hostname}.servers", server_count) sessions.map do |token, ips|
StatsD.gauge("tmate.#{hostname}.clients", client_count) if ips.uniq.count > 1
StatsD.gauge("tmate.#{hostname}.unique_ips", ips.uniq.count) paired += 1
else
not_paired += 1
end
end
StatsD.increment("tmate.#{hostname}.sessions.total", new_sessions)
StatsD.gauge("tmate.#{hostname}.sessions.paired", paired)
StatsD.gauge("tmate.#{hostname}.sessions.not-paired", not_paired)
sleep 10 sleep 10
end end