mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 02:51:03 +00:00
Merge pull request #963 from shuehner/more_jvms
Fix jstat* plugins to work again with java 6+7, fix PU reporting for Java8
This commit is contained in:
commit
4e713c9b30
3 changed files with 55 additions and 100 deletions
|
@ -25,6 +25,7 @@
|
||||||
# Target Java Virtual Machine to monitor are:
|
# Target Java Virtual Machine to monitor are:
|
||||||
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
||||||
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
||||||
|
# OpenJDK 1.7 .. 11 (https://openjdk.java.net/)
|
||||||
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -53,12 +54,7 @@ get_jdk_type() {
|
||||||
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
||||||
echo "bea"
|
echo "bea"
|
||||||
else
|
else
|
||||||
version=$("${JAVA_HOME}/bin/java" -version 2>&1 | grep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1)
|
echo "sun"
|
||||||
if echo "$version" | grep -q '^1\.5\.'; then
|
|
||||||
echo "sun15"
|
|
||||||
else
|
|
||||||
echo "sun"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,17 +85,21 @@ print_stats() {
|
||||||
if [ "${JDK_TYPE}" = "bea" ]; then
|
if [ "${JDK_TYPE}" = "bea" ]; then
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
awk_script='{ YC = $4; OC = $5; print "Young_GC.value " YGC; print "Old_GC.value " FGC; }'
|
awk_script='{ YC = $4; OC = $5; print "Young_GC.value " YGC; print "Old_GC.value " FGC; }'
|
||||||
elif [ "${JDK_TYPE}" = "sun15" ]; then
|
|
||||||
# shellcheck disable=SC2016
|
|
||||||
awk_script='{ YGC = $11; FGC = $13; print "Young_GC.value " YGC; print "Full_GC.value " FGC; }'
|
|
||||||
else
|
else
|
||||||
# example output of jstat for Java 1.8:
|
# List & Order of columns of jstat changes with java versions
|
||||||
# S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
|
# idx["YGC"] is index of YGC column in output (i.e. 13)
|
||||||
# 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
|
# $idx["YGC"] then accesses the value at this position (taken from 2nd line of the output)
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
awk_script='{ YGC = $13; FGC = $15; print "Young_GC.value " YGC; print "Full_GC.value " FGC; }'
|
awk_script='
|
||||||
|
NR==1 {
|
||||||
|
for (i=1;i<=NF;i++) idx[$i]=i
|
||||||
|
}
|
||||||
|
NR==2 {
|
||||||
|
print "Young_GC.value " $idx["YGC"];
|
||||||
|
print "Full_GC.value " $idx["FGC"];
|
||||||
|
}'
|
||||||
fi
|
fi
|
||||||
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script"
|
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | awk "$awk_script"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
# Target Java Virtual Machine to monitor are:
|
# Target Java Virtual Machine to monitor are:
|
||||||
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
||||||
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
||||||
|
# OpenJDK 1.7 .. 11 (https://openjdk.java.net/)
|
||||||
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -53,12 +54,7 @@ get_jdk_type() {
|
||||||
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
||||||
echo "bea"
|
echo "bea"
|
||||||
else
|
else
|
||||||
version=$("${JAVA_HOME}/bin/java" -version 2>&1 | grep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1)
|
echo "sun"
|
||||||
if echo "$version" | grep -q '^1\.5\.'; then
|
|
||||||
echo "sun15"
|
|
||||||
else
|
|
||||||
echo "sun"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,25 +97,21 @@ print_stats() {
|
||||||
print "Old_GC.value " OCTime;
|
print "Old_GC.value " OCTime;
|
||||||
print "Young_Pause.value " YCPauseTime;
|
print "Young_Pause.value " YCPauseTime;
|
||||||
print "Old_Pause.value " OCPauseTime; }'
|
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
|
else
|
||||||
# example output of jstat for Java 1.8:
|
# List & Order of columns of jstat changes with java versions
|
||||||
# S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
|
# idx["YGC"] is index of YGC column in output (i.e. 13)
|
||||||
# 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
|
# $idx["YGC"] then accesses the value at this position (taken from 2nd line of the output)
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
awk_script='{
|
awk_script='
|
||||||
YGCT = $14;
|
(NR==1) {
|
||||||
FGCT = $16;
|
for (i=1;i<=NF;i++) idx[$i]=i
|
||||||
print "Young_GC.value " YGCT;
|
}
|
||||||
print "Full_GC.value " FGCT; }'
|
(NR==2) {
|
||||||
|
print "Young_GC.value " $idx["YGCT"];
|
||||||
|
print "Full_GC.value " $idx["FGCT"];
|
||||||
|
}'
|
||||||
fi
|
fi
|
||||||
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script"
|
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | awk "$awk_script"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
# Target Java Virtual Machine to monitor are:
|
# Target Java Virtual Machine to monitor are:
|
||||||
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
# Sun JDK 5.0 (http://java.sun.com/javase/)
|
||||||
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
# Sun JDK 8.0 (http://java.sun.com/javase/)
|
||||||
|
# OpenJDK 1.7 .. 11 (https://openjdk.java.net/)
|
||||||
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
# BEA JRockit 5.0 (http://dev2dev.bea.com/jrockit/)
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -53,12 +54,7 @@ get_jdk_type() {
|
||||||
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
if "${JAVA_HOME}/bin/java" -version 2>&1 | grep -qi 'jrockit'; then
|
||||||
echo "bea"
|
echo "bea"
|
||||||
else
|
else
|
||||||
version=$("${JAVA_HOME}/bin/java" -version 2>&1 | grep '^java version' | awk '{print $3}' | sed -e 's/\"//g' | cut -d'_' -f 1)
|
echo "sun"
|
||||||
if echo "$version" | grep -q '^1\.5\.'; then
|
|
||||||
echo "sun15"
|
|
||||||
else
|
|
||||||
echo "sun"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,67 +110,34 @@ print_stats() {
|
||||||
print "NurserySize.value " NurserySize * 1024;
|
print "NurserySize.value " NurserySize * 1024;
|
||||||
print "HeapSize.value " HeapSize * 1024;
|
print "HeapSize.value " HeapSize * 1024;
|
||||||
print "UsedHeapSize.value " UsedHeapSize * 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
|
else
|
||||||
# example output of jstat for Java 1.8:
|
# List & Order of columns of jstat changes with java versions
|
||||||
# S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
|
# idx["YGC"] is index of YGC column in output (i.e. 13)
|
||||||
# 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
|
# $idx["YGC"] then accesses the value at this position (taken from 2nd line of the output)
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
awk_script='{
|
awk_script='
|
||||||
S0C = $1;
|
NR==1 {
|
||||||
S1C = $2;
|
for (i=1;i<=NF;i++) idx[$i]=i
|
||||||
S0U = $3;
|
}
|
||||||
S1U = $4;
|
NR==2 {
|
||||||
EC = $5;
|
S0F = $idx["S0C"] - $idx["S0U"];
|
||||||
EU = $6;
|
S1F = $idx["S1C"] - $idx["S1U"];
|
||||||
OC = $7;
|
EF = $idx["EC"] - $idx["EU"];
|
||||||
OU = $8;
|
OF = $idx["OC"] - $idx["OU"];
|
||||||
MC = $9;
|
MF = $idx["MC"] - $idx["MU"];
|
||||||
MU = $10;
|
print "Eden_Used.value " $idx["EU"] * 1024;
|
||||||
S0F = S0C - S0U;
|
print "Eden_Free.value " EF * 1024;
|
||||||
S1F = S1C - S1U;
|
print "Survivor0_Used.value " $idx["S0U"] * 1024;
|
||||||
EF = EC - EU;
|
print "Survivor0_Free.value " S0F * 1024;
|
||||||
OF = OC - OU;
|
print "Survivor1_Used.value " $idx["S1U"] * 1024;
|
||||||
MF = MC - MU;
|
print "Survivor1_Free.value " S1F * 1024;
|
||||||
print "Eden_Used.value " EU * 1024;
|
print "Old_Used.value " $idx["OU"] * 1024;
|
||||||
print "Eden_Free.value " EF * 1024;
|
print "Old_Free.value " OF * 1024;
|
||||||
print "Survivor0_Used.value " S0U * 1024;
|
print "Permanent_Used.value " $idx["MU"] * 1024;
|
||||||
print "Survivor0_Free.value " S0F * 1024;
|
print "Permanent_Free.value " MF * 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
|
fi
|
||||||
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script"
|
"${JAVA_HOME}/bin/jstat" -gc "$pid_num" | awk "$awk_script"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue