355 lines
18 KiB
HTML
355 lines
18 KiB
HTML
|
<HTML>
|
|||
|
<HEAD>
|
|||
|
<TITLE>Nagios plugins</TITLE>
|
|||
|
<META NAME="Keywords" CONTENT="nagios,plugins,perl,snmp,proy">
|
|||
|
<STYLE type="text/css">
|
|||
|
<!--
|
|||
|
.Default { font-family: verdana,arial,serif; font-size: 10pt; }
|
|||
|
.ProgramTitle { font-family: verdana,arial,serif; font-size: 18pt; font-weight: bold;}
|
|||
|
.Copyright { font-family: verdana,arial,serif; font-size: 10pt;}
|
|||
|
.Email { font-family: verdana,arial,serif; font-size: 10pt;}
|
|||
|
.NewsItem { font-family: verdana,arial,serif; font-size: 8pt; }
|
|||
|
.NewsItemOdd { font-family: verdana,arial,serif; font-size: 8pt; background-color: #DBDBDB;}
|
|||
|
.NewsItemEven { font-family: verdana,arial,serif; font-size: 8pt; background-color: #C4C2C2;}
|
|||
|
.NewsItemUrgent { font-family: verdana,arial,serif; font-size: 8pt; background-color: #ccff99;}
|
|||
|
.NewsItemDate { font-family: verdana,arial,serif; font-size: 8pt; font-weight: bold; }
|
|||
|
.SectionTitle { font-family: verdana,arial,serif; font-size: 9pt; font-weight: bold; text-decoration: underline;}
|
|||
|
.SectionBody { font-family: verdana,arial,serif; font-size: 8pt; }
|
|||
|
.ModificationDate { font-family: verdana,arial,serif; font-size: 7pt; }
|
|||
|
.Disclaimer { font-family: verdana,arial,serif; font-size: 8pt; }
|
|||
|
A.SideNavBarItem { font-family: verdana,arial,serif; background-color : black; color: #e7e7e7; font-size: 9pt; font-weight: bold; text-decoration: none; }
|
|||
|
A.SideNavBarItem:Hover { font-family: verdana,arial,serif; background-color : black; color: #ccff33; font-size: 9pt; font-weight: bold; text-decoration: none; }
|
|||
|
A.SideNavBarHotItem { font-family: verdana,arial,serif; background-color : black; color: #ffcc66; font-size: 9pt; font-weight: bold; text-decoration: none; }
|
|||
|
A.SideNavBarHotItem:Hover { font-family: verdana,arial,serif; background-color : black; color: #ccff33; font-size: 9pt; font-weight: bold; text-decoration: none; }
|
|||
|
-->
|
|||
|
</STYLE>
|
|||
|
</HEAD>
|
|||
|
<body background="img/sideback.jpg" bgcolor="#FFFFFF" text="black" class="Default">
|
|||
|
<table border="0">
|
|||
|
<tr>
|
|||
|
<td valign=top>
|
|||
|
<!-- Begin Side Bar -->
|
|||
|
<table border="0" width="125" valign=top>
|
|||
|
<tr>
|
|||
|
<td><a href="http://nagios.manubulon.com/" class="SideNavBarItem" >Home</a></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><BR>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td> </td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<!-- End Side Bar -->
|
|||
|
</td>
|
|||
|
<td valign=top>
|
|||
|
<table border="0" valign=top>
|
|||
|
<tr>
|
|||
|
<td class="ProgramTitle"> Snmp process check</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<p class="NewsItemDate">Script : check_snmp_process.pl</p>
|
|||
|
<p class="SectionTitle"> Last update : March 12 2007</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td valign="top">
|
|||
|
<p class="SectionTitle">Description : </p>
|
|||
|
<p class="SectionBody">Checks by snmp v1 or v3 if a process is running
|
|||
|
and how many instances are running (minimum & maximum). <br>
|
|||
|
It is also possible to check memory and cpu used by one or a group
|
|||
|
of process<br>
|
|||
|
<br>
|
|||
|
Works on Windows, Linux/Unix, AS400.</p>
|
|||
|
<p class="SectionBody"> V<>rifie par snmp v1 ou v3 si un process tourne
|
|||
|
et combien d'instances de ce process tournent (minimum et maximum).<br>
|
|||
|
Il est également possible de vérifier la mémoire
|
|||
|
et le cpu utilisé.<br>
|
|||
|
<br>
|
|||
|
<span class="SectionTitle"> Standard checks<br>
|
|||
|
</span></p>
|
|||
|
<p class="SectionBody">The plugin checks if there is at least one
|
|||
|
process matching the filter (<b>-n </b>option) when no warning or
|
|||
|
critical levels are set. <br>
|
|||
|
The filter is treated as a regular expression by default, but you
|
|||
|
can deactivate this (<b>-r</b>)</p>
|
|||
|
<p class="SectionBody">You can use -w and -c options to set the warning
|
|||
|
and critical levels : <br>
|
|||
|
<b>-w <minW>,<maxW> </b>: with minW and maxW the minimum
|
|||
|
and maximum number of processes.<br>
|
|||
|
<br>
|
|||
|
<b>-c <minC>,<maxC></b> : same thing<br>
|
|||
|
Of course : <b>minC <= minW < maxW <=maxC</b><br>
|
|||
|
<i><br>
|
|||
|
You can omit <maxW> and <maxC></i><br>
|
|||
|
<br>
|
|||
|
Saying N is the current number of processes<br>
|
|||
|
- N < minC : critical<br>
|
|||
|
- minC < N <=minW : warning<br>
|
|||
|
- minW< N <= maxW : OK<br>
|
|||
|
- maxW< N <= maxC : warning<br>
|
|||
|
- maxC < N : critical<br>
|
|||
|
</p>
|
|||
|
<p class="SectionTitle">Memory checks </p>
|
|||
|
<p class="SectionBody">The <b>-m </b>option can check the memory used
|
|||
|
by the selected processes.<br>
|
|||
|
By default, this will select the process wich use the maximum memory.
|
|||
|
The <b>-a</b> switch will make an average<br>
|
|||
|
<br>
|
|||
|
Ex : <b>-m 7,20 </b>will send a warning if a process uses more than
|
|||
|
7 Mb, and critical for more than 20Mb.</p>
|
|||
|
<p class="SectionTitle">CPU checks</p>
|
|||
|
<p class="SectionBody">When you use the <b>-u </b>option, a temporary
|
|||
|
file will be created in "/tmp" by default : this can be
|
|||
|
changed at the beginning of the script. <br>
|
|||
|
The file name will be : tmp_Nagios_proc.<host IP>.<process
|
|||
|
filter>.</p>
|
|||
|
<p class="SectionBody">The -u option will add all the cpu used by
|
|||
|
all selected process and the make the check<br>
|
|||
|
</p>
|
|||
|
<p class="SectionBody"><b>-u 91,95</b> : will send a warning if more
|
|||
|
than 91% of cpu is used, and critical if more than 95% is used.</p>
|
|||
|
<p class="SectionBody">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).</p>
|
|||
|
<p class="SectionBody">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.<br>
|
|||
|
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. </p>
|
|||
|
<p class="SectionBody"><b>Msg size option </b>(<i>-o</i><b><i> </i></b>option)</p>
|
|||
|
<p class="SectionBody">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.</p>
|
|||
|
<p class="SectionBody"><span class="SectionTitle">SNMP Login</span><br>
|
|||
|
</p>
|
|||
|
<p class="SectionBody">See <a href="index_info.html">snmp info page</a></p>
|
|||
|
<p class="SectionTitle">Requirements :</p>
|
|||
|
<p class="SectionBody"> - Perl in /usr/bin/perl - or just run 'perl
|
|||
|
script' <br>
|
|||
|
- Net::SNMP<br>
|
|||
|
- file 'utils.pm' in plugin diretory<br>
|
|||
|
</p>
|
|||
|
<p class="SectionBody"><a href="check_snmp_process.pl" class="SectionTitle">Dowload
|
|||
|
latest version : 1.4</a> </p>
|
|||
|
<p class="SectionBody"><a href="index_commands.html" class="SectionTitle">Configurations
|
|||
|
examples</a></p>
|
|||
|
<p class="SectionBody"><span class="SectionTitle">Changelog</span>
|
|||
|
: On CVS repository on sourceforge : <a href="http://nagios-snmp.cvs.sourceforge.net/nagios-snmp/plugins/">http://nagios-snmp.cvs.sourceforge.net/nagios-snmp/plugins/</a>.</p>
|
|||
|
<p class="SectionTitle">Examples :</p>
|
|||
|
<p class="SectionBody"><br>
|
|||
|
All examples below are considering the script is local directory.
|
|||
|
Host to be checked is 127.0.0.1 with snmp community "public".</p>
|
|||
|
<p class="SectionBody">If multiple interfaces are selected, all must
|
|||
|
be up to get an OK result</p>
|
|||
|
<table border="1" cellspacing="5" width="819">
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">
|
|||
|
<p>Get help
|
|||
|
</td>
|
|||
|
<td class="SectionBody" width="533">
|
|||
|
<p>./check_snmp_process.pl <b>-h</b></p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">snmpv3 login</td>
|
|||
|
<td class="SectionBody" width="533">./check_snmp_process.pl -H
|
|||
|
127.0.0.1 -l login -x passwd<b></b></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">
|
|||
|
<p>Check if at least one process matching http is running
|
|||
|
</td>
|
|||
|
<td class="SectionBody" width="533">
|
|||
|
<p>./check_snmp_process.pl -H 127.0.0.1 -C public <b>-n http</b></p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">
|
|||
|
<p align="right">Result example :
|
|||
|
</td>
|
|||
|
<td class="SectionBody" width="533">
|
|||
|
<p>3 process matching http : > 0 : OK</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">
|
|||
|
<p>Check if at least 3 process matching http are running
|
|||
|
</td>
|
|||
|
<td class="SectionBody" width="533">
|
|||
|
<p>./check_snmp_process.pl -H 127.0.0.1 -C public -n http<b>
|
|||
|
-w 2 -c 0</b></p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">
|
|||
|
<div align="right">Result example : <br>
|
|||
|
(<=2 will return warning, 0 critical)</div>
|
|||
|
</td>
|
|||
|
<td class="SectionBody" width="533">3 process matching httpd :
|
|||
|
> 2 : OK</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">Check if at
|
|||
|
least one process named "httpd" exists (no regexp)</td>
|
|||
|
<td class="SectionBody" width="533">./check_snmp_process.pl -H
|
|||
|
127.0.0.1 -C public -n http <b>-r</b></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">
|
|||
|
<p align="right">Result example : </p>
|
|||
|
</td>
|
|||
|
<td class="SectionBody" width="533">3 process <b>named</b> httpd
|
|||
|
: > 0 : OK</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">Check process
|
|||
|
by their full path : check process of /opt/soft/bin/ (at least
|
|||
|
one) </td>
|
|||
|
<td class="SectionBody" width="533">./check_snmp_process.pl -H
|
|||
|
127.0.0.1 -C public <b>-n /opt/soft/bin/ -f</b></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">Check that at
|
|||
|
least 3 process but not more than 8 are running</td>
|
|||
|
<td class="SectionBody" width="533">./check_snmp_process.pl -H
|
|||
|
127.0.0.1 -C public -n http <b>-w 3,8 -c 0,15</b></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">Same checks
|
|||
|
+ checks maximum memory used by process (in Mb) : warning and
|
|||
|
critical levels</td>
|
|||
|
<td class="SectionBody" width="533">./check_snmp_process.pl -H
|
|||
|
127.0.0.1 -C public -n http -w 3,8 -c 0,15 <b>-m 9,25</b></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td class="NewsItemDate" valign = top width="261">Same check but
|
|||
|
sum all CPU used by all selected process</td>
|
|||
|
<td class="SectionBody" width="533">./check_snmp_process.pl -H
|
|||
|
127.0.0.1 -C public -n http -w 3,8 -c 0,15 -m 9,25 <b>-u 70,99</b></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p class="NewsItemDate">Output of check_snmp_process.pl -h</p>
|
|||
|
<table border="1" cellspacing="5">
|
|||
|
<tr>
|
|||
|
<td class="SectionBody" valign = top>
|
|||
|
<p>SNMP Process Monitor for Nagios version 1.4<br>
|
|||
|
GPL licence, (c)2004-2006 Patrick Proy</p>
|
|||
|
<p>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%>
|
|||
|
] [-t <timeout>] [-o <octet_length>] [-f ] [-r]
|
|||
|
[-V] [-g]<br>
|
|||
|
-v, --verbose<br>
|
|||
|
print extra debugging information (and lists all storages)<br>
|
|||
|
-h, --help<br>
|
|||
|
print this help message<br>
|
|||
|
-H, --hostname=HOST<br>
|
|||
|
name or IP address of host to check<br>
|
|||
|
-C, --community=COMMUNITY NAME<br>
|
|||
|
community name for the host's SNMP agent (implies SNMP v1
|
|||
|
or v2c with option)<br>
|
|||
|
-l, --login=LOGIN ; -x, --passwd=PASSWD, -2, --v2c<br>
|
|||
|
Login and auth password for snmpv3 authentication <br>
|
|||
|
If no priv password exists, implies AuthNoPriv <br>
|
|||
|
-2 : use snmp v2c<br>
|
|||
|
-X, --privpass=PASSWD<br>
|
|||
|
Priv password for snmpv3 (AuthPriv protocol)<br>
|
|||
|
-L, --protocols=<authproto>,<privproto><br>
|
|||
|
<authproto> : Authentication protocol (md5|sha : default
|
|||
|
md5)<br>
|
|||
|
<privproto> : Priv protocole (des|aes : default des)
|
|||
|
<br>
|
|||
|
-p, --port=PORT<br>
|
|||
|
SNMP port (Default 161)<br>
|
|||
|
-n, --name=NAME<br>
|
|||
|
Name of the process (regexp)<br>
|
|||
|
No trailing slash !<br>
|
|||
|
-r, --noregexp<br>
|
|||
|
Do not use regexp to match NAME in description OID<br>
|
|||
|
-f, --fullpath<br>
|
|||
|
Use full path name instead of process name <br>
|
|||
|
(Windows doesn't provide full path name)<br>
|
|||
|
-w, --warn=MIN[,MAX]<br>
|
|||
|
Number of process that will cause a warning <br>
|
|||
|
-1 for no warning, MAX must be >0. Ex : -w-1,50<br>
|
|||
|
-c, --critical=MIN[,MAX]<br>
|
|||
|
number of process that will cause an error (<br>
|
|||
|
-1 for no critical, MAX must be >0. Ex : -c-1,50<br>
|
|||
|
Notes on warning and critical : <br>
|
|||
|
with the following options : -w m1,x1 -c m2,x2<br>
|
|||
|
you must have : m2 <= m1 < x1 <= x2<br>
|
|||
|
you can omit x1 or x2 or both<br>
|
|||
|
-m, --memory=WARN,CRIT<br>
|
|||
|
checks memory usage (default max of all process)<br>
|
|||
|
values are warning and critical values in Mb<br>
|
|||
|
-a, --average<br>
|
|||
|
makes an average of memory used by process instead of max<br>
|
|||
|
-u, --cpu=WARN,CRIT<br>
|
|||
|
checks cpu usage of all process<br>
|
|||
|
values are warning and critical values in % of CPU usage<br>
|
|||
|
if more than one CPU, value can be > 100% : 100%=1 CPU<br>
|
|||
|
-g, --getall<br>
|
|||
|
In some cases, it is necessary to get all data at once because<br>
|
|||
|
process die very frequently.<br>
|
|||
|
This option eats bandwidth an cpu (for remote host) at breakfast.<br>
|
|||
|
-o, --octetlength=INTEGER<br>
|
|||
|
max-size of the SNMP message, usefull in case of Too Long
|
|||
|
responses.<br>
|
|||
|
Be carefull with network filters. Range 484 - 65535, default
|
|||
|
are<br>
|
|||
|
usually 1472,1452,1460 or 1440. <br>
|
|||
|
-t, --timeout=INTEGER<br>
|
|||
|
timeout for SNMP in seconds (Default: 5)<br>
|
|||
|
-V, --version<br>
|
|||
|
prints version number<br>
|
|||
|
Note : <br>
|
|||
|
CPU usage is in % of one cpu, so maximum can be 100% * number
|
|||
|
of CPU <br>
|
|||
|
example : <br>
|
|||
|
Browse process list : <script> -C <community>
|
|||
|
-H <host> -n <anything> -v <br>
|
|||
|
the -n option allows regexp in perl format : <br>
|
|||
|
All process of /opt/soft/bin : -n /opt/soft/bin/ -f<br>
|
|||
|
All 'named' process : -n named<br>
|
|||
|
</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<p class="SectionBody">This project is hosted on : <br>
|
|||
|
<A href="http://sourceforge.net/projects/nagios-snmp"> <IMG src="http://sourceforge.net/sflogo.php?group_id=134917&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo" /></A>
|
|||
|
</p>
|
|||
|
<p class="SectionBody"> Nagios and the Nagios logo are registered
|
|||
|
trademarks of Ethan Galstad.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p> </p>
|
|||
|
</BODY>
|
|||
|
</HTML>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|