Hallo zusammen,
ich habe für Munin ein Script gefunden, geschrieben in Ruby, für die Auswertung der Speicherausnutzung und Threadanzahl von Zarafa. Leider funktioniert die Abfrage nicht richtig und auf die email, die ich vor einiger Zeit an den Autor geschrieben hatte, habe ich noch keine Antwort bekommen. Vielleicht kann hier jemand helfen ...
Das Problem liegt im zweiten Teil, die PIDs werden ausgelesen und sollten dann abgefragt werden. Die Ausgabe wäre dann entsprechend sowas wie "Threads: 1", in val werden dann die Leerzeilen entfernt, das Threads entfernt und nur der Teil hinter dem : übernommen.
Leider klappt dies nur bei "zarafa-server, zarafa-monitor, zarafa-licensed", wo die Zahlen richtig ausgegeben werden. Bei den anderen Daten wird einfach nichts ausgegeben, obwohl auch entsprechende Threads laufen und eine manuelle Ausgabe mit cat /proc/pid/status dies bestätigt und die Ausgabe vom Aufbau natürlich der Ausgabe der drei funktionierenden Daten entspricht.
Kann mir jemand helfen ?
Danke,
Jan
ich habe für Munin ein Script gefunden, geschrieben in Ruby, für die Auswertung der Speicherausnutzung und Threadanzahl von Zarafa. Leider funktioniert die Abfrage nicht richtig und auf die email, die ich vor einiger Zeit an den Autor geschrieben hatte, habe ich noch keine Antwort bekommen. Vielleicht kann hier jemand helfen ...
Code:
#!/usr/bin/env ruby
#
# Mario Verbelen V0.1
# Get zarafa Thread stats for munin
$dlist="zarafa-server,zarafa-gateway,zarafa-ical,zarafa-monitor,zarafa-spooler"
ARGV.each do|a|
if a.to_s == "autoconf"
puts "yes"
exit 0
end
if a.to_s == "config"
puts "graph_title Zarafa Threads usage"
puts "graph_args --base 1000 -l 0"
puts "graph_scale yes"
puts "graph_vlabel Threads usage of zarafa daemons"
puts "graph_category zarafa"
puts "graph_order zarafa_server zarafa_gateway zarafa_ical zarafa_monitor zarafa_spooler"
puts "graph_info Threads of zarafa daemons"
$dlist.split(',').each do|a|
puts "#{a.tr('-','_')}.label #{a.tr('-','_')}"
# puts "#{a.tr('-','_')}.type ABSOLUTE"
if a.to_s == "zarafa-server"
puts "#{a.tr('-','_')}.draw AREA"
else
puts "#{a.tr('-','_')}.draw STACK"
end
end
exit 0
end
end
$dlist.split(',').each do|a|
pid=`pidof #{a}`
$c=a
begin
File.open("/proc/#{pid.chomp}/status") do |io|
io.each do |line|
line.chomp!
line.grep( /Threads/ ) do |b|
val=b.squeeze(" ").tr("\t",':').split(':')[2]
puts "#{$c.tr('-','_')}.value #{val}"
end
end
end
rescue
puts "#{$c.tr('-','_')}.value"
end
end
Das Problem liegt im zweiten Teil, die PIDs werden ausgelesen und sollten dann abgefragt werden. Die Ausgabe wäre dann entsprechend sowas wie "Threads: 1", in val werden dann die Leerzeilen entfernt, das Threads entfernt und nur der Teil hinter dem : übernommen.
Leider klappt dies nur bei "zarafa-server, zarafa-monitor, zarafa-licensed", wo die Zahlen richtig ausgegeben werden. Bei den anderen Daten wird einfach nichts ausgegeben, obwohl auch entsprechende Threads laufen und eine manuelle Ausgabe mit cat /proc/pid/status dies bestätigt und die Ausgabe vom Aufbau natürlich der Ausgabe der drei funktionierenden Daten entspricht.
Kann mir jemand helfen ?
Danke,
Jan