Search All Sites
- Nagios 3.x
|check_jstat.sh||The check command|
A Nagios plugin to get memory statistics of a Java application using jstat.
The process selection is done either by:
- its pid (-p
- its service name (-s
) (assuming there is a /var/run/ .pid file holding its pid)
- its java name (-j
) where the java name depends ob how the java application has been launched (main class or jar/war in case of java -jar) (see jps).
It then call jstat -gc and jstat -gccapacity to catch current and maximum heap and perm sizes. What is called heap here is the edden + old generation space, while perm represents the permanent generation space.
If specified (with -w and -c options) values can be checked with WARNING or CRITICAL thresholds (apply to both heap and perm regions).
This plugin also attach perfomance data to the output:
chech_jstat.sh -v Print version and exit" chech_jstat.sh -h Print this help nd exit chech_jstat.sh -p
[-w <%ratio>] [-c <%ratio>] chech_jstat.sh -s [-w <%ratio>] [-c <%ratio>] chech_jstat.sh -j [-w <%ratio>] [-c <%ratio>] -p the PID of process to monitor -s the service name of process to monitor -j the java app (see jps) process to monitor if this name in blank (-j '') any java app is looked for (as long there is only one) -w <%> the warning threshold ratio current/max in % -c <%> the critical threshold ratio current/max in %
This plugin may require to be run with sudo. In this case add a configuration in /etc/sudoers. For example if nagios is the user that run nagios (or NRPE deamon):
Defaults:nagios !requiretty nagios ALL=(root) NOPASSWD: /opt/nagios/libexec/check_jstat.sh
Line 143 and 147: 'cs' should become 'ws' (otherwise no warning treshhold)
For all else this works fine. Jstat is also less intrusive to your JVM than jmap.
Be sure to add this plugin to /etc/sudoers or run the test as the same uid as the JVM. Otherwise jstat will get access denied.
Thanks a lot for your review. I have fixed the copy/paste abuse in the version 1.1 and added a sample of sudoers configuration.