bityard Blog

// Nagios Monitoring - IBM SVC and Storwize

Please be sure to also read the update Nagios Monitoring - IBM SVC and Storwize (Update) to this blog post.

Some time ago i wrote a – rather crude – Nagios plugin to monitor IBM SAN Volume Controller (SVC) systems. The plugin was initially targeted at version 4.3.x of the SVC software on 2145-8F2 nodes, we used back then. Since the initial implementation of the plugin we upgraded the hard- and software of our SVC systems several times and are now at version 7.1.x of the SVC software on 2145-CG8 nodes. Recently we also got some IBM Storwize V3700 storage arrays, which share the same code as the SVC, but are missing some of the features and provide additional other features. A code and functional review of the original plugin for the SVC as well as an adaption for the Storwize arrays seemed to be in order. The result were the two plugins check_ibm_svc.pl and check_ibm_storwize.pl. They share a lot of common code with the original plugin, but are still maintained seperately for the simple reason that IBM might develop the SVC and the Storwize code in slightly different, incompatible directions.

In order to run the plugins, you need to have the command line tool wbemcli from the Standards Based Linux Instrumentation project installed on the Nagios system. In my case the wbemcli command line tool is placed in /opt/sblim-wbemcli/bin/wbemcli. If you use a different path, adapt the configuration hash entry “%conf{'wbemcli'}” according to your environment. The plugins use wbemcli to query the CIMOM service on the SVC or Storwize system for the necessary information. Therefor a network connection from the Nagios system to the SVC or Storwize systems on port TCP/5989 must be allowed and a user with the “Monitor” authorization must be created on the SVC or Storwize systems:

IBM_2145:svc:admin$ mkuser -name nagios -usergrp Monitor -password <password>

Or in the WebUI:

Nagios user on the SVC or Storwize system to query information via CIMOM.

Generic

  1. Optional: Enable SNMP traps to be sent to the Nagios system on each of the SVC or Storwize device. This requires SNMPD and SNMPTT to be already setup on the Nagios system. Login to the SVC or Storwize CLI and issue the command:

    IBM_2145:svc:admin$ mksnmpserver -ip <IP adress> -community public -error on -warning on -info on -port 162
    

    Where <IP> is the IP address of your Nagios system. Or in the SVC or Storwize WebUI navigate to:

    -> Settings
       -> Event Notifications
          -> SNMP
             -> <Enter IP of the Nagios system and the SNMPDs community string>

    Verify the port UDP/162 on the Nagios system can be reached from the SVC or Storwize devices.

SAN Volume Controller (SVC)

For SAN Volume Controller (SVC) devices the whole setup looks like this:

  1. Download the Nagios plugin check_ibm_svc.pl and place it in the plugins directory of your Nagios system, in this example /usr/lib/nagios/plugins/:

    $ mv -i check_ibm_svc.pl /usr/lib/nagios/plugins/
    $ chmod 755 /usr/lib/nagios/plugins/check_ibm_svc.pl
    
  2. Adjust the plugin settings according to your environment. Edit the following variable assignments:

    my %conf = (
        wbemcli => '/opt/sblim-wbemcli/bin/wbemcli',
  3. Define the following Nagios commands. In this example this is done in the file /etc/nagios-plugins/config/check_svc.cfg:

    # check SVC Backend Controller status
    define command {
        command_name    check_svc_bc
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C BackendController
    }
    # check SVC Backend SCSI Status
    define command {
        command_name    check_svc_btspe
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C BackendTargetSCSIPE
    }
    # check SVC MDisk status
    define command {
        command_name    check_svc_bv
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C BackendVolume
    }
    # check SVC Cluster status
    define command {
        command_name    check_svc_cl
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C Cluster
    }
    # check SVC MDiskGroup status
    define command {
        command_name    check_svc_csp
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C ConcreteStoragePool
    }
    # check SVC Ethernet Port status
    define command {
        command_name    check_svc_eth
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C EthernetPort
    }
    # check SVC FC Port status
    define command {
        command_name    check_svc_fcp
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C FCPort
    }
    # check SVC FC Port statistics
    define command {
        command_name    check_svc_fcp_stats
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C FCPortStatistics
    }
    # check SVC I/O Group status and memory allocation
    define command {
        command_name    check_svc_iogrp
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C IOGroup -w $ARG1$ -c $ARG2$
    }
    # check SVC WebUI status
    define command {
        command_name    check_svc_mc
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C MasterConsole
    }
    # check SVC VDisk Mirror status
    define command {
        command_name    check_svc_mirror
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C MirrorExtent
    }
    # check SVC Node status
    define command {
        command_name    check_svc_node
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C Node
    }
    # check SVC Quorum Disk status
    define command {
        command_name    check_svc_quorum
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C QuorumDisk
    }
    # check SVC Storage Volume status
    define command {
        command_name    check_svc_sv
        command_line    $USER1$/check_ibm_svc.pl -H $HOSTNAME$ -u <user> -p <password> -C StorageVolume
    }

    Replace <user> and <password> with name and password of the CIMOM user created above.

  4. Define a group of services in your Nagios configuration to be checked for each SVC system:

    # check sshd
    define service {
        use                     generic-service
        hostgroup_name          svc
        service_description     Check_SSH
        check_command           check_ssh
    }
    # check_tcp CIMOM
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_CIMOM
        check_command           check_tcp!5989
    }
    # check_svc_bc
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Backend_Controller
        check_command           check_svc_bc
    }
    # check_svc_btspe
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Backend_Target
        check_command           check_svc_btspe
    }
    # check_svc_bv
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Backend_Volume
        check_command           check_svc_bv
    }
    # check_svc_cl
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Cluster
        check_command           check_svc_cl
    }
    # check_svc_csp
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Storage_Pool
        check_command           check_svc_csp
    }
    # check_svc_eth
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Ethernet_Port
        check_command           check_svc_eth
    }
    # check_svc_fcp
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_FC_Port
        check_command           check_svc_fcp
    }
    # check_svc_fcp_stats
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_FC_Port_Statistics
        check_command           check_svc_fcp_stats
    }
    # check_svc_iogrp
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_IO_Group
        check_command           check_svc_iogrp!102400!204800
    }
    # check_svc_mc
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Master_Console
        check_command           check_svc_mc
    }
    # check_svc_mirror
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Mirror_Extents
        check_command           check_svc_mirror
    }
    # check_svc_node
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Node
        check_command           check_svc_node
    }
    # check_svc_quorum
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Quorum
        check_command           check_svc_quorum
    }
    # check_svc_sv
    define service {
        use                     generic-service-pnp
        hostgroup_name          svc
        service_description     Check_Storage_Volume
        check_command           check_svc_sv
    }

    Replace generic-service with your Nagios service template. Replace generic-service-pnp with your Nagios service template that has performance data processing enabled.

  5. Define hosts in your Nagios configuration for each SVC device. In this example its named svc1:

    define host {
        use         svc
        host_name   svc1
        alias       SAN Volume Controller 1
        address     10.0.0.1
        parents     parent_lan
    }

    Replace svc with your Nagios host template for SVC devices. Adjust the address and parents parameters according to your environment.

  6. Define a hostgroup in your Nagios configuration for all SVC systems. In this example it is named svc. The above checks are run against each member of the hostgroup:

    define hostgroup {
        hostgroup_name  svc
        alias           IBM SVC Clusters
        members         svc1
    }
  7. Run a configuration check and if successful reload the Nagios process:

    $ /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg
    $ /etc/init.d/nagios3 reload
    

The new hosts and services should soon show up in the Nagios web interface.

Storwize

For Storwize devices the whole setup looks like this:

  1. Download the Nagios plugin check_ibm_storwize.pl and place it in the plugins directory of your Nagios system, in this example /usr/lib/nagios/plugins/:

    $ mv -i check_ibm_storwize.pl /usr/lib/nagios/plugins/
    $ chmod 755 /usr/lib/nagios/plugins/check_ibm_storwize.pl
    
  2. Adjust the plugin settings according to your environment. Edit the following variable assignments:

    my %conf = (
        wbemcli => '/opt/sblim-wbemcli/bin/wbemcli',
  3. Define the following Nagios commands. In this example this is done in the file /etc/nagios-plugins/config/check_storwize.cfg:

    # check Storwize RAID Array status
    define command {
        command_name    check_storwize_array
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C Array
    }
    # check Storwize Hot Spare coverage
    define command {
        command_name    check_storwize_asc
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C ArrayBasedOnDiskDrive
    }
    # check Storwize MDisk status
    define command {
        command_name    check_storwize_bv
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C BackendVolume
    }
    # check Storwize Cluster status
    define command {
        command_name    check_storwize_cl
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C Cluster
    }
    # check Storwize MDiskGroup status
    define command {
        command_name    check_storwize_csp
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C ConcreteStoragePool
    }
    # check Storwize Disk status
    define command {
        command_name    check_storwize_disk
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C DiskDrive
    }
    # check Storwize Enclosure status
    define command {
        command_name    check_storwize_enc
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C Enclosure
    }
    # check Storwize Ethernet Port status
    define command {
        command_name    check_storwize_eth
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C EthernetPort
    }
    # check Storwize FC Port status
    define command {
        command_name    check_storwize_fcp
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C FCPort
    }
    # check Storwize I/O Group status and memory allocation
    define command {
        command_name    check_storwize_iogrp
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C IOGroup -w $ARG1$ -c $ARG2$
    }
    # check Storwize Hot Spare status
    define command {
        command_name    check_storwize_is
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C IsSpare
    }
    # check Storwize WebUI status
    define command {
        command_name    check_storwize_mc
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C MasterConsole
    }
    # check Storwize VDisk Mirror status
    define command {
        command_name    check_storwize_mirror
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C MirrorExtent
    }
    # check Storwize Node status
    define command {
        command_name    check_storwize_node
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C Node
    }
    # check Storwize Quorum Disk status
    define command {
        command_name    check_storwize_quorum
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C QuorumDisk
    }
    # check Storwize Storage Volume status
    define command {
        command_name    check_storwize_sv
        command_line    $USER1$/check_ibm_storwize.pl -H $HOSTNAME$ -u <user> -p <password> -C StorageVolume
    }

    Replace <user> and <password> with name and password of the CIMOM user created above.

  4. Define a group of services in your Nagios configuration to be checked for each Storwize system:

    # check sshd
    define service {
        use                     generic-service
        hostgroup_name          storwize
        service_description     Check_SSH
        check_command           check_ssh
    }
    # check_tcp CIMOM
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_CIMOM
        check_command           check_tcp!5989
    }
    # check_storwize_array
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Array
        check_command           check_storwize_array
    }
    # check_storwize_asc
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Array_Spare_Coverage
        check_command           check_storwize_asc
    }
    # check_storwize_bv
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Backend_Volume
        check_command           check_storwize_bv
    }
    # check_storwize_cl
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Cluster
        check_command           check_storwize_cl
    }
    # check_storwize_csp
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Storage_Pool
        check_command           check_storwize_csp
    }
    # check_storwize_disk
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Disk_Drive
        check_command           check_storwize_disk
    }
    # check_storwize_enc
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Enclosure
        check_command           check_storwize_enc
    }
    # check_storwize_eth
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Ethernet_Port
        check_command           check_storwize_eth
    }
    # check_storwize_fcp
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_FC_Port
        check_command           check_storwize_fcp
    }
    # check_storwize_iogrp
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_IO_Group
        check_command           check_storwize_iogrp!102400!204800
    }
    # check_storwize_is
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Hot_Spare
        check_command           check_storwize_is
    }
    # check_storwize_mc
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Master_Console
        check_command           check_storwize_mc
    }
    # check_storwize_mirror
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Mirror_Extents
        check_command           check_storwize_mirror
    }
    # check_storwize_node
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Node
        check_command           check_storwize_node
    }
    # check_storwize_quorum
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Quorum
        check_command           check_storwize_quorum
    }
    # check_storwize_sv
    define service {
        use                     generic-service-pnp
        hostgroup_name          storwize
        service_description     Check_Storage_Volume
        check_command           check_storwize_sv
    }

    Replace generic-service with your Nagios service template. Replace generic-service-pnp with your Nagios service template that has performance data processing enabled.

  5. Define hosts in your Nagios configuration for each Storwize device. In this example its named storwize1:

    define host {
        use         disk
        host_name   storwize1
        alias       Storwize Disk Storage 1
        address     10.0.0.1
        parents     parent_lan
    }

    Replace disk with your Nagios host template for storage devices. Adjust the address and parents parameters according to your environment.

  6. Define a hostgroup in your Nagios configuration for all SVC systems. In this example it is named storwize. The above checks are run against each member of the hostgroup:

    define hostgroup {
        hostgroup_name  storwize
        alias           IBM Storwize Devices
        members         storwize1
    }
  7. Run a configuration check and if successful reload the Nagios process:

    $ /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg
    $ /etc/init.d/nagios3 reload
    

The new hosts and services should soon show up in the Nagios web interface.

Generic

If the optional step in the “Generic” section above was done, SNMPTT also needs to be configured to be able to understand the incoming SNMP traps from Storwize systems. This can be achieved by the following steps:

  1. Download the IBM SVC/Storwize SNMP MIB matching your software version from ftp://ftp.software.ibm.com/storage/san/sanvc/.

  2. Convert the IBM SVC/Storwize SNMP MIB definitions in SVC_MIB_<version>.MIB into a format that SNMPTT can understand.

    $ /opt/snmptt/snmpttconvertmib --in=MIB/SVC_MIB_7.1.0.MIB --out=/opt/snmptt/conf/snmptt.conf.ibm-svc-710
    
    ...
    Done
    
    Total translations:        3
    Successful translations:   3
    Failed translations:       0
    
  3. Edit the trap severity according to your requirements, e.g.:

    $ vim /opt/snmptt/conf/snmptt.conf.ibm-svc-710
    
    ...
    EVENT tsveETrap .1.3.6.1.4.1.2.6.190.1 "Status Events" Critical
    
    ...
    EVENT tsveWTrap .1.3.6.1.4.1.2.6.190.2 "Status Events" Warning
    ...
    
  4. Optional: Apply the following patch to the configuration to reduce the number of false positives:

    snmptt.conf.ibm-svc-710
    -- /opt/snmptt/conf/snmptt.conf.ibm-svc-710.orig       2013-12-28 21:16:25.000000000 +0100
    +++ /opt/snmptt/conf/snmptt.conf.ibm-svc-710    2013-12-28 21:17:55.000000000 +0100
    @@ -29,11 +29,21 @@
       16: tsveMPNO
       17: tsveOBJN
     EDESC
    +# Filter and ignore the following events that are not really warnings
    +#   "Error ID = 980440": Failed to transfer file from remote node
    +#   "Error ID = 981001": Cluster Fabric View updated by fabric discovery
    +#   "Error ID = 981014": LUN Discovery failed
    +#   "Error ID = 982009": Migration complete
     #
    +EVENT tsveWTrap .1.3.6.1.4.1.2.6.190.2 "Status Events" Normal
    +FORMAT tsve information trap $*
    +MATCH $3: (Error ID = 980440|981001|981014|982009)
     #
    +# All remaining events with this OID are actually warnings
     #
     EVENT tsveWTrap .1.3.6.1.4.1.2.6.190.2 "Status Events" Warning
     FORMAT tsve warning trap $*
    +MATCH $3: !(Error ID = 980440|981001|981014|982009)
     SDESC
     tsve warning trap
     Variables:
  5. Add the new configuration file to be included in the global SNMPTT configuration and restart the SNMPTT daemon:

    $ vim /opt/snmptt/snmptt.ini
    
    ...
    [TrapFiles]
    snmptt_conf_files = <<END
    ...
    /opt/snmptt/conf/snmptt.conf.ibm-svc-710
    ...
    END
    
    $ /etc/init.d/snmptt reload
    
  6. Download the Nagios plugin check_snmp_traps.sh and place it in the plugins directory of your Nagios system, in this example /usr/lib/nagios/plugins/:

    $ mv -i check_snmp_traps.sh /usr/lib/nagios/plugins/
    $ chmod 755 /usr/lib/nagios/plugins/check_snmp_traps.sh
    
  7. Define the following Nagios command to check for SNMP traps in the SNMPTT database. In this example this is done in the file /etc/nagios-plugins/config/check_snmp_traps.cfg:

    # check for snmp traps
    define command {
        command_name    check_snmp_traps
        command_line    $USER1$/check_snmp_traps.sh -H $HOSTNAME$:$HOSTADDRESS$ -u <user> -p <pass> -d <snmptt_db>
    }

    Replace user, pass and snmptt_db with values suitable for your SNMPTT database environment.

  8. Add another service in your Nagios configuration to be checked for each SVC:

    # check snmptraps
    define service {
        use                     generic-service
        hostgroup_name          svc
        service_description     Check_SNMP_traps
        check_command           check_snmp_traps
    }

    or Storwize system:

    # check snmptraps
    define service {
        use                     generic-service
        hostgroup_name          storwize
        service_description     Check_SNMP_traps
        check_command           check_snmp_traps
    }
  9. Optional: Define a serviceextinfo to display a folder icon next to the Check_SNMP_traps service check for each SVC:

    define  serviceextinfo {
        hostgroup_name          svc
        service_description     Check_SNMP_traps
        notes                   SNMP Alerts
        #notes_url               http://<hostname>/nagios3/nagtrap/index.php?hostname=$HOSTNAME$
        #notes_url               http://<hostname>/nagios3/nsti/index.php?perpage=100&hostname=$HOSTNAME$
    }

    or Storwize system:

    define  serviceextinfo {
        hostgroup_name          storwize
        service_description     Check_SNMP_traps
        notes                   SNMP Alerts
        #notes_url               http://<hostname>/nagios3/nagtrap/index.php?hostname=$HOSTNAME$
        #notes_url               http://<hostname>/nagios3/nsti/index.php?perpage=100&hostname=$HOSTNAME$
    }

    device. This icon provides a direct link to the SNMPTT web interface with a filter for the selected host. Uncomment the notes_url depending on which web interface (nagtrap or nsti) is used. Replace hostname with the FQDN or IP address of the server running the web interface.

  10. Run a configuration check and if successful reload the Nagios process:

    $ /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg
    $ /etc/init.d/nagios3 reload
    
  11. Optional: If you're running PNP4Nagios v0.6 or later to graph Nagios performance data, you can use the PNP4Nagios template in pnp4nagios_storwize.tar.bz2 and pnp4nagios_svc.tar.bz2 to beautify the graphs. Download the PNP4Nagios templates pnp4nagios_svc.tar.bz2 and pnp4nagios_storwize.tar.bz2 and place them in the PNP4Nagios template directory, in this example /usr/share/pnp4nagios/html/templates/:

    $ tar jxf pnp4nagios_storwize.tar.bz2
    $ mv -i check_storwize_*.php /usr/share/pnp4nagios/html/templates/
    $ chmod 644 /usr/share/pnp4nagios/html/templates/check_storwize_*.php
    
    $ tar jxf pnp4nagios_svc.tar.bz2
    $ mv -i check_svc_*.php /usr/share/pnp4nagios/html/templates/
    $ chmod 644 /usr/share/pnp4nagios/html/templates/check_svc_*.php
    

All done, you should now have a complete Nagios-based monitoring solution for your IBM SVC and Storwize systems.

Comments

damned
No. 1 @ 2014/05/12 10:59

Great work! i got this error, but it seems to work anyway.. ./check_ibm_svc.pl -H host -u user -p password -C backendvolume Use of uninitialized value $obj_begin in numeric eq (==) at ./check_ibm_svc.pl line 252, <WBEMCLI> line 65. Use of uninitialized value $obj_begin in numeric eq (==) at ./check_ibm_svc.pl line 252, <WBEMCLI> line 130. OK - |nok=0;;;; ok=0;;;; total=0;;;;

also

-C iostatus * * /usr/bin/wbemcli: Cim: (5) CIM_ERR_INVALID_CLASS: IBMTSSVC_iostatus * OK - |nok=0;;;; ok=0;;;; total=0;;;;

damned
No. 2 @ 2014/05/12 12:10

ok..it was a case sensitive problem….my fault!

albus
No. 3 @ 2014/06/27 12:19

Hello,

I think that in the rcmap Array missing something:

BackendVolume⇒ {

      NativeStatus => {
          0 => 'Offline',
          1 => 'Online',
          2 => 'Degraded',
          3 => 'Excluded',
          4 => 'Degraded Paths',
          5 => 'Degraded Port Errors'
      },
      OperationalStatus => $rcmap_default{'OperationalStatus'}

},

Because I become this error: Use of uninitialized value in concatenation (.) or string at /usr/local/icinga/libexec/check_ibm_storwize.pl line 358, <WBEMCLI> line 65.

Marcos Marinho
No. 4 @ 2017/03/01 15:46

First , Great work I am using in some Lenovo Stormwize models and it is working perfectly.

For future improvements Any way to use this to monitoring the environment temperature on the datacenter in order to prevent any future problems in the same plugin ?

Regards

Leave a comment…




D J X Y R
  • E-Mail address will not be published.
  • Formatting:
    //italic//  __underlined__
    **bold**  ''preformatted''
  • Links:
    [[http://example.com]]
    [[http://example.com|Link Text]]
  • Quotation:
    > This is a quote. Don't forget the space in front of the text: "> "
  • Code:
    <code>This is unspecific source code</code>
    <code [lang]>This is specifc [lang] code</code>
    <code php><?php echo 'example'; ?></code>
    Available: html, css, javascript, bash, cpp, …
  • Lists:
    Indent your text by two spaces and use a * for
    each unordered list item or a - for ordered ones.
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information