mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Merge pull request #934 from sumpfralle/jstat-plugins
jstat plugins: various improvements
This commit is contained in:
commit
99f6979f22
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
ceph_osd - Shows ceph OSD states (total configured, up and in)
|
ceph_osd - Shows ceph OSD states (total configured, up and in)
|
||||||
|
|
||||||
|
=head1 APPLICABLE SYSTEMS
|
||||||
|
|
||||||
|
Any host with ceph configured and "jq" being installed .
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Mate Gabri <mate@gabri.hu>
|
Mate Gabri <mate@gabri.hu>
|
||||||
@ -46,7 +50,6 @@ fi
|
|||||||
|
|
||||||
CEPH_STATUS=$(ceph -s --format=json)
|
CEPH_STATUS=$(ceph -s --format=json)
|
||||||
|
|
||||||
echo "osds.value $(echo $CEPH_STATUS | jq '.osdmap.osdmap.num_osds')"
|
echo "osds.value $(echo "$CEPH_STATUS" | jq '.osdmap.osdmap.num_osds')"
|
||||||
echo "up.value $(echo $CEPH_STATUS | jq '.osdmap.osdmap.num_up_osds')"
|
echo "up.value $(echo "$CEPH_STATUS" | jq '.osdmap.osdmap.num_up_osds')"
|
||||||
echo "in.value $(echo $CEPH_STATUS | jq '.osdmap.osdmap.num_in_osds')"
|
echo "in.value $(echo "$CEPH_STATUS" | jq '.osdmap.osdmap.num_in_osds')"
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Plugin for monitor JVM activity - GC Count -
|
# Plugin for monitor JVM activity - GC Count -
|
||||||
#
|
#
|
||||||
@ -23,7 +23,8 @@
|
|||||||
# Target:
|
# Target:
|
||||||
#
|
#
|
||||||
# Target Java Virtual Machine to monitor are:
|
# Target Java Virtual Machine to monitor are:
|
||||||
# Sun JDK 5.0 (http://java.sun.com/javase/) (default)
|
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
||||||
|
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
||||||
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
@ -33,140 +34,74 @@
|
|||||||
# Config variables:
|
# Config variables:
|
||||||
#
|
#
|
||||||
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
||||||
# javahome - Defaults to '/usr/local/java/jdk'
|
# javahome - override automatic detection of JRE directory
|
||||||
|
# graphtitle - Title of the graph (defaults to PID file location)
|
||||||
#
|
#
|
||||||
DefaultPidFile="/var/run/jsvc.pid"
|
|
||||||
DefaultJavaHome="/usr/local/java/jdk"
|
|
||||||
|
|
||||||
#
|
default_java_home=/usr/lib/jvm/default-java
|
||||||
# Environment Variables
|
[ -e "$default_java_home" ] || default_java_home=/usr/local/java/jdk
|
||||||
#
|
|
||||||
if [ -z "${pidfilepath}" ]; then
|
|
||||||
pidfilepath="${DefaultPidFile}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${graphtitle}" ]; then
|
pidfilepath=${pidfilepath:-/var/run/jsvc.pid}
|
||||||
graphtitle="${pidfilepath}"
|
graphtitle=${graphtitle:-$pidfilepath}
|
||||||
fi
|
JAVA_HOME=${javahome:-$default_java_home}
|
||||||
|
|
||||||
if [ -z "${javahome}" ]; then
|
|
||||||
JAVA_HOME="${DefaultJavaHome}"
|
|
||||||
else
|
|
||||||
JAVA_HOME="${javahome}"
|
|
||||||
fi
|
|
||||||
export JAVA_HOME
|
export JAVA_HOME
|
||||||
|
|
||||||
#
|
|
||||||
# Functions
|
get_jdk_type() {
|
||||||
#
|
local version
|
||||||
chk_jdk()
|
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
||||||
{
|
echo "bea"
|
||||||
isJRockit=`${JAVA_HOME}/bin/java -version 2>&1 | egrep -i 'jrockit'`
|
|
||||||
if [ -n "${isJRockit}" ]; then
|
|
||||||
JDK_TYPE="bea"
|
|
||||||
else
|
else
|
||||||
JDK_TYPE="sun"
|
version=$("${JAVA_HOME}/bin/java" -version 2>&1 | grep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1)
|
||||||
|
if echo "$version" | grep -q '^1\.5\.'; then
|
||||||
|
echo "sun15"
|
||||||
|
else
|
||||||
|
echo "sun"
|
||||||
|
fi
|
||||||
fi
|
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()
|
print_config() {
|
||||||
{
|
echo "graph_title GC Count $graphtitle"
|
||||||
echo 'graph_title GC Count' $graphtitle
|
|
||||||
echo 'graph_args -l 0'
|
echo 'graph_args -l 0'
|
||||||
echo 'graph_vlabel GC Count(times)'
|
echo 'graph_vlabel GC Count(times)'
|
||||||
echo 'graph_total total'
|
echo 'graph_total total'
|
||||||
echo 'graph_info GC Count'
|
echo 'graph_info GC Count'
|
||||||
echo 'graph_category virtualization'
|
echo 'graph_category virtualization'
|
||||||
}
|
|
||||||
|
|
||||||
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.label Young_GC'
|
||||||
echo 'Young_GC.min 0'
|
echo 'Young_GC.min 0'
|
||||||
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
echo 'Old_GC.label Old_GC'
|
echo 'Old_GC.label Old_GC'
|
||||||
echo 'Old_GC.min 0'
|
echo 'Old_GC.min 0'
|
||||||
|
else
|
||||||
|
echo 'Full_GC.label Full_GC'
|
||||||
|
echo 'Full_GC.min 0'
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
print_sun_stats()
|
|
||||||
{
|
print_stats() {
|
||||||
${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \
|
local pid_num="$1"
|
||||||
'{\
|
local awk_script
|
||||||
S0C = $1; \
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
S1C = $2; \
|
# shellcheck disable=SC2016
|
||||||
S0U = $3; \
|
awk_script='{ YC = $4; OC = $5; print "Young_GC.value " YGC; print "Old_GC.value " FGC; }'
|
||||||
S1U = $4; \
|
elif [ "${JDK_TYPE}" = "sun15" ]; then
|
||||||
EC = $5; \
|
# shellcheck disable=SC2016
|
||||||
EU = $6; \
|
awk_script='{ YGC = $11; FGC = $13; print "Young_GC.value " YGC; print "Full_GC.value " FGC; }'
|
||||||
OC = $7; \
|
else
|
||||||
OU = $8; \
|
# example output of jstat for Java 1.8:
|
||||||
PC = $9; \
|
# S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
|
||||||
PU = $10; \
|
# 2048.0 2048.0 0.0 1344.0 694784.0 145013.5 1398272.0 414857.1 102400.0 96308.0 12544.0 11240.1 979 20.997 5 2.705 23.702
|
||||||
YGC = $11; \
|
# shellcheck disable=SC2016
|
||||||
YGCT = $12; \
|
awk_script='{ YGC = $13; FGC = $15; print "Young_GC.value " YGC; print "Full_GC.value " FGC; }'
|
||||||
FGC = $13; \
|
fi
|
||||||
FGCT = $14; \
|
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script"
|
||||||
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
|
# autoconf
|
||||||
@ -178,13 +113,7 @@ if [ "$1" = "autoconf" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chk_version
|
if [ ! -f "${pidfilepath}" ] || [ ! -r "${pidfilepath}" ]; then
|
||||||
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}"
|
echo "no (No such file ${pidfilepath} or cannot read ${pidfilepath}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -194,25 +123,12 @@ if [ "$1" = "autoconf" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#
|
JDK_TYPE=$(get_jdk_type)
|
||||||
# config
|
|
||||||
#
|
|
||||||
if [ "$1" = "config" ]; then
|
if [ "$1" = "config" ]; then
|
||||||
if [ "${JDK_TYPE}" == "bea" ]; then
|
print_config
|
||||||
config_bea_jdk
|
|
||||||
else
|
|
||||||
config_sun_jdk
|
|
||||||
fi
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
print_stats "$(cat "$pidfilepath")"
|
||||||
# Main
|
|
||||||
#
|
|
||||||
PidNum=`cat ${pidfilepath}`
|
|
||||||
|
|
||||||
if [ "${JDK_TYPE}" == "bea" ]; then
|
|
||||||
print_bea_stats
|
|
||||||
else
|
|
||||||
print_sun_stats
|
|
||||||
fi
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Plugin for monitor JVM activity - GC Time -
|
# Plugin for monitor JVM activity - GC Time -
|
||||||
#
|
#
|
||||||
@ -23,7 +23,8 @@
|
|||||||
# Target:
|
# Target:
|
||||||
#
|
#
|
||||||
# Target Java Virtual Machine to monitor are:
|
# Target Java Virtual Machine to monitor are:
|
||||||
# Sun JDK 5.0 (http://java.sun.com/javase/) (default)
|
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
||||||
|
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
||||||
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
@ -33,148 +34,94 @@
|
|||||||
# Config variables:
|
# Config variables:
|
||||||
#
|
#
|
||||||
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
||||||
# javahome - Defaults to '/usr/local/java/jdk'
|
# javahome - override automatic detection of JRE directory
|
||||||
|
# graphtitle - Title of the graph (defaults to PID file location)
|
||||||
#
|
#
|
||||||
DefaultPidFile="/var/run/jsvc.pid"
|
|
||||||
DefaultJavaHome="/usr/local/java/jdk"
|
|
||||||
|
|
||||||
#
|
default_java_home=/usr/lib/jvm/default-java
|
||||||
# Environment Variables
|
[ -e "$default_java_home" ] || default_java_home=/usr/local/java/jdk
|
||||||
#
|
|
||||||
if [ -z "${pidfilepath}" ]; then
|
|
||||||
pidfilepath="${DefaultPidFile}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${graphtitle}" ]; then
|
pidfilepath=${pidfilepath:-/var/run/jsvc.pid}
|
||||||
graphtitle="${pidfilepath}"
|
graphtitle=${graphtitle:-$pidfilepath}
|
||||||
fi
|
JAVA_HOME=${javahome:-$default_java_home}
|
||||||
|
|
||||||
if [ -z "${javahome}" ]; then
|
|
||||||
JAVA_HOME="${DefaultJavaHome}"
|
|
||||||
else
|
|
||||||
JAVA_HOME="${javahome}"
|
|
||||||
fi
|
|
||||||
export JAVA_HOME
|
export JAVA_HOME
|
||||||
|
|
||||||
#
|
|
||||||
# Functions
|
get_jdk_type() {
|
||||||
#
|
local version
|
||||||
chk_jdk()
|
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
||||||
{
|
echo "bea"
|
||||||
isJRockit=`${JAVA_HOME}/bin/java -version 2>&1 | egrep -i 'jrockit'`
|
|
||||||
if [ -n "${isJRockit}" ]; then
|
|
||||||
JDK_TYPE="bea"
|
|
||||||
else
|
else
|
||||||
JDK_TYPE="sun"
|
version=$("${JAVA_HOME}/bin/java" -version 2>&1 | grep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1)
|
||||||
|
if echo "$version" | grep -q '^1\.5\.'; then
|
||||||
|
echo "sun15"
|
||||||
|
else
|
||||||
|
echo "sun"
|
||||||
|
fi
|
||||||
fi
|
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()
|
print_config() {
|
||||||
{
|
echo "graph_title GC Time $graphtitle"
|
||||||
echo 'graph_title GC Time' $graphtitle
|
|
||||||
echo 'graph_args -l 0'
|
echo 'graph_args -l 0'
|
||||||
echo 'graph_vlabel GC Time(sec)'
|
echo 'graph_vlabel GC Time(sec)'
|
||||||
echo 'graph_total total'
|
echo 'graph_total total'
|
||||||
echo 'graph_info GC Time'
|
echo 'graph_info GC Time'
|
||||||
echo 'graph_category virtualization'
|
echo 'graph_category virtualization'
|
||||||
}
|
|
||||||
|
|
||||||
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.label Young_GC'
|
||||||
echo 'Young_GC.min 0'
|
echo 'Young_GC.min 0'
|
||||||
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
echo 'Old_GC.label Old_GC'
|
echo 'Old_GC.label Old_GC'
|
||||||
echo 'Old_GC.min 0'
|
echo 'Old_GC.min 0'
|
||||||
echo 'Young_Pause.label Young_GC Pause'
|
echo 'Young_Pause.label Young_GC Pause'
|
||||||
echo 'Young_Pause.min 0'
|
echo 'Young_Pause.min 0'
|
||||||
echo 'Old_Pause.label Old_GC Pause'
|
echo 'Old_Pause.label Old_GC Pause'
|
||||||
echo 'Old_Pause.min 0'
|
echo 'Old_Pause.min 0'
|
||||||
|
else
|
||||||
|
echo 'Full_GC.label Full_GC'
|
||||||
|
echo 'Full_GC.min 0'
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
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; \
|
|
||||||
|
|
||||||
\
|
print_stats() {
|
||||||
S0F = S0C - S0U; \
|
local pid_num="$1"
|
||||||
S1F = S1C - S1U; \
|
local awk_script
|
||||||
EF = EC - EU; \
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
OF = OC - OU; \
|
# shellcheck disable=SC2016
|
||||||
PF = PC - PU; \
|
awk_script='{
|
||||||
\
|
YCTime = $6;
|
||||||
print "Young_GC.value " YGCT; \
|
OCTime = $7;
|
||||||
print "Full_GC.value " FGCT; \
|
YCPauseTime = $9;
|
||||||
}'
|
OCPauseTime = $10;
|
||||||
|
print "Young_GC.value " YCTime;
|
||||||
|
print "Old_GC.value " OCTime;
|
||||||
|
print "Young_Pause.value " YCPauseTime;
|
||||||
|
print "Old_Pause.value " OCPauseTime; }'
|
||||||
|
elif [ "${JDK_TYPE}" = "sun15" ]; then
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
awk_script='{
|
||||||
|
YGCT = $12;
|
||||||
|
FGCT = $14;
|
||||||
|
print "Young_GC.value " YGCT;
|
||||||
|
print "Full_GC.value " FGCT; }'
|
||||||
|
else
|
||||||
|
# example output of jstat for Java 1.8:
|
||||||
|
# S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
|
||||||
|
# 2048.0 2048.0 0.0 1344.0 694784.0 145013.5 1398272.0 414857.1 102400.0 96308.0 12544.0 11240.1 979 20.997 5 2.705 23.702
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
awk_script='{
|
||||||
|
YGCT = $14;
|
||||||
|
FGCT = $16;
|
||||||
|
print "Young_GC.value " YGCT;
|
||||||
|
print "Full_GC.value " FGCT; }'
|
||||||
|
fi
|
||||||
|
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script"
|
||||||
}
|
}
|
||||||
|
|
||||||
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 " YCTime; \
|
|
||||||
print "Old_GC.value " OCTime; \
|
|
||||||
print "Young_Pause.value " YCPauseTime; \
|
|
||||||
print "Old_Pause.value " OCPauseTime
|
|
||||||
}'
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# common for all argument
|
|
||||||
#
|
|
||||||
chk_jdk
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# autoconf
|
# autoconf
|
||||||
@ -186,13 +133,7 @@ if [ "$1" = "autoconf" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chk_version
|
if [ ! -f "${pidfilepath}" ] || [ ! -r "${pidfilepath}" ]; then
|
||||||
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}"
|
echo "no (No such file ${pidfilepath} or cannot read ${pidfilepath}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -202,25 +143,11 @@ if [ "$1" = "autoconf" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#
|
JDK_TYPE=$(get_jdk_type)
|
||||||
# config
|
|
||||||
#
|
|
||||||
if [ "$1" = "config" ]; then
|
if [ "$1" = "config" ]; then
|
||||||
if [ "${JDK_TYPE}" == "bea" ]; then
|
print_config
|
||||||
config_bea_jdk
|
|
||||||
else
|
|
||||||
config_sun_jdk
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
print_stats "$(cat "$pidfilepath")"
|
||||||
# Main
|
|
||||||
#
|
|
||||||
PidNum=`cat ${pidfilepath}`
|
|
||||||
|
|
||||||
if [ "${JDK_TYPE}" == "bea" ]; then
|
|
||||||
print_bea_stats
|
|
||||||
else
|
|
||||||
print_sun_stats
|
|
||||||
fi
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Plugin for monitor JVM activity - Heap Usage -
|
# Plugin for monitor JVM activity - Heap Usage -
|
||||||
#
|
#
|
||||||
@ -23,7 +23,8 @@
|
|||||||
# Target:
|
# Target:
|
||||||
#
|
#
|
||||||
# Target Java Virtual Machine to monitor are:
|
# Target Java Virtual Machine to monitor are:
|
||||||
# Sun JDK 5.0 (http://java.sun.com/javase/) (default)
|
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
||||||
|
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
||||||
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
@ -33,65 +34,50 @@
|
|||||||
# Config variables:
|
# Config variables:
|
||||||
#
|
#
|
||||||
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
# pidfilepath - Which file path use. Defaults to '/var/run/jsvc.pid'
|
||||||
# javahome - Defaults to '/usr/local/java/jdk'
|
# javahome - override automatic detection of JRE directory
|
||||||
|
# graphtitle - Title of the graph (defaults to PID file location)
|
||||||
#
|
#
|
||||||
DefaultPidFile="/var/run/jsvc.pid"
|
|
||||||
DefaultJavaHome="/usr/local/java/jdk"
|
|
||||||
|
|
||||||
#
|
default_java_home=/usr/lib/jvm/default-java
|
||||||
# Environment Variables
|
[ -e "$default_java_home" ] || default_java_home=/usr/local/java/jdk
|
||||||
#
|
|
||||||
if [ -z "${pidfilepath}" ]; then
|
|
||||||
pidfilepath="${DefaultPidFile}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${graphtitle}" ]; then
|
pidfilepath=${pidfilepath:-/var/run/jsvc.pid}
|
||||||
graphtitle="${pidfilepath}"
|
graphtitle=${graphtitle:-$pidfilepath}
|
||||||
fi
|
JAVA_HOME=${javahome:-$default_java_home}
|
||||||
|
|
||||||
if [ -z "${javahome}" ]; then
|
|
||||||
JAVA_HOME="${DefaultJavaHome}"
|
|
||||||
else
|
|
||||||
JAVA_HOME="${javahome}"
|
|
||||||
fi
|
|
||||||
export JAVA_HOME
|
export JAVA_HOME
|
||||||
|
|
||||||
#
|
|
||||||
# Functions
|
get_jdk_type() {
|
||||||
#
|
local version
|
||||||
chk_jdk()
|
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
||||||
{
|
echo "bea"
|
||||||
isJRockit=`${JAVA_HOME}/bin/java -version 2>&1 | egrep -i 'jrockit'`
|
|
||||||
if [ -n "${isJRockit}" ]; then
|
|
||||||
JDK_TYPE="bea"
|
|
||||||
else
|
else
|
||||||
JDK_TYPE="sun"
|
version=$("${JAVA_HOME}/bin/java" -version 2>&1 | grep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1)
|
||||||
|
if echo "$version" | grep -q '^1\.5\.'; then
|
||||||
|
echo "sun15"
|
||||||
|
else
|
||||||
|
echo "sun"
|
||||||
|
fi
|
||||||
fi
|
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()
|
print_config() {
|
||||||
{
|
echo "graph_title Heap Usage $graphtitle"
|
||||||
echo "graph_title Heap Usage" $graphtitle
|
|
||||||
echo "graph_args --base 1024 -l 0"
|
echo "graph_args --base 1024 -l 0"
|
||||||
echo "graph_vlabel Heap Usage(Bytes)"
|
echo "graph_vlabel Heap Usage(Bytes)"
|
||||||
echo "graph_info Heap Usage"
|
echo "graph_info Heap Usage"
|
||||||
echo "graph_category virtualization"
|
echo "graph_category virtualization"
|
||||||
}
|
|
||||||
|
|
||||||
config_sun_jdk()
|
|
||||||
{
|
|
||||||
config_common
|
|
||||||
|
|
||||||
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
|
echo "NurserySize.label NurserySize"
|
||||||
|
echo "HeapSize.label HeapSize"
|
||||||
|
echo "UsedHeapSize.label UsedHeapSize"
|
||||||
|
echo "NurserySize.draw AREA"
|
||||||
|
echo "HeapSize.draw STACK"
|
||||||
|
echo "UsedHeapSize.draw STACK"
|
||||||
|
else
|
||||||
echo "Eden_Used.label Eden_Used"
|
echo "Eden_Used.label Eden_Used"
|
||||||
echo "Eden_Free.label Eden_Free"
|
echo "Eden_Free.label Eden_Free"
|
||||||
echo "Survivor0_Used.label Survivor0_Used"
|
echo "Survivor0_Used.label Survivor0_Used"
|
||||||
@ -112,81 +98,85 @@ config_sun_jdk()
|
|||||||
echo "Old_Free.draw STACK"
|
echo "Old_Free.draw STACK"
|
||||||
echo "Permanent_Used.draw STACK"
|
echo "Permanent_Used.draw STACK"
|
||||||
echo "Permanent_Free.draw STACK"
|
echo "Permanent_Free.draw STACK"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
config_bea_jdk()
|
|
||||||
{
|
|
||||||
config_common
|
|
||||||
|
|
||||||
echo "NurserySize.label NurserySize"
|
print_stats() {
|
||||||
echo "HeapSize.label HeapSize"
|
local pid_num="$1"
|
||||||
echo "UsedHeapSize.label UsedHeapSize"
|
local awk_script
|
||||||
echo "NurserySize.draw AREA"
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
echo "HeapSize.draw STACK"
|
# shellcheck disable=SC2016
|
||||||
echo "UsedHeapSize.draw STACK"
|
awk_script='{
|
||||||
|
HeapSize = $1;
|
||||||
|
NurserySize = $2;
|
||||||
|
UsedHeapSize = $3;
|
||||||
|
print "NurserySize.value " NurserySize * 1024;
|
||||||
|
print "HeapSize.value " HeapSize * 1024;
|
||||||
|
print "UsedHeapSize.value " UsedHeapSize * 1024; }'
|
||||||
|
elif [ "${JDK_TYPE}" = "sun15" ]; then
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
awk_script='{
|
||||||
|
S0C = $1;
|
||||||
|
S1C = $2;
|
||||||
|
S0U = $3;
|
||||||
|
S1U = $4;
|
||||||
|
EC = $5;
|
||||||
|
EU = $6;
|
||||||
|
OC = $7;
|
||||||
|
OU = $8;
|
||||||
|
PC = $9;
|
||||||
|
PU = $10;
|
||||||
|
S0F = S0C - S0U;
|
||||||
|
S1F = S1C - S1U;
|
||||||
|
EF = EC - EU;
|
||||||
|
OF = OC - OU;
|
||||||
|
PF = PC - PU;
|
||||||
|
print "Eden_Used.value " EU * 1024;
|
||||||
|
print "Eden_Free.value " EF * 1024;
|
||||||
|
print "Survivor0_Used.value " S0U * 1024;
|
||||||
|
print "Survivor0_Free.value " S0F * 1024;
|
||||||
|
print "Survivor1_Used.value " S1U * 1024;
|
||||||
|
print "Survivor1_Free.value " S1F * 1024;
|
||||||
|
print "Old_Used.value " OU * 1024;
|
||||||
|
print "Old_Free.value " OF * 1024;
|
||||||
|
print "Permanent_Used.value " PU * 1024;
|
||||||
|
print "Permanent_Free.value " PF * 1024; }'
|
||||||
|
else
|
||||||
|
# example output of jstat for Java 1.8:
|
||||||
|
# S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
|
||||||
|
# 2048.0 2048.0 0.0 1344.0 694784.0 145013.5 1398272.0 414857.1 102400.0 96308.0 12544.0 11240.1 979 20.997 5 2.705 23.702
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
awk_script='{
|
||||||
|
S0C = $1;
|
||||||
|
S1C = $2;
|
||||||
|
S0U = $3;
|
||||||
|
S1U = $4;
|
||||||
|
EC = $5;
|
||||||
|
EU = $6;
|
||||||
|
OC = $7;
|
||||||
|
OU = $8;
|
||||||
|
MC = $9;
|
||||||
|
MU = $10;
|
||||||
|
S0F = S0C - S0U;
|
||||||
|
S1F = S1C - S1U;
|
||||||
|
EF = EC - EU;
|
||||||
|
OF = OC - OU;
|
||||||
|
MF = MC - MU;
|
||||||
|
print "Eden_Used.value " EU * 1024;
|
||||||
|
print "Eden_Free.value " EF * 1024;
|
||||||
|
print "Survivor0_Used.value " S0U * 1024;
|
||||||
|
print "Survivor0_Free.value " S0F * 1024;
|
||||||
|
print "Survivor1_Used.value " S1U * 1024;
|
||||||
|
print "Survivor1_Free.value " S1F * 1024;
|
||||||
|
print "Old_Used.value " OU * 1024;
|
||||||
|
print "Old_Free.value " OF * 1024;
|
||||||
|
print "Permanent_Used.value " PU * 1024;
|
||||||
|
print "Permanent_Free.value " MF * 1024; }'
|
||||||
|
fi
|
||||||
|
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script"
|
||||||
}
|
}
|
||||||
|
|
||||||
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; \
|
|
||||||
\
|
|
||||||
S0F = S0C - S0U; \
|
|
||||||
S1F = S1C - S1U; \
|
|
||||||
EF = EC - EU; \
|
|
||||||
OF = OC - OU; \
|
|
||||||
PF = PC - PU; \
|
|
||||||
\
|
|
||||||
print "Eden_Used.value " EU * 1024; \
|
|
||||||
print "Eden_Free.value " EF * 1024; \
|
|
||||||
print "Survivor0_Used.value " S0U * 1024; \
|
|
||||||
print "Survivor0_Free.value " S0F * 1024; \
|
|
||||||
print "Survivor1_Used.value " S1U * 1024; \
|
|
||||||
print "Survivor1_Free.value " S1F * 1024; \
|
|
||||||
print "Old_Used.value " OU * 1024; \
|
|
||||||
print "Old_Free.value " OF * 1024; \
|
|
||||||
print "Permanent_Used.value " PU * 1024; \
|
|
||||||
print "Permanent_Free.value " PF * 1024; \
|
|
||||||
}'
|
|
||||||
}
|
|
||||||
|
|
||||||
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 "NurserySize.value " NurserySize * 1024; \
|
|
||||||
print "HeapSize.value " UsedHeapSize * 1024; \
|
|
||||||
print "UsedHeapSize.value " UsedHeapSize * 1024; \
|
|
||||||
}'
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# common for all argument
|
|
||||||
#
|
|
||||||
chk_jdk
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# autoconf
|
# autoconf
|
||||||
@ -198,13 +188,7 @@ if [ "$1" = "autoconf" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chk_version
|
if [ ! -f "${pidfilepath}" ] || [ ! -r "${pidfilepath}" ]; then
|
||||||
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}"
|
echo "no (No such file ${pidfilepath} or cannot read ${pidfilepath}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -214,25 +198,11 @@ if [ "$1" = "autoconf" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#
|
JDK_TYPE=$(get_jdk_type)
|
||||||
# config
|
|
||||||
#
|
|
||||||
if [ "$1" = "config" ]; then
|
if [ "$1" = "config" ]; then
|
||||||
if [ "${JDK_TYPE}" == "bea" ]; then
|
print_config
|
||||||
config_bea_jdk
|
|
||||||
else
|
|
||||||
config_sun_jdk
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
print_stats "$(cat "$pidfilepath")"
|
||||||
# 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