#!/bin/bash # -*- sh -*- : << =cut =head1 NAME glassfish_counters_ - Wildcard-plugin to monitor counters in GlassFish =head1 CONFIGURATION This plugin does need the full path to the asadmin script: [glassfish_counters_*] env.ASADMIN /usr/local/glassfish/bin/asadmin This is a wildcard plugin. To monitor an subtree, link glassfish_counters_ to this file. E.g. ln -s /usr/share/munin/plugins/glassfish_counters_ \ /etc/munin/plugins/glassfish_counters_server.web.request ...will monitor server.web.request.* To ignore certain counters, just add more "IGNORE" lines on top of the awk script. (XXX: Fixme for env.) =head1 AUTHOR Philipp Buehler =head1 LICENSE BSD 2-clause =head1 VERSION $Id: glassfish_counters_.in$ 0.0.1 =cut [ -z $ASADMIN ] && { echo "ASADMIN not set in node configuration" exit 1 } || MUN_AS_ADMIN=${ASADMIN} check_link () { scriptname=${0##*/} myself=${scriptname##*_} if [ "x$myself" = "x" ] ; then echo "plugin must be symlinked, e.g. to glassfish_counters_server.web.request" exit 1 fi } SUBTREE=${0##*glassfish_counters_} case $1 in suggest) echo "not implemented" exit 0 ;; config) check_link $MUN_AS_ADMIN get -t --monitor=true "${SUBTREE}.*" | \ awk 'BEGIN{ FS="[ = ]"} /requestcount/ { next; } # IGNORE /dotted-name/ { myself = $NF print "graph_title GlassFish", myself print "graph_vlabel count" print "graph_category appserver" print "graph_info this shows available counters from", myself next } /-name / { nwhat = split($1, what, ".") gsub(/-name/, "", what[nwhat]) print what[nwhat] ".label " $NF print what[nwhat] ".type GAUGE" } /-description / { nwhat = split($1, what, ".") gsub(/-description/, "", what[nwhat]) $1 = ""; line = $0 gsub(/^ /,"", line) print what[nwhat] ".info " line } ' exit 0 ;; esac check_link $MUN_AS_ADMIN get -t --monitor=true "${SUBTREE}.*" | \ awk 'BEGIN{ FS="[ = ]" } /requestcount/ { next;} # IGNORE /-count / { nwhat = split($1, what, ".") gsub(/-count/, "", what[nwhat]) print what[nwhat] ".value " $NF} '