2021-10-19 02:10:34 +02:00
|
|
|
#!/usr/bin/env ruby
|
|
|
|
|
|
|
|
require 'socket'
|
|
|
|
|
|
|
|
INTERVAL = ENV['COLLECTD_INTERVAL'].to_i
|
|
|
|
HOSTNAME = ENV['COLLECTD_HOSTNAME']
|
|
|
|
|
|
|
|
|
|
|
|
def recv sock
|
|
|
|
results = []
|
|
|
|
loop do
|
|
|
|
line = sock.gets
|
|
|
|
if line.start_with? "| OK:"
|
|
|
|
break
|
|
|
|
else
|
|
|
|
results << line.chomp
|
|
|
|
end
|
|
|
|
end
|
|
|
|
results
|
|
|
|
end
|
|
|
|
|
2022-06-04 01:16:42 +02:00
|
|
|
=begin
|
|
|
|
def parse_table lines
|
|
|
|
fields = lines.shift.split(/\|/).collect { |s| s.strip }
|
|
|
|
p :fields => fields
|
|
|
|
lines.collect { |s|
|
|
|
|
data = s.split(/\|/).collect { |s| s.strip }
|
|
|
|
obj = {}
|
|
|
|
fields.each_with_index do |field,i|
|
|
|
|
obj[field] = data[i]
|
|
|
|
end
|
|
|
|
obj
|
|
|
|
}
|
|
|
|
end
|
|
|
|
=end
|
|
|
|
|
2021-10-19 02:10:34 +02:00
|
|
|
sock = TCPSocket.new "localhost", 5582
|
|
|
|
loop do
|
|
|
|
stats = {}
|
|
|
|
|
|
|
|
sock.puts "c2s:show()"
|
|
|
|
recv(sock).each do |line|
|
2022-06-04 01:16:42 +02:00
|
|
|
encrypted = line.index(" secure ") or line.index(" TLSv")
|
|
|
|
ipv6 = line.index " IPv6 "
|
|
|
|
k = "c2s:#{encrypted ? 'encrypted' : 'unencrypted'}-#{ipv6 ? 'ipv6' : 'ipv4'}"
|
|
|
|
stats[k] = 0 unless stats[k]
|
|
|
|
stats[k] += 1
|
2021-10-19 02:10:34 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
sock.puts "s2s:show()"
|
|
|
|
recv(sock).each do |line|
|
2022-06-04 01:16:42 +02:00
|
|
|
out = if line.index "<-"
|
|
|
|
false
|
|
|
|
elsif line.index "->"
|
|
|
|
true
|
|
|
|
else
|
|
|
|
next
|
|
|
|
end
|
|
|
|
encrypted = line.index " TLSv"
|
|
|
|
ipv6 = line.index " IPv6 "
|
|
|
|
k = "s2s-#{out ? 'out' : 'in'}:#{encrypted ? 'encrypted' : 'unencrypted'}-#{ipv6 ? 'ipv6' : 'ipv4'}"
|
|
|
|
stats[k] = 0 unless stats[k]
|
|
|
|
stats[k] += 1
|
2021-10-19 02:10:34 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
stats.each do |k,v|
|
|
|
|
k1, k2 = k.split(":", 2)
|
|
|
|
puts "PUTVAL \"#{HOSTNAME}/exec-prosody-#{k1}/current_connections-#{k2}\" interval=#{INTERVAL} N:#{v}"
|
|
|
|
end
|
2022-06-20 01:29:43 +02:00
|
|
|
STDOUT.flush
|
2021-10-19 02:10:34 +02:00
|
|
|
|
|
|
|
ensure
|
|
|
|
sleep INTERVAL
|
|
|
|
|
|
|
|
end
|