#!/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/Procs usage" puts "graph_args --base 1000 -l 0" puts "graph_scale yes" puts "graph_vlabel Threads/Procs 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/Procs 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 thruse=0 pid.chomp.split(' ').each do |ppid| File.open("/proc/#{ppid}/status") do |io| io.each do |line| line.chomp! line.grep( /Threads/ ) do |b| val=b.squeeze(" ").tr("\t",':').split(':')[2] thruse+=Integer(val) end end end end puts "#{$c.tr('-','_')}.value #{thruse}" rescue puts "#{$c.tr('-','_')}.value" end end