munin-contrib/plugins/voldemort/voldemort

65 lines
2.3 KiB
Ruby
Executable File

#!/usr/bin/env jruby
# Description: Voldemort plugin to pull basic stats on throughput and number of calls into Munin
# Author: Peter Crossley - Webtrends Inc
require 'rubygems'
require 'jmx4r'
# %# family=auto
# %# capabilities=autoconf
# friendly name => result of listPerfStatsKeys via JMX
keys = {
'Throughput' => { 'vlabel' => 'rate',
'type' => 'ABSOLUTE',
'values' => %w[all_operation_throughput delete_throughput get_all_throughput get_throughput put_throughput] },
'Number of Calls' => { 'vlabel' => 'counts',
'type' => 'COUNTER',
'values' => %w[number_of_calls_to_delete number_of_calls_to_get number_of_calls_to_get_all
number_of_calls_to_put number_of_exceptions] }
}
case ARGV[0]
when 'config'
keys.each_key do |key|
puts "multigraph voldemort_#{key.gsub(' ', '_')}"
puts "graph_title #{key}"
puts 'graph_scale no'
puts 'graph_category search'
puts "graph_vlabel #{keys[key]['vlabel']}"
keys[key]['values'].each do |data|
puts "#{data}.type #{keys[key]['type']}"
puts "#{data}.label #{data.gsub('_', ' ')}"
end
puts
end
exit 0
when 'autoconf'
puts 'yes'
exit 0
else
# Add JMX port
# JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=5400 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
# Tell JBossAS to use the platform MBean server
# JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
# Make the platform MBean server able to work with JBossAS MBeans
# JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"
# JBOSS_CLASSPATH="/opt/webtrends/jboss/bin/mbean"
JMX::MBean.establish_connection port: 5400
vs = JMX::MBean.find_by_name 'voldemort.store.stats.aggregate:type=aggregate-perf'
keys.each_key do |key|
puts "multigraph voldemort_#{key.gsub(' ', '_')}"
for data in keys[key]['values'] do
puts "#{data}.value #{begin begin
vs.send(data.to_s)
rescue StandardError
0
end end}"
end
puts
end
end