[check_netapp_sdk] NetApp (7-Mode) Monitoring

  • Da es ja schon einige Plugins für NetApp via SNMP bzw. mit SDK als kommerzielle Version gibt, habe ich ein eigenes NetApp Plugin in Perl, basierend auf dem SDK, geschrieben.



    Dependencies:
    - Perl: NetApp Manageability SDK
    - Perl: Nagios:: Plugins
    - NetApp: getestet mit ONTAP 8.1 im 7-Mode


    Defaults:
    - Warning / Critical: 85%/95%


    Version: 0.7.5



    Download: https://github.com/riskersen/Monitoring/tree/master/NetApp



    Momentan werden folgende Features unterstützt:


    check-volume [-n VOLUME_NAME] - List volumes use -n to specify volume
    -> size in percent (-w/-c)
    check-lun [-n LUN_NAME] - List LUNs, use -n to specify lun
    -> size in percent (-w/-c)
    -> misalignment results to warning
    -> offline state and is mapped results to critical
    check-snapmirror [-n SNAPMIRROR_NAME] - List snapmirrors, use -n to specify snapmirror
    -> lag_time in seconds (-w/-c)
    -> transfer error -> CRITICAL
    check-aggr [-n AGGREGATE_NAME] - List aggregates, use -n to specify lun
    -> size in percent (-w/-c)
    -> mount state: warning on creating, mounting, unmounting, quiescing; ok on online consistent quiesced; critical for the rest!
    -> mirror state: warning on 'CP count check in progress'; ok on mirrored, unmirrored; critical for the rest!
    -> raid state: warning on resyncing, copying, growing, reconstruct; ok on normal, mirrored; critical for the rest
    -> inconsistency results on critical
    check-cluster - checks for cluster state
    -> warning/critical on other state than connected
    -> warning on inactive hwassist (if available)
    -> interconnect state
    check-shelf
    -> critical on failed power-supply
    -> critical on failed voltage sensor
    -> critical on failed temp sensor
    -> temperature (values provided by netapp, is needed due to different sensor locations)
    -> shelf state : warning on informational, non_critical; ok on normal; critical for the rest!
    check-license - checks license
    -> expiry date (excludes demo, auto_enabled and non expiry lics)



    Sample Output:


    $ check_netapp_sdk.pl -H snapmirror1 -U $USER1$ -P $USER2$ -S -C check-snapmirror -w 43200 -c 86400
    CRITICAL - 1 failed snapmirror found: C->netapp1->snapmirror1: nfs_ds2_snapmirror: Lag-time: 10.2 days Error: - | netapp1_snapmirror1_nfs_ds2_snapmirror_xfer_size=36609B;; netapp1_snapmirror1_nfs_ds2_snapmirror_lag_time=885023s;43200;86400


    $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-cluster
    OK - Cluster is fine! Partner netapp2 is connected


    $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-lun -n /vol/lun_1_vol/lun_1
    WARNING - 1 suspicious luns found: W->lun_1: 85.66% | lun_1_size_used=44911216B;44564480;47185920;;52428800 lun_1_size_pct=85.66%;85;9


    $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-volume -n lun_1_vol
    WARNING - 1 suspicious volumes found: W->lun_1_vol: 88.56% | lun_1_vol_size_used=52653680B;50537015;53509781;;59455312 lun_1_vol_size_pct=88.56%;85;9


    $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-aggr
    OK - 0 suspicious aggregate found | aggr_unmirrored_size_used=3161408134.68B;3274284218;3466889172;;3852099080 aggr_unmirrored_size_pct=82.07%;85;90 aggr0_size_used=10676546580.44B;11114697879;11768503637;;13076115152 aggr0_size_pct=81.65%;85;90


    $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-license
    OK - 0/48 expired licenses found


    $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-version
    OK - System-Name: netapp1 System-ID: 123456789 Model: FAS3240 Serial: 123456789 Version: NetApp Release 8.1.2P4 7-Mode: Fri Apr 26 19:57:25 PDT 2013


    TODO:
    - perfstats
    - diagnosis tree
    - services (nfs, cifs, ...)



    Diese Version läuft schon seit einiger Produktiv, könnte aber noch Fehler enthalten, bitte diese an mich melden.



    Viele Grüße
    Oliver

  • Code
    1. $ check_netapp_sdk.pl -H snapmirror1 -U $USER1$ -P $USER2$ -S -C check-snapmirror -w 43200 -c 86400
    2. CRITICAL - 1 failed snapmirror found: C->netapp1->snapmirror1: nfs_ds2_snapmirror: Lag-time: 10.2 days Error: - | netapp1_snapmirror1_nfs_ds2_snapmirror_xfer_size=36609.69140625B;; netapp1_snapmirror1_nfs_ds2_snapmirror_lag_time=885023s;43200;86400

    Acht Nachkommanstellen?
     

    Code
    1. $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-lun -n /vol/lun_1_vol/lun_1
    2. WARNING - 1 suspicious luns found: W->lun_1: 85.66% | lun_1_size_used=44911216B;44564480;47185920 lun_1_size_total=52428800B;44564480;47185920 lun_1_size_pct=85.66%;85;9

    Used und Total könnte man ggf. zusammenfassen. Woher stammen die Schwellwerte?
     

    Code
    1. $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-volume -n lun_1_vol
    2. WARNING - 1 suspicious volumes found: W->lun_1_vol: 88.56% | lun_1_vol_size_used=52653680B;50537015;53509781 lun_1_vol_size_total=59455312B;50537015;53509781 lun_1_vol_size_pct=88.56%;85;9

    Dito.
     

    Code
    1. $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-aggr
    2. OK - 0 suspicious aggregate found | aggr_unmirrored_size_used=3161408134.68B;3274284218;3466889172 aggr_unmirrored_size_total=3852099080B;; aggr_unmirrored_size_pct=82.07%;85;90 aggr0_size_used=10676546580.44B;11114697879;11768503637 aggr0_size_total=13076115152B;; aggr0_size_pct=81.65%;85;90

    Dito.
     

    Code
    1. $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-license
    2. OK - 0/48 expired licenses found

    ggf. Performance-Daten?

  • Hallo Wolfgang,


    die Nachkommastellen sind ein guter Punkt, die habe ich gefixt.


    Wenn ich dich richtig verstehen, dann sollte die Total Size lieber als Max in die used bzw. in ein generisches XXX_size integriert werden?



    Schwellwerte sind per Default 85% und 95%, können aber durch -w / -c überschrieben werden :-)


    Findest du Performance-Daten für den Lizenzablauf wirklich sinnvoll?

  • Quote

    Wenn ich dich richtig verstehen, dann sollte die Total Size lieber als Max in die used bzw. in ein generisches XXX_size integriert werden?

    Laut Dokumentation ist das Format 'Bezeichnung'=Wert[UOM];[warn];[crit];[min];[max]. Aus meiner Sicht wäre "Wert" dann die used-Angabe und "Max" die "Total Size", analog dazu dann die Prozentwerte in einer weiteren Metrik.

    Quote

    Findest du Performance-Daten für den Lizenzablauf wirklich sinnvoll?

    Ich weiß ehrlich gesagt nicht, ob das eher eine Warnung ist, etwas zu ändern, oder halt ein Meßwert, den man aufzeichnen sollte, daher die Nachfrage.

  • guter Hinweis bzgl. der Max Werte, da hatte ich nicht dran gedacht, habe ich ebenfalls eingebaut und werde ich nachher noch einchecken.


    Es wird bei Lizenzablauf innerhalb der definierten Schwellwerte auf Warnung und auf Kritisch gewechselt, wenn eine Lizenz bereits abgelaufen ist, wird dieser ebenfalls kritisch


  • $ check_netapp_sdk.pl -H netapp1 -U $USER1$ -P $USER2$ -S -C check-lun -n /vol/lun_1_vol/lun_1
    WARNING - 1 suspicious luns found: W->lun_1: 85.66% | lun_1_size_used=44911216B;44564480;47185920 lun_1_size_total=52428800B;44564480;47185920 lun_1_size_pct=85.66%;85;9


    Kurze Frage zum LUN Check - ist das eine Thin oder Thick Provisioning LUN?
    Mit Thick Provisioning wird die mir doch immer als voll angezeigt wenn ich nicht ganz falsch liege.

  • Kommt auf die Verwendung der LUNs an, meine LUNs sind auch Thick Provisioned und haben aber bei der Nutzung von Oracle ASM keine 100% Belegung, da ASM dort eine Art "transparenter" Container ist.