Description :
This scripts checks by snmp (V1 and v3) disks,
memory, swap, everthing in hrStorage table.
Storages selection can be done :
- by perl regexp on description or index (-m)
- and (optional) by storage type (-q) : Other, Ram, VirtualMemory,
FixedDisk, RemovableDisk, FloppyDisk, CompactDisk, RamDisk, FlashMemory,
NetworkDisk
One or multiple storages can be selected.
It is also possible to sum all selected storages (-s)
Warning and critical levels can be checked based on :
- Percent of disk used
- Percent of disk left
- MB left
- MB used
Output options (-S):
-S can have 3 options : <type>[,<where>,<cut>]
<type> : Make the output shorter :
0 : only print the global result except the disk in warning or critical
1 : Don't print all info for every disk
<where> : (optional) if = 1, put the OK/WARN/CRIT at
the beginning
<cut> : take the <n> first caracters or <n>
last if n<0
With the following disks : /home : 51% used
and / : 90% used
Option used |
Warning |
Output |
|
99% |
/home: 51%used(1012MB/1969MB)
/: 90%used(5781MB/6390MB) (<99%) : OK |
|
90% |
/home: 51%used(1012MB/1969MB)
/: 90%used(5781MB/6390MB) (>90%) : WARNING |
-S0 |
90% |
All selected storages (<99%)
: OK |
-S0 |
99% |
/: 90%used(5781MB/6390MB)
(>90%) : WARNING |
-S1 |
90% |
/home: 51% /: 90% (<99%)
: OK |
-S1 |
99% |
/home: 51% /: 90%used(5781MB/6390MB)
(>90%) : WARNING |
-S0,1 |
90% |
OK : (<99%) All
selected storages |
-S0,1 |
90% |
WARNING : (>90%)
/: 90%used(5781MB/6390MB) |
-S1,,2 |
99% |
/h: 51% /: 90% (<99%)
: OK |
-S1,,-2 |
99% |
me: 51% /: 90% (<99%)
: OK |
-S0,1,-2 |
30% |
WARNING : (>30%) me: 51%used(1012MB/1969MB)
/: 90%used(5781MB/6390MB) |
Performance output (-f
option)
The performance will remove any weird caracters
( `~!$%^&*'"<>|?,(= ) ) from the drive name.
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
---
Vérifie par snmp v1 ou v3 l'occupation des disques, mais aussi de
la swap, de la mémoire, etc.. tout ce qui est disponible en snmp
par la table hrStorage.
Les disques sont sélectionnables par expression régulière
compatible Perl
Requirements :
- Perl in /usr/bin/perl - or just run 'perl
script'
- Net::SNMP
- file 'utils.pm' in plugin diretory (/usr/local/nagios/libexec)
Dowload
lastest version : 1.3.2
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".
Get help
|
./check_snmp_storage.pl -h
|
List all storage |
./check_snmp_storage.pl -H
127.0.0.1 -C public -m zzzz -w 80 -c 81 -v |
snmpv3 login |
./check_snmp_storage.pl -H
127.0.0.1 -l login -x passwd |
|
Unix/Linux
|
%used of /home is less than 80% and 90%
|
./check_snmp_storage.pl -H 127.0.0.1 -C public -m /home
-w 80% -c 90%
|
%free of /home is above 10% and 5%
|
./check_snmp_storage.pl -H 127.0.0.1 -C public -m /home -w
10% -c 5% -T pl
|
Mb used of /home is less than 800 Mb and 900 Mb
|
./check_snmp_storage.pl -H 127.0.0.1 -C public -m /home
-w 800 -c 900 -T bu
|
Mb free of /home is above 100Mb and 30Mb
|
./check_snmp_storage.pl -H 127.0.0.1 -C public -m /home
-w 100 -c 30 -T bl
|
All mountpoints have %used less than 80% and 90%
|
./check_snmp_storage.pl -H 127.0.0.1 -C public -m / -w
80% -c 90%
|
%used of /
mountpoint only is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m / -r
-w 80% -c 90%
|
%used of mountpoint
index 1 only is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m 1 -p
-w 80% -c 90%
|
Swap %used
is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m Swap
-w 80% -c 90%
|
Memory %used
is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m "Real
Memory" -w 80% -c 90%
|
|
Windows
|
%used of C
is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m ^C:
-w 80% -c 90%
|
%used of C,
D and E is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m ^[CDE]:
-w 80% -c 90%
|
%used of C+D+E
is less than 80% and 90% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m ^[CDE]:
-s -w 80% -c 90%
|
|
AS/400 specific
|
Sum of all
memory storages is less than 90% and 95% |
./check_snmp_storage.pl -H 127.0.0.1 -C public -m RAM
-s -w 80% -c 90%
|
Output of check_snmp_storage.pl -h
SNMP Disk Monitor for Nagios version
1.3.2
(c)2004-2006 Patrick Proy
Usage: check_snmp_storage [-v] -H <host> -C <snmp_community>
[-2] | (-l login -x passwd [-X pass -L <authp>,<privp>])
[-p <port>] -m <name in desc_oid> [-q storagetype]
-w <warn_level> -c <crit_level> [-t <timeout>]
[-T pl|pu|bl|bu ] [-r] [-s] [-i] [-e] [-S 0|1[,1,<car>]]
[-o <octet_length>]
By default, plugin will monitor %used on drives :
warn if %used > warn and critical if %used > crit
-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)
2, --v2c
Use snmp v2c
-l, --login=LOGIN ; -x, --passwd=PASSWD
Login and auth password for snmpv3 authentication
If no priv password exists, implies AuthNoPriv
-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)
-x, --passwd=PASSWD
Password for snmpv3 authentication
-p, --port=PORT
SNMP port (Default 161)
-m, --name=NAME
Name in description OID (can be mounpoints '/home' or 'Swap
Space'...)
This is treated as a regexp : -m /var will match /var , /var/log,
/opt/var ...
Test it before, because there are known bugs (ex : trailling
/)
No trailing slash for mountpoints !
-q, --storagetype=[Other|Ram|VirtualMemory|FixedDisk|RemovableDisk|FloppyDisk
CompactDisk|RamDisk|FlashMemory|NetworkDisk]
Also check the storage type in addition of the name
It is possible to use regular expressions ( "FixedDisk|FloppyDisk"
)
-r, --noregexp
Do not use regexp to match NAME in description OID
-s, --sum
Add all storages that match NAME (used space and total space)
THEN make the tests.
-i, --index
Parse index table instead of description table to select storage
-e, --exclude
Select all storages except the one(s) selected by -m
No action on storage type selection
-T, --type=TYPE
pl : calculate percent left
pu : calculate percent used (Default)
bl : calculate MegaBytes left
bu : calculate MegaBytes used
-w, --warn=INTEGER
percent / MB of disk used to generate WARNING state
you can add the % sign
-c, --critical=INTEGER
percent / MB of disk used to generate CRITICAL state
you can add the % sign
-f, --perfparse
Perfparse compatible output
-S, --short=<type>[,<where>,<cut>]
<type>: Make the output shorter :
0 : only print the global result except the disk in warning
or critical
ex: "< 80% : OK"
1 : Don't print all info for every disk
ex : "/ : 66 %used (< 80) : OK"
<where>: (optional) if = 1, put the OK/WARN/CRIT at
the beginning
<cut>: take the <n> first caracters or <n>
last if n<0
-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 :
with T=pu or T=bu : OK < warn < crit
with T=pl ot T=bl : crit < warn < OK
If multiple storage are selected, the worse condition will
be returned
i.e if one disk is critical, the return is critical
example :
Browse storage list : <script> -C <community>
-H <host> -m <anything> -w 1 -c 2 -v
the -m option allows regexp in perl format :
Test drive C,F,G,H,I on Windows : -m ^[CFGHI]:
Test all mounts containing /var : -m /var
Test all mounts under /var : -m ^/var
Test only /var : -m /var -r
Test all swap spaces : -m ^Swap
Test all but swap spaces : -m ^Swap -e
|
|