Excellent check

Hi,

So happy to find this check.
I add -k optional parameter to check multiple JVM on the same machine :


Usage: $SCRIPT_NAME -n|–name -k -p|–property -w|–warning -c|–critical

Where: is one of: “heap|non-heap|threads|classes”
Hint: You can use “jps -l” or “java -jar JvmInspector.jar all” to get the java name
Example: $SCRIPT_NAME -n org.apache.catalina.startup.Bootstrap -p heap -w 1073741824 -c 2147483648

EOF
exit 0
}

[ “$#” -eq 0 ] && usage

while [ ! -z “$1″ ]; do
case $1 in
-n|–name) shift; NAME=”$1″;;
-k|–keyword) shift; KEYWORD=”$1″;;
-p|–property) shift; PROPERTY=”$1″;;
-w|–warning) shift; WARNING=”$1″;;
-c|–critical) shift; CRITICAL=”$1”;;
-h|–help) usage;;
esac
shift
done

[ -z “$NAME” ] && p_unknown “Missing JVM app class name, use -n ”
[ -z “$PROPERTY” ] && p_unknown “Missing property, use -p ”
[ -z “$WARNING” ] && p_unknown “Missing warning thresholds, use -w ”
[ -z “$CRITICAL” ] && p_unknown “Missing critical thresholds, use -c ”

expr ${WARNING} : ‘[0-9]+$’ >/dev/null || p_unknown “Invalid warning threshold”
expr ${CRITICAL} : ‘[0-9]+$’ >/dev/null || p_unknown “Invalid critical threshold”
[ -f “$JVMINSPECTOR” ] || p_unknown “Can’t find JvmInspector.jar, please install it and set JVMINSPECTOR var in this script”

if [ -z “$KEYWORD” ]; then
PSLINE=”$(ps axo pid,uid,command | grep [j]ava | grep $NAME | head -1)”
else
PSLINE=”$(ps axo pid,uid,command | grep [j]ava | grep $NAME | grep $KEYWORD)”
fi

So, now, you can use the script like this :

./check_jvm –name org.apache.catalina.startup.Bootstrap -k confluence -p heap -w 100 -c 200

./check_jvm –name org.apache.catalina.startup.Bootstrap -k jira -p heap -w 100 -c 200

Thanks a lot

Bye