Wiki

Clone wiki

check_netapp / Home

This NetApp Nagios check is written in Python and it needs http://pythonhosted.org/nagiosplugin ; please install that library ; in my case I've installed the library in '/home/anaconda/lib/python2.7/site-packages/nagiosplugin-1.3.dev0-py2.7.egg' , find a way that suits for you ; a good overview of the library is http://pythonhosted.org/nagiosplugin/tutorial/

Afterwards install the 'check_netapp.py' Nagios check in the management host connected by two Ethernet cables 'netapp01' and 'netapp02' to your NetApp ; in my case I've a E5400 with 2*60 disks and I've placed the 'check_netapp.py' Nagios check in '/opt/nagios/'

Then add in 'management_host:/etc/sudoers' the line :

%nagios ALL=(ALL)       NOPASSWD: /opt/nagios/check_netapp.py --netapp01 netapp01 --netapp02 netapp02

Create the NRPE conf 'management_host:/etc/nagios/nrpe.cfg.d/check_netapp01_netapp02.cfg' and reload NRPE :

command[check_netapp01_netapp02]=/usr/bin/sudo /opt/nagios/check_netapp.py --netapp01 netapp01 --netapp02 netapp02

A 'Not OK' output will be ( I've introduced some 'Degraded' strings in SMclioutput.txt to simulate a 'Not OK' output ):

#!bash
# ./check_netapp.py --SMclioutput ./SMclioutput.txt 
OFFLINESTATUS WARNING - NetApp Status is NOT Optimal according to ./SMclioutput.txt | BatteriesNotOK=0;@1:100 DrawersNotOK=0;@1:100 ESMcardsNotOK=0;@1:100 PowerSuppliesNotOK=0;@1:100 SFPNotOK=1;@1:100 TempsNotOK=0;@1:100 VolumesNotOK=1;@1:100

While an 'OK' output will be :

#!bash
# /opt/nagios/check_netapp.py --netapp01 netapp01 --netapp02 netapp02
ONLINESTATUS OK - NetApp Status ( netapp01, netapp02 ) is Optimal. | BatteriesNotOK=0;@1:100 DrawersNotOK=0;@1:100 ESMcardsNotOK=0;@1:100 PowerSuppliesNotOK=0;@1:100 SFPNotOK=0;@1:100 TempsNotOK=0;@1:100 VolumesNotOK=0;@1:100
running : /usr/bin/SMcli netapp01 netapp02 -c "show storageArray profile;" (check_netapp.py:111)

A super verbose 'OK' output is ( but don't run it as your regular output level ):

#!bash
# /opt/nagios/check_netapp.py --netapp01 netapp01 --netapp02 netapp02 -vvv
ONLINESTATUS OK - NetApp Status ( netapp01, netapp02 ) is Optimal.
running : /usr/bin/SMcli netapp01 netapp02 -c "show storageArray profile;" (check_netapp.py:111)
line #  872 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line #  918 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line #  964 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1010 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1056 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1102 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1148 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1194 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1240 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1286 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1332 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1378 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1424 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1470 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1516 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1562 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1608 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1654 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1700 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1746 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1792 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1838 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1884 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 1930 :       Volume status:                 Optimal                                           (check_netapp.py:45)
line # 2250 :          Link status:             Up                  (check_netapp.py:45)
line # 2261 :          Link status:             Down                (check_netapp.py:45)
line # 2300 :          Link status:                  Up                               (check_netapp.py:45)
line # 2317 :          Link status:                  Up                               (check_netapp.py:45)
line # 2334 :          Link status:                  Down                             (check_netapp.py:45)
line # 2351 :          Link status:                  Down                             (check_netapp.py:45)
line # 2471 :          Link status:             Up                  (check_netapp.py:45)
line # 2482 :          Link status:             Down                (check_netapp.py:45)
line # 2521 :          Link status:                  Up                               (check_netapp.py:45)
line # 2538 :          Link status:                  Up                               (check_netapp.py:45)
line # 2555 :          Link status:                  Down                             (check_netapp.py:45)
line # 2572 :          Link status:                  Down                             (check_netapp.py:45)
line # 7545 :          ESM card status:                 Optimal               (check_netapp.py:45)
line # 7560 :          ESM card status:                 Optimal               (check_netapp.py:45)
line # 7617 :          Power supply status:  Optimal           (check_netapp.py:45)
line # 7625 :          Power supply status:  Optimal           (check_netapp.py:45)
line # 7638 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 7647 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 7656 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 7665 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 7674 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 7688 :          Temperature sensor status:  Optimal       (check_netapp.py:45)
line # 7692 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 7696 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 7700 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 7704 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 7708 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 7712 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 7716 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 7720 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 7724 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 7728 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 7732 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 7736 :          Temperature sensor status:  Optimal                       (check_netapp.py:45)
line # 7740 :          Temperature sensor status:  Optimal                          (check_netapp.py:45)
line # 7763 :          Battery status:              Optimal               (check_netapp.py:45)
line # 7776 :          Battery status:              Optimal               (check_netapp.py:45)
line # 7831 :          Power supply status:  Optimal           (check_netapp.py:45)
line # 7839 :          Power supply status:  Optimal           (check_netapp.py:45)
line # 7852 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7868 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7884 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7900 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7916 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7932 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7948 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7964 :          SFP status:              Optimal                     (check_netapp.py:45)
line # 7985 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 7994 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 8003 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 8012 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 8021 :          Drawer status:        Optimal           (check_netapp.py:45)
line # 8035 :          Temperature sensor status:  Optimal                (check_netapp.py:45)
line # 8039 :          Temperature sensor status:  Optimal                (check_netapp.py:45)
line # 8043 :          Temperature sensor status:  Optimal                (check_netapp.py:45)
line # 8047 :          Temperature sensor status:  Optimal                (check_netapp.py:45)
line # 8051 :          Temperature sensor status:  Optimal                       (check_netapp.py:45)
line # 8055 :          Temperature sensor status:  Optimal                          (check_netapp.py:45)
line # 8059 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 8063 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 8067 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 8071 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 8075 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 8079 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 8083 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 8087 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
line # 8091 :          Temperature sensor status:  Optimal         (check_netapp.py:45)
line # 8095 :          Temperature sensor status:  Optimal          (check_netapp.py:45)
| BatteriesNotOK=0;@1:100 DrawersNotOK=0;@1:100 ESMcardsNotOK=0;@1:100
PowerSuppliesNotOK=0;@1:100 SFPNotOK=0;@1:100 TempsNotOK=0;@1:100
VolumesNotOK=0;@1:100

Eventually configure your Nagios server to regularly invoke 'check_netapp01_netapp02' ; in my case :

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       management_host
        service_description             Check NetApp E5400
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              9
        retry_check_interval            5
        contact_groups                  admins
        notification_interval           0
        notification_period             24x7
        notification_options            n
        check_command                   check_nrpe!check_netapp01_netapp02!-t 120
        check_interval                  60  
 }

Outcome in the Nagios Web interface will be like this

Updated