nagios-snmp-plugins/doc/snmp_int.html

691 lines
25 KiB
HTML
Executable file
Raw Blame History

<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">
<!-- background="img/sideback.jpg" -->
<table border="0" height="1477">
<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 height="1452">
<tr>
<td class="ProgramTitle"> Snmp interface check</td>
</tr>
<tr>
<td>
<p class="NewsItemDate">Script : check_snmp_int.pl</p>
<p class="SectionTitle"> Last update : March 17 2007</p>
</td>
</tr>
<tr>
<td valign="top">
<p class="SectionTitle">Description :</p>
<p class="SectionBody">Checks by snmp (v1, v2c or v3) host interface
state and usage. <br>
<br>
Interfaces can be selected by regexp ( 'eth' will check eth0, eth1,
eth2, ...).<br>
If multiple interfaces are selected, all must be up to get an OK
result<br>
<b><br>
</b>V<EFBFBD>rifie par snmp v1, v2c ou v3 l'&eacute;tat des interfaces
d'un h&ocirc;te, leur utilisation (bande passante, erreurs, pertes)
et sortir des informations de performances.<br>
Ce script permet d'utiliser des expressions r&eacute;guli&egrave;res
pour s&eacute;lectionner les interfaces : ex 'eth' va v&eacute;rifier
eth0, eth1, ...<br>
Il permet <20>galement de lister toutes les interfaces disponibles
sur la machine cible (option -v) pour voir leur nom en SNMP.<br>
<i>Pour les francophones, je ferais un manuel en Fran&ccedil;ais
quand j'aurais le temps... (et toute aide est bienvenue).</i><b><br>
</b><br>
<span class="SectionTitle">Standard checks</span><br>
</p>
<p class="SectionBody">The script will check interface operationnal
status using the MIB-II table. The interface is (are) selected by
the <b>-n </b>option.<br>
This option will be treated as a regular expression (eth will match
eth0, eth1, eth2...). You can disable this with the <b>-r </b>option
: the interface will be selected if it's description exactly matches
the name given by -n</p>
<p class="SectionBody">The interfaces are selected by their description
in the MIB-II table.<br>
<b>To see how interface looks like by snmp, you can list all of
them with the '-v' switch.</b><br>
</p>
<p class="SectionBody">The script will return OK if ALL interfaces
selected are UP, or CRITICAL if at least one interface is down.<br>
<br>
You can make the script return a OK value when all interfaces are
down (and CRITICAL when at least one is up) with the <b>-i </b>option.</p>
<p class="SectionBody">You can make the same tests on administrative
status instead with the <b>-a </b>option.</p>
<p class="SectionBody">To make output shorter, specially when you
have multiple interface, you can put the <b>-s</b> option. <br>
It will get only the first &lt;n&gt; caracters of the interface
descrition. If the number is negative then get the last &lt;n&gt;
caracters.</p>
<p class="SectionBody">Ex : EL20005 3Com Gigabit NIC (3C2000 Family)<br>
<b> -s 4 </b> will output : &quot;EL20&quot;.<br>
<b>-s -4</b> will output : &quot;ily)&quot;.</p>
<p class="SectionTitle">Performance output </p>
<p class="SectionBody"><b>-f </b>option : activate performance output
(default the In/out octet as a counter).<br>
<b>-e </b>option : in/out errors and discarded packets. -f must
also be set.<br>
-<b>S</b> option : Include speed in performance output in bits/s
as '&lt;interface_name&gt;_speed_bps'<br>
<b>-y </b>option : output performance data in % of interface speed<b><br>
-Y</b> option : output performance data in bits/s or Bytes/s (depending
on -B)</p>
<p class="SectionBody"><b>Note</b> : -y and -Y options need the usage
check to ba active (-k)</p>
<p class="SectionBody"><b>Warning</b> : the counters needed by -e
are not always available on all machines (ex Nokia IP)<br>
</p>
<p class="SectionBody"><span class="SectionTitle">Usage check (-k)
</span><br>
<br>
<br>
A temporary file will be created in &quot;/tmp&quot; by default
: this can be changed at the beginning of the script. <br>
The file name will be : tmp_Nagios_int.&lt;host IP&gt;.&lt;Interface
name&gt;. One file will be created by interface.<br>
<br>
The status UNKNOWN is returned when the script doesn't have enough
information (see -d option).<br>
<br>
You will have to tell the warning and critical levels, separated
with &quot;,&quot; and you can use decimal (ex : 10.3).<br>
For standard checks (no &quot;-q&quot; option) : <br>
-w <i>&lt;In warn&gt;</i>,<i>&lt;Out warn&gt;</i> -c <i>&lt;In warn&gt;</i>,<i>&lt;Out
warn&gt;<br>
</i>In warn : warning level for incomming traffic<br>
Out warn : warning level for outgoing traffic<br>
In crit : critical level for incomming traffic<br>
Out crit : critical level for outgoing traffic<br>
</p>
<p class="SectionBody">The unit for the check depends on the -B, -M
and -G option :</p>
<table border="0" cellpadding="2" cellspacing="3" width="276">
<tr>
<td class="SectionBody" width="111">&nbsp;</td>
<td class="SectionBody" width="66"><b> -B set</b></td>
<td class="SectionBody" width="75"><b>-B not set</b></td>
</tr>
<tr>
<td class="SectionBody" width="111"><b>-M &amp; -G not set</b></td>
<td class="SectionBody" width="66">
<div align="center">Kbps</div>
</td>
<td class="SectionBody" width="75">
<div align="center">KBps</div>
</td>
</tr>
<tr>
<td class="SectionBody" width="111"><b>-M set</b></td>
<td class="SectionBody" width="66">
<div align="center">Mbps</div>
</td>
<td class="SectionBody" width="75">
<div align="center">MBps</div>
</td>
</tr>
<tr>
<td class="SectionBody" width="111"><b>-G set</b></td>
<td class="SectionBody" width="66">
<div align="center">Gbps</div>
</td>
<td class="SectionBody" width="75">
<div align="center">GBps</div>
</td>
</tr>
</table>
<p class="SectionBody">It is possible to put warning and critical
levels with -b option.<br>
<b>0 means no warning or critical level checks</b></p>
<p class="SectionBody">When the extended checks are activated (-q
option), the warning levels are <br>
-w <i>&lt;In bytes&gt;</i>,<i>&lt;Out bytes&gt;</i>,<i>&lt;In error&gt;</i>,<i>&lt;Out
error&gt;,<i>&lt;In disc&gt;</i>,<i>&lt;Out disc&gt;</i></i> -c
<i>&lt;In warn&gt;</i>,<i>&lt;Out warn&gt;</i>, .....<br>
In error : warn/crit level in inboud <b>error/minute<br>
</b>Out error : warn/crit level in outbound error/minute<b> </b><br>
In disc : warn/crit level in inboud <b>discarded packets/minute<br>
</b>Out disc : warn/crit level in outbound discarded packets/minute<b>
</b><br>
</p>
<p class="SectionBody"><b>-k</b> : activates the standard usage feature<br>
<b>-q</b> : activates the extended usage<br>
<b>-d</b> : delta in seconds (default is 300s)<br>
<b>-w</b> : warning levels<br>
<b>-c</b> : critical levels<br>
</p>
<p class="SectionBody"><b>-d</b>: delta time<br>
You can put the delta time as an option : the &quot;delta&quot;
is the prefered time between two values that the script will use
to calculate the average Kbytes/s or error/min. The delta time should
(not must) be bigger than the check interval.<br>
Here is an example : Check interval of 2 minutes and delta of 4min</p>
<p class="SectionBody">T0 : value 1 : can't calculate usage<br>
T0+2 : value 2 : can't calculate usage<br>
T0+4 : value 3 : usage=(value3-value1)/((T0+4)-T0) <br>
T0+6 : value 4 : usage=(value4-value2)/((T0+6)-T0+2)<br>
(Yes I know TO+4-T0=4, it's just to explain..)<br>
.........</p>
<p class="SectionBody">The script will allow 10% less of the delta
and 300% more than delta as a correct interval. <br>
For example, with a delta of 5 minutes, the acceptable interval
will be between 4'30&quot; and 15 minutes.</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 &quot;ERROR: running table
: Message size exceeded maxMsgSize&quot; 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"><b>--label option</b></p>
<p class="SectionBody">This option just put label before the speed
output :<br>
Without : eth1:UP (10.3Kbps/4.4Kbps), eth0:UP (10.9Kbps/16.4Kbps):2
UP: OK<br>
With : eth1:UP (in=14.4Kbps/out=6.2Kbps), eth0:UP (in=15.3Kbps/out=22.9Kbps):2
UP: OK<br>
</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 (/usr/local/nagios/libexec)<br>
</p>
<p class="SectionBody"><a href="check_snmp_int.pl" class="SectionTitle">Dowload
latest version : 1.4.5</a></p>
<p class="SectionBody"><a href="index_commands.html" class="SectionTitle">Configuration
examples</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 &quot;public&quot;.</p>
<p class="SectionBody">If multiple interfaces are selected, all must
be up to get an OK result</p>
<table border="1" cellspacing="5">
<tr>
<td class="NewsItemDate" valign = top width="198">
<p>Get help
</td>
<td class="SectionBody" width="496">
<p>./check_snmp_int.pl <b>-h</b></p>
</td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">List all interfaces</td>
<td class="SectionBody" width="496">./check_snmp_int.pl -H 127.0.0.1
-C public -n zzzz <b>-v</b></td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">snmpv3 login</td>
<td class="SectionBody" width="496">./check_snmp_int.pl -H 127.0.0.1
-l login -w passwd<b></b></td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">
<p>Check eth0 interface is up
</td>
<td class="SectionBody" width="496">
<p>./check_snmp_int.pl -H 127.0.0.1 -C public <b>-n eth0 -r</b></p>
</td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">
<p>Check that all eth interface are up
</td>
<td class="SectionBody" width="496">
<p>./check_snmp_int.pl -H 127.0.0.1 -C public <b>-n eth </b></p>
</td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">
<p>Check that all ppp interface are down
</td>
<td class="SectionBody" width="496">
<p>./check_snmp_int.pl -H 127.0.0.1 -C public <b>-n ppp -i</b></p>
</td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">
<p>Check that all eth interface are administratively up
</td>
<td class="SectionBody" width="496">
<p>./check_snmp_int.pl -H 127.0.0.1 -C public <b>-n eth -a</b></p>
</td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">
<p>Check that FastEternet0/11 to 0/14 are up (Cisco)
</td>
<td class="SectionBody" width="496">
<p>./check_snmp_int.pl -H 127.0.0.1 -C public <b>-n &quot;Fast.*0.1[1234]&quot;</b></p>
</td>
</tr>
<tr>
<td class="NewsItemDate" valign = top width="198">Check the eth0
usage <br>
Note : no critical inbound (0)</td>
<td class="SectionBody" width="496">./check_snmp_int.pl -H 127.0.0.1
-C public -n eth0 <b>-k -w 200,400 -c 0,600</b></td>
</tr>
</table>
<p class="NewsItemDate"><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="NewsItemDate">Output of check_snmp_int.pl -h</p>
<table border="1" cellspacing="5">
<tr>
<td class="SectionBody" valign = top>
<p class="SectionBody">SNMP Network Interface Monitor for Nagios
version 1.4.5<br>
GPL licence, (c)2004-2007 Patrick Proy
<p>Usage: ./check_snmp_int.pl [-v] -H &lt;host&gt; -C &lt;snmp_community&gt;
[-2] | (-l login -x passwd [-X pass -L &lt;authp&gt;,&lt;privp&gt;)
[-p &lt;port&gt;] -n &lt;name in desc_oid&gt; [-i] [-a] [-r]
[-f[eSyY]] [-k[qBMGu] -g -w&lt;warn levels&gt; -c&lt;crit
levels&gt; -d&lt;delta&gt;] [-o &lt;octet_length&gt;] [-t
&lt;timeout&gt;] [-s] [-V]<br>
-v, --verbose<br>
print extra debugging information (including interface list
on the system)<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 v1 protocol)<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=&lt;authproto&gt;,&lt;privproto&gt;<br>
&lt;authproto&gt; : Authentication protocol (md5|sha : default
md5)<br>
&lt;privproto&gt; : Priv protocole (des|aes : default des)
<br>
-P, --port=PORT<br>
SNMP port (Default 161)<br>
-n, --name=NAME<br>
Name in description OID (eth0, ppp0 ...).<br>
This is treated as a regexp : -n eth will match eth0,eth1,...<br>
Test it before, because there are known bugs (ex : trailling
/)<br>
-r, --noregexp<br>
Do not use regexp to match NAME in description OID<br>
-i, --inverse<br>
Make critical when up<br>
-a, --admin<br>
Use administrative status instead of operational<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>
-f, --perfparse<br>
Perfparse compatible output (no output when interface is down).<br>
-e, --error<br>
Add error &amp; discard to Perfparse output<br>
-S, --intspeed<br>
Include speed in performance output in bits/s<br>
-y, --perfprct ; -Y, --perfspeed<br>
-y : output performance data in % of max speed<br>
-Y : output performance data in bits/s or Bytes/s (depending
on -B) <br>
-k, --perfcheck ; -q, --extperfcheck <br>
-k check the input/ouput bandwidth of the interface<br>
-q also check the error and discard input/output<br>
-g, --64bits<br>
Use 64 bits counters instead of the standard counters <br>
when checking bandwidth &amp; performance data.<br>
-d, --delta=seconds<br>
make an average of &lt;delta&gt; seconds (default 300=5min)<br>
-B, --kbits<br>
Make the warning and critical levels in K|M|G Bits/s instead
of K|M|G Bytes/s<br>
-G, --giga ; -M, --mega ; -u, --prct<br>
-G : Make the warning and critical levels in Gbps (with -B)
or GBps<br>
-M : Make the warning and critical levels in Mbps (with -B)
or MBps<br>
-u : Make the warning and critical levels in % of reported
interface speed.<br>
-w, --warning=input,output[,error in,error out,discard in,discard
out]<br>
warning level for input / output bandwidth (0 for no warning)<br>
unit depends on B,M,G,u options<br>
warning for error &amp; discard input / output in error/min
(need -q)<br>
-c, --critical=input,output[,error in,error out,discard in,discard
out]<br>
critical level for input / output bandwidth (0 for no critical)<br>
unit depends on B,M,G,u options<br>
critical for error &amp; discard input / output in error/min
(need -q)<br>
-s, --short=int<br>
Make the output shorter : only the first &lt;n&gt; chars of
the interface(s)<br>
If the number is negative, then get the &lt;n&gt; LAST caracters.<br>
-t, --timeout=INTEGER<br>
timeout for SNMP in seconds (Default: 5) <br>
-V, --version<br>
prints version number<br>
Note : when multiple interface are selected with regexp, <br>
all be must be up (or down with -i) to get an OK result.</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>&nbsp;</p>
</BODY>
</HTML>