check_jstat

Bookmark and Share

Rating
2 votes
Favoured:
0
Current Version
1.2
Last Release Date
2012-08-23
Compatible With
  • Nagios 3.x
Owner
License
LGPL
Hits
21950
Files:
FileDescription
check_jstat.shThe check command
A Nagios plugin to get memory statistics of a Java application using jstat

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:
pid=pid
heap=heap-size-used;heap-max-size;%ratio;warning-threshold-%ratio;critical-threshold-%ratio
perm=perm-size-used;perm-max-size;%ratio;warning-threshold-%ratio;critical-threshold-%ratio

Usage:

    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

Reviews (1)
byharakiri, August 13, 2012
1 of 1 people found this review helpful
The author copied code and forgot to adapt a variable.
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.
Owner's reply

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.