Repository
Munin (contrib)
Last change
2020-08-25
Graph Categories
Capabilities
Keywords
Language
Ruby
Authors

voldemort

Sadly there is no documentation for this plugin.

#!/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