mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
9d4c6ab7ca
commit
38d9e89d30
218
plugins/other/jstat__gccount
Executable file
218
plugins/other/jstat__gccount
Executable file
@ -0,0 +1,218 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Plugin for monitor JVM activity - GC Count -
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
#
|
||||||
|
# Symlink into /etc/munin/plugins/ and add the monitored
|
||||||
|
# alias name like :
|
||||||
|
#
|
||||||
|
# ln -s /usr/share/munin/plugins/jstat__gccount \
|
||||||
|
# /etc/munin/plugins/jstat_<jvm alias>_gccount
|
||||||
|
# This should, however, be given through autoconf and suggest.
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# You need to execute your Java program under jsvc provided by
|
||||||
|
# http://jakarta.apache.org/commons/daemon/
|
||||||
|
# which enables you to run your Java program with specified
|
||||||
|
# pid file with -pidfile option.
|
||||||
|
# A Brief setup documentation is also available at
|
||||||
|
# http://tomcat.apache.org/tomcat-5.5-doc/setup.html
|
||||||
|
#
|
||||||
|
# Target:
|
||||||
|
#
|
||||||
|
# Target Java Virtual Machine to monitor are:
|
||||||
|
# Sun JDK 5.0 (http://java.sun.com/javase/) (default)
|
||||||
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# config (required)
|
||||||
|
#
|
||||||
|
# Config variables:
|
||||||
|
#
|
||||||
|
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
||||||
|
# javahome - Defaults to '/usr/local/java/jdk'
|
||||||
|
#
|
||||||
|
DefaultPidFile="/var/run/jsvc.pid"
|
||||||
|
DefaultJavaHome="/usr/local/java/jdk"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Environment Variables
|
||||||
|
#
|
||||||
|
if [ -z "${pidfilepath}" ]; then
|
||||||
|
pidfilepath="${DefaultPidFile}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${graphtitle}" ]; then
|
||||||
|
graphtitle="${pidfilepath}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${javahome}" ]; then
|
||||||
|
JAVA_HOME="${DefaultJavaHome}"
|
||||||
|
else
|
||||||
|
JAVA_HOME="${javahome}"
|
||||||
|
fi
|
||||||
|
export JAVA_HOME
|
||||||
|
|
||||||
|
#
|
||||||
|
# Functions
|
||||||
|
#
|
||||||
|
chk_jdk()
|
||||||
|
{
|
||||||
|
isJRockit=`${JAVA_HOME}/bin/java -version 2>&1 | egrep -i 'jrockit'`
|
||||||
|
if [ -n "${isJRockit}" ]; then
|
||||||
|
JDK_TYPE="bea"
|
||||||
|
else
|
||||||
|
JDK_TYPE="sun"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
chk_version()
|
||||||
|
{
|
||||||
|
Version=`${JAVA_HOME}/bin/java -version 2>&1 | egrep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1`
|
||||||
|
if [ "${Version}" != "1.5.0" ]; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
config_common()
|
||||||
|
{
|
||||||
|
echo 'graph_title GC Count' $graphtitle
|
||||||
|
echo 'graph_args -l 0'
|
||||||
|
echo 'graph_vlabel GC Count(times)'
|
||||||
|
echo 'graph_total total'
|
||||||
|
echo 'graph_info GC Count'
|
||||||
|
echo 'graph_category JVM'
|
||||||
|
}
|
||||||
|
|
||||||
|
config_sun_jdk()
|
||||||
|
{
|
||||||
|
config_common
|
||||||
|
|
||||||
|
echo 'Young_GC.label Young_GC'
|
||||||
|
echo 'Young_GC.min 0'
|
||||||
|
echo 'Full_GC.label Full_GC'
|
||||||
|
echo 'Full_GC.min 0'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
config_bea_jdk()
|
||||||
|
{
|
||||||
|
config_common
|
||||||
|
|
||||||
|
echo 'Young_GC.label Young_GC'
|
||||||
|
echo 'Young_GC.min 0'
|
||||||
|
echo 'Old_GC.label Old_GC'
|
||||||
|
echo 'Old_GC.min 0'
|
||||||
|
}
|
||||||
|
|
||||||
|
print_sun_stats()
|
||||||
|
{
|
||||||
|
${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \
|
||||||
|
'{\
|
||||||
|
S0C = $1; \
|
||||||
|
S1C = $2; \
|
||||||
|
S0U = $3; \
|
||||||
|
S1U = $4; \
|
||||||
|
EC = $5; \
|
||||||
|
EU = $6; \
|
||||||
|
OC = $7; \
|
||||||
|
OU = $8; \
|
||||||
|
PC = $9; \
|
||||||
|
PU = $10; \
|
||||||
|
YGC = $11; \
|
||||||
|
YGCT = $12; \
|
||||||
|
FGC = $13; \
|
||||||
|
FGCT = $14; \
|
||||||
|
GCT = $15; \
|
||||||
|
\
|
||||||
|
S0F = S0C - S0U; \
|
||||||
|
S1F = S1C - S1U; \
|
||||||
|
EF = EC - EU; \
|
||||||
|
OF = OC - OU; \
|
||||||
|
PF = PC - PU; \
|
||||||
|
\
|
||||||
|
print "Young_GC.value " YGC; \
|
||||||
|
print "Full_GC.value " FGC; \
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
print_bea_stats()
|
||||||
|
{
|
||||||
|
${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \
|
||||||
|
'{\
|
||||||
|
HeapSize = $1; \
|
||||||
|
NurserySize = $2; \
|
||||||
|
UsedHeapSize = $3; \
|
||||||
|
YC = $4; \
|
||||||
|
OC = $5; \
|
||||||
|
YCTime = $6; \
|
||||||
|
OCTime = $7; \
|
||||||
|
GCTime = $8; \
|
||||||
|
YCPauseTime = $9; \
|
||||||
|
OCPauseTime = $10; \
|
||||||
|
PauseTime = $11; \
|
||||||
|
Finalizers = $12; \
|
||||||
|
\
|
||||||
|
print "Young_GC.value " YC; \
|
||||||
|
print "Old_GC.value " OC;\
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# common for all argument
|
||||||
|
#
|
||||||
|
chk_jdk
|
||||||
|
|
||||||
|
#
|
||||||
|
# autoconf
|
||||||
|
#
|
||||||
|
if [ "$1" = "autoconf" ]; then
|
||||||
|
|
||||||
|
if [ ! -x "${JAVA_HOME}/bin/jstat" ]; then
|
||||||
|
echo "no (No jstat found in ${JAVA_HOME}/bin)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
chk_version
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo "no (Java version is invalid)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${pidfilepath}" -o ! -r "${pidfilepath}" ]; then
|
||||||
|
echo "no (No such file ${pidfilepath} or cannot read ${pidfilepath}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "yes"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# config
|
||||||
|
#
|
||||||
|
if [ "$1" = "config" ]; then
|
||||||
|
if [ "${JDK_TYPE}" == "bea" ]; then
|
||||||
|
config_bea_jdk
|
||||||
|
else
|
||||||
|
config_sun_jdk
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Main
|
||||||
|
#
|
||||||
|
PidNum=`cat ${pidfilepath}`
|
||||||
|
|
||||||
|
if [ "${JDK_TYPE}" == "bea" ]; then
|
||||||
|
print_bea_stats
|
||||||
|
else
|
||||||
|
print_sun_stats
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user