Description :
Checks by snmp v1 or v3 if a process is running
and how many instances are running (minimum & maximum).
It is also possible to check memory and cpu used by one or a group
of process
Works on Windows, Linux/Unix, AS400.
Vérifie par snmp v1 ou v3 si un process tourne
et combien d'instances de ce process tournent (minimum et maximum).
Il est également possible de vérifier la mémoire
et le cpu utilisé.
Standard checks
The plugin checks if there is at least one
process matching the filter (-n option) when no warning or
critical levels are set.
The filter is treated as a regular expression by default, but you
can deactivate this (-r)
With the following options, you can add to your process selection :
-f : get full path of the script instead of only it's name
-A : add parameters with the script name
Option |
how the script will see the process |
None |
named |
-f |
/usr/sbin/named |
-A |
named -u named -t /var/named/chroot |
-f -A |
/usr/sbin/named -u named -t /var/named/chroot |
Warning : the -f & -A option will not function properly for Windows hosts (the snmp agent don't give this information)
You can use -w and -c options to set the warning
and critical levels :
-w <minW>,<maxW> : with minW and maxW the minimum
and maximum number of processes.
-c <minC>,<maxC> : same thing
Of course : minC <= minW < maxW <=maxC
You can omit <maxW> and <maxC>
Saying N is the current number of processes
- N < minC : critical
- minC < N <=minW : warning
- minW< N <= maxW : OK
- maxW< N <= maxC : warning
- maxC < N : critical
Memory checks
The -m option can check the memory used
by the selected processes.
By default, this will select the process wich use the maximum memory.
The -a switch will make an average
Ex : -m 7,20 will send a warning if a process uses more than
7 Mb, and critical for more than 20Mb.
CPU checks
When you use the -u option, a temporary
file will be created in "/tmp" by default : this can be
changed at the beginning of the script.
The file name will be : tmp_Icinga_proc.<host IP>.<process
filter>.
The -u option will add all the cpu used by
all selected process and the make the check
-u 91,95 : will send a warning if more
than 91% of cpu is used, and critical if more than 95% is used.
On multiprocessor hosts, the % of cpu use can
be > 100% : on a 4 CPU host, cpu usage can go up to 400% (the
script doesn't check if a host is multiprocessor or not).
The script curently wants a minimum of 5 minutes
between values taken from host (can be changed at the beginning
of the scripts). You can check more than once every 5 minutes but
don't put check-interval to more than 15 minutes.
When the script doesn't have enough data to compute the CPU use
(for example, the first time it is run), then it will return a UNKNOWN
status.
Msg size option (-o option)
In case you get a "ERROR: running table
: Message size exceeded maxMsgSize" error, you may need to
adjust the maxMsgSize, i.e. the maximum size of snmp message with
the -o option. Try a value with the -o AND the -v option : the script
will output the actual value so you can add some octets to it with
the -o option.
SNMP Login
See snmp info page
Requirements :
- Perl in /usr/bin/perl - or just run 'perl
script'
- Net::SNMP
- file 'utils.pm' in plugin diretory
Dowload
latest version : 1.5
Configurations
examples
Changelog
: On CVS repository on sourceforge : http://nagios-snmp.cvs.sourceforge.net/nagios-snmp/plugins/.
Examples :
All examples below are considering the script is local directory.
Host to be checked is 127.0.0.1 with snmp community "public".
If multiple interfaces are selected, all must
be up to get an OK result
Get help
|
./check_snmp_process.pl -h
|
snmpv3 login |
./check_snmp_process.pl -H
127.0.0.1 -l login -x passwd |
Check if at least one process matching http is running
|
./check_snmp_process.pl -H 127.0.0.1 -C public -n http
|
Result example :
|
3 process matching http : > 0 : OK
|
Check if at least 3 process matching http are running
|
./check_snmp_process.pl -H 127.0.0.1 -C public -n http
-w 2 -c 0
|
Result example :
(<=2 will return warning, 0 critical)
|
3 process matching httpd :
> 2 : OK |
Check if at
least one process named "httpd" exists (no regexp) |
./check_snmp_process.pl -H
127.0.0.1 -C public -n http -r |
Result example :
|
3 process named httpd
: > 0 : OK |
Check process
by their full path : check process of /opt/soft/bin/ (at least
one) |
./check_snmp_process.pl -H
127.0.0.1 -C public -n /opt/soft/bin/ -f |
Check that at
least 3 process but not more than 8 are running |
./check_snmp_process.pl -H
127.0.0.1 -C public -n http -w 3,8 -c 0,15 |
Same checks
+ checks maximum memory used by process (in Mb) : warning and
critical levels |
./check_snmp_process.pl -H
127.0.0.1 -C public -n http -w 3,8 -c 0,15 -m 9,25 |
Same check but
sum all CPU used by all selected process |
./check_snmp_process.pl -H
127.0.0.1 -C public -n http -w 3,8 -c 0,15 -m 9,25 -u 70,99 |
Output of check_snmp_process.pl -h
SNMP Process Monitor for Nagios version 1.5
GPL licence, (c)2004-2006 Patrick Proy
Usage: ./check_snmp_process.pl [-v] -H <host> -C <snmp_community> [-2] | (-l login -x passwd) [-p <port>] -n <name> [-w <min_proc>[,<max_proc>] -c <min_proc>[,max_proc] ] [-m<warn Mb>,<crit Mb> -a -u<warn %>,<crit%> -d<delta> ] [-t <timeout>] [-o <octet_length>] [-f -A -F ] [-r] [-V] [-g]
-v, --verbose
print extra debugging information (and lists all storages)
-h, --help
print this help message
-H, --hostname=HOST
name or IP address of host to check
-C, --community=COMMUNITY NAME
community name for the host's SNMP agent (implies SNMP v1 or v2c with option)
-l, --login=LOGIN ; -x, --passwd=PASSWD, -2, --v2c
Login and auth password for snmpv3 authentication
If no priv password exists, implies AuthNoPriv
-2 : use snmp v2c
-X, --privpass=PASSWD
Priv password for snmpv3 (AuthPriv protocol)
-L, --protocols=<authproto>,<privproto>
<authproto> : Authentication protocol (md5|sha : default md5)
<privproto> : Priv protocole (des|aes : default des)
-p, --port=PORT
SNMP port (Default 161)
-n, --name=NAME
Name of the process (regexp)
No trailing slash !
-r, --noregexp
Do not use regexp to match NAME in description OID
-f, --fullpath
Use full path name instead of process name
(Windows doesn't provide full path name)
-A, --param
Add parameters to select processes.
ex : "named.*-t /var/named/chroot" will only select named process with this parameter
-F, --perfout
Add performance output
outputs : memory_usage, num_process, cpu_usage
-w, --warn=MIN[,MAX]
Number of process that will cause a warning
-1 for no warning, MAX must be >0. Ex : -w-1,50
-c, --critical=MIN[,MAX]
number of process that will cause an error (
-1 for no critical, MAX must be >0. Ex : -c-1,50
Notes on warning and critical :
with the following options : -w m1,x1 -c m2,x2
you must have : m2 <= m1 < x1 <= x2
you can omit x1 or x2 or both
-m, --memory=WARN,CRIT
checks memory usage (default max of all process)
values are warning and critical values in Mb
-a, --average
makes an average of memory used by process instead of max
-u, --cpu=WARN,CRIT
checks cpu usage of all process
values are warning and critical values in % of CPU usage
if more than one CPU, value can be > 100% : 100%=1 CPU
-d, --delta=seconds
make an average of <delta> seconds for CPU (default 300=5min)
-g, --getall
In some cases, it is necessary to get all data at once because
process die very frequently.
This option eats bandwidth an cpu (for remote host) at breakfast.
-o, --octetlength=INTEGER
max-size of the SNMP message, usefull in case of Too Long responses.
Be carefull with network filters. Range 484 - 65535, default are
usually 1472,1452,1460 or 1440.
-t, --timeout=INTEGER
timeout for SNMP in seconds (Default: 5)
-V, --version
prints version number
Note :
CPU usage is in % of one cpu, so maximum can be 100% * number of CPU
example :
Browse process list : <script> -C <community> -H <host> -n <anything> -v
the -n option allows regexp in perl format :
All process of /opt/soft/bin : -n /opt/soft/bin/ -f
All 'named' process : -n named
|
|