65 lines
2.3 KiB
Ruby
Executable File
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
|