From 9001800398ddb91faaf644141b83b2059e7d4bbe Mon Sep 17 00:00:00 2001 From: Holger Levsen Date: Wed, 15 Mar 2017 16:32:39 +0100 Subject: add new munin plugin, jenkins_jstat, to monitor 'jstat -gc' output for jenkins.war JVM Signed-off-by: Holger Levsen --- .../jenkins/etc/munin/plugin-conf.d/jenkins_jstats | 3 + hosts/jenkins/etc/munin/plugins/jenkins_jstats | 84 ++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 hosts/jenkins/etc/munin/plugin-conf.d/jenkins_jstats create mode 100755 hosts/jenkins/etc/munin/plugins/jenkins_jstats (limited to 'hosts/jenkins') diff --git a/hosts/jenkins/etc/munin/plugin-conf.d/jenkins_jstats b/hosts/jenkins/etc/munin/plugin-conf.d/jenkins_jstats new file mode 100644 index 00000000..582c0960 --- /dev/null +++ b/hosts/jenkins/etc/munin/plugin-conf.d/jenkins_jstats @@ -0,0 +1,3 @@ +[jenkins_jstats] +user root +group root diff --git a/hosts/jenkins/etc/munin/plugins/jenkins_jstats b/hosts/jenkins/etc/munin/plugins/jenkins_jstats new file mode 100755 index 00000000..6e006b0d --- /dev/null +++ b/hosts/jenkins/etc/munin/plugins/jenkins_jstats @@ -0,0 +1,84 @@ +#!/bin/sh +# -*- sh -*- + +: << =cut + +=head1 NAME + +jenkins_jstats - Plugin to measure jstat from jenkins.war + +=head1 AUTHOR + +Contributed by Holger Levsen + +=head1 LICENSE + +GPLv2 + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf + +=cut + +. $MUNIN_LIBDIR/plugins/plugin.sh + +if [ "$1" = "autoconf" ]; then + echo yes + exit 0 +fi + +STATEFILE=$MUNIN_PLUGSTATE/$(basename $0) + +# delete statefile if it's older than ${jenkins_update_interval} set in /etc/munin/plugin-conf.d/jenkins +if test $(find $STATEFILE -mmin +${jenkins_update_interval} 2>/dev/null) ; then + rm -f $STATEFILE +fi + +if [ -f $STATEFILE ] && [ "$1" = "" ] ; then + cat $STATEFILE + exit 0 +fi + +JENKINS_PID=$(jps |grep jenkins.war|cut -d "j" -f1) +JOB_PREFIXES=$(for i in $(jstat -gc $JENKINS_PID | head -1) ; do echo -n "$i " ; done) +if [ "$1" = "config" ]; then + echo 'graph_title jenkins.war jstat -gc (mostly KB shown)' + echo 'graph_args --base 1000 -l 0 ' + echo 'graph_scale no' + echo 'graph_vlabel jenkins.war jstat -gc' + echo 'graph_category jenkins' + draw=AREA + for PREFIX in $JOB_PREFIXES ; do + echo "jenkins_jstats_$PREFIX.label $PREFIX" + case $PREFIX in + S0C) INFO="Current survivor space 0 capacity (KB)" ;; + S1C) INFO="Current survivor space 1 capacity (KB)" ;; + S0U) INFO="Survivor space 0 utilization (KB)" ;; + S1U) INFO="Survivor space 1 utilization (KB)" ;; + EC) INFO="Current eden space capacity (KB)" ;; + EU) INFO="Eden space utilization (KB)" ;; + OC) INFO="Current old space capacity (KB)" ;; + OU) INFO="Old space utilization (KB)" ;; + PC) INFO="Current permanent space capacity (KB)" ;; + PU) INFO="Permanent space utilization (KB)" ;; + YGC) INFO="Number of young generation GC Events" ;; + YGCT) INFO="Young generation garbage collection time" ;; + FGC) INFO="Number of full GC events" ;; + FGCT) INFO="Full garbage collection time" ;; + GCT) INFO="Total garbage collection time" ;; + *) ;; + esac + echo "jenkins_jstats_$PREFIX.info $INFO" + done + exit 0 +fi + +COUNTER=1 +VALUES=$(jstat -gc $JENKINS_PID | tail -1) +for PREFIX in $JOB_PREFIXES ; do + NR=$( (for i in $VALUES ; do echo $i ; done ) | head -$COUNTER | tail -1) + echo "jenkins_jstats_$PREFIX.value $NR" | tee -a $STATEFILE + COUNTER=$((COUNTER+1)) +done -- cgit v1.2.3-70-g09d2