Home

Snmp storage check
Script : check_snmp_storage.pl Last update : March 12 2007

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, --perfdata
Performance data 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

This project is hosted on : http://sourceforge.net/projects/nagios-snmp Nagios and the Nagios logo are registered trademarks of Ethan Galstad.