nagios-unity

/Open Source Project

nagios-unity

Nagios plugin for monitoring Unity system nagios-unity is built on top of storops, which interacts with Unity storage via RESTful API. nagios-unity provides an easy-to-use command line interface for invocation of nagios servers. nagios-unity follows the output rules defined by Print only one line of text_

Installation

From Pypi ^^^^^^^^^ The nagios-unity can be install via pypi. .. code-block:: bash
$ pip install nagios-unity
From source ^^^^^^^^^^^ Alternatively, clone this repo via git and: .. code-block:: bash
$ cd nagios-unity
$ sudo python setup.py install
Once installed, a nagios-unity (on *nux) or nagios-unity.exe (on Windows) command will be available for use.

Command line usage

User can invoke the command line nagios-unity in bash or CMD/PowerShell. To get the help, type nagios-unity --help. Here is the example: .. code-block:: bash
$ nagios-unity --help
Unity plugin for Nagios.

Usage:
    nagios-unity -H  -u  -p  [--cacert ]  
    nagios-unity -h | --help
    nagios-unity --version

Arguments:
    OBJECT  One of below values:
        battery, dae, disk, dpe,
        ethernet_port fan, fc_port,
        io_module, lcc, lun, memory_module,
        pool, power_supply, sas_port,
        sp, ssc, ssd, system, array_hardware

Options:
    -h --help                         Show this screen.
    -V --version                      Show version.
    -C --cacert               Unity CA certificates.
    -H --host                   Unity IP address.
    -u --username           Unity User login.
    -p --password           Unity password.
    -v --verbose                      show verbose logs.

Examples:
  nagios-unity -H 10.245.101.39 -u admin -p Password123! ssc
Available monitoring commands ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  • battery
  • dae
  • disk
  • dpe
  • ethernet_port
  • fan
  • fc_port
  • io_module
  • lcc
  • lun
  • memory_module
  • pool
  • power_supply
  • sas_port
  • sp
  • ssc
  • ssd
  • system
  • array_hardware
array_hardware is a virtual command which combines a serial of hardware components of Unity.

Array health enum mapping

The nagios requires plugins to provide defined return codes for each periodic check, see Plugin Return Codes_ for more details. This plugin will perform following mapping between the Unity health enum and nagios return codes: +-------------------+--------------------+-----------------------+ | Unity Health Enum | Nagios Return Code | Nagios Service Status | +-------------------+--------------------+-----------------------+ | OK | 0 | OK | +-------------------+--------------------+-----------------------+ | OK_BUT | 0 | OK | +-------------------+--------------------+-----------------------+ | DEGRADED | 1 | WARNING | +-------------------+--------------------+-----------------------+ | MINOR | 1 | WARNING | +-------------------+--------------------+-----------------------+ | MAJOR | 1 | WARNING | +-------------------+--------------------+-----------------------+ | CRITICAL | 2 | CRITICAL | +-------------------+--------------------+-----------------------+ | NON_RECOVERABLE | 2 | CRITICAL | +-------------------+--------------------+-----------------------+ | UNKNOWN | 3 | UNKNOWN | +-------------------+--------------------+-----------------------+

Configuration

.. caution::
Before proceeding, make sure the nagios and its components are corrected configured.
It is also suggested to try out the ``nagios-unity`` command line.
  • Create a template storage-array in templates.cfg.
.. code-block:: ini
# Define a template for storage that we can reuse
define host{
        name                    storage-array      ; The name of this host template
        use                     generic-host       ; Inherit default values from the generic-host template
        hostgroups              storage-arrays     ; Host groups that storage arrays should be a member of
        check_period            24x7               ; By default, storage arrays are monitored round the clock
        check_interval          5                  ; Arrays are checked every 5 minutes
        retry_interval          1                  ; Schedule array check retries at 1 minute intervals
        max_check_attempts      10                 ; Check each array 10 times (max)
        check_command           check-host-alive   ; Default command to check if arrays are "alive"
        notification_period     24x7               ; Send notifications at any time
        notification_interval   30                 ; Resend notifications every 30 minutes
        notification_options    d,r                ; Only send notifications for specific array states
        contact_groups          admins             ; Notifications get sent to the admins by default
        register                0                  ; DONT REGISTER THIS - ITS JUST A TEMPLATE
        }
  • Create a dedicated storage.cfg for storing all storage arrays.
.. code-block:: ini
$ touch storage.cfg
  • Add groups for grouping all storage devices in storage.cfg
.. code-block:: ini
define hostgroup{
    hostgroup_name  storage-arrays
    alias           External Storage
}
  • Add array for nagios management.
.. code-block:: ini
define host{
    use         storage-array
    host_name   OB_H1132        ; The name we're giving to this array
    alias       My Nagios Unity ; A longer name associated with the array
    address     10.245.101.35   ; IP address of the Unity array
    _user_name  admin           ; Customer variable for Unity user name
    _password   password        ; Customer variable for Unity password
}
  • Add command for nagios use in commands.cfg.
.. code-block:: ini
# for unity

define command{
    command_name    nagios-unity
    command_line    /usr/local/bin/nagios-unity -H $HOSTADDRESS$ -u $_HOSTUSER_NAME$ -p $_HOSTPASSWORD$ $ARG1$
    }
Note: _HOST prefix is prepended by nagios, see custom object vars_.
  • Add services for managed arrays.
.. code-block:: ini
define service{
    use                 generic-service
    host_name           OB_H1132
    service_description Ethernet Ports
    check_command       nagios-unity!ethernet_port
    }

define service{
    use                 generic-service
    host_name           OB_H1132
    service_description FC Ports
    check_command       nagios-unity!fc_port
    }

define service{
    use                 generic-service
    host_name           OB_H1132
    service_description SAS Ports
    check_command       nagios-unity!sas_port
    }
For a full list of available commands, check it out Available monitoring commands_
  • Restart nagios to reflect the changes.
.. code-block:: ini
$ sudo service nagios restart
SSL consideration ^^^^^^^^^^^^^^^^^ Unity supports SSL via RESTful API, administartor can setup their own CA for SSL verification. nagios-unity also leverages the capability of RESTful API, and provides a -C option for SSL verification. To do this:
  • First add the -C to the commands.cfg
.. code-block:: ini
# for unity

define command{
    command_name    nagios-unity
    command_line    /usr/local/bin/nagios-unity -H $HOSTADDRESS$ -u $_HOSTUSER_NAME$ -p $_HOSTPASSWORD$ -C $_HOSTCACERT $ARG1$
    }
  • Then supply _cacert option in the storage.cfg.
.. code-block:: ini
define host{
    use         storage-array
    host_name   OB_H1132        ; The name we're giving to this array
    alias       My Nagios Unity ; A longer name associated with the array
    address     10.245.101.35   ; IP address of the Unity array
    _user_name  admin           ; Customer variable for Unity user name
    _password   password        ; Customer variable for Unity password
    _cacert     /path/to/CA     ; Customer variable for Unity CA certificate
}
  • Restart nagios service to reflect the changes.

Contributions

Simply fork this repo and send PR for your code change(also tests to cover your change), remember to give a title and description of your PR. We are willing to enhance this project with you :).

License

Apache license version 2_

Information

  • 1 Stars
  • 1 Forks
  • 1 Contributors
  • Python
  • API Binding
    Infrastructure as Code
  • Monitoring / Nagios / Unity
  • From the {code} Blog

    More related posts on the {code} Blog

    nagios-unity

    Nagios plugin for monitoring Unity system nagios-unity is built on top of storops, which interacts with Unity storage via RESTful API. nagios-unity provides an easy-to-use command line interface for invocation of nagios servers. nagios-unity follows the output rules defined by Print only one line of text_

    Installation

    From Pypi ^^^^^^^^^ The nagios-unity can be install via pypi. .. code-block:: bash
    $ pip install nagios-unity
    
    From source ^^^^^^^^^^^ Alternatively, clone this repo via git and: .. code-block:: bash
    $ cd nagios-unity
    $ sudo python setup.py install
    
    Once installed, a nagios-unity (on *nux) or nagios-unity.exe (on Windows) command will be available for use.

    Command line usage

    User can invoke the command line nagios-unity in bash or CMD/PowerShell. To get the help, type nagios-unity --help. Here is the example: .. code-block:: bash
    $ nagios-unity --help
    Unity plugin for Nagios.
    
    Usage:
        nagios-unity -H  -u  -p  [--cacert ]  
        nagios-unity -h | --help
        nagios-unity --version
    
    Arguments:
        OBJECT  One of below values:
            battery, dae, disk, dpe,
            ethernet_port fan, fc_port,
            io_module, lcc, lun, memory_module,
            pool, power_supply, sas_port,
            sp, ssc, ssd, system, array_hardware
    
    Options:
        -h --help                         Show this screen.
        -V --version                      Show version.
        -C --cacert               Unity CA certificates.
        -H --host                   Unity IP address.
        -u --username           Unity User login.
        -p --password           Unity password.
        -v --verbose                      show verbose logs.
    
    Examples:
      nagios-unity -H 10.245.101.39 -u admin -p Password123! ssc
    
    Available monitoring commands ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    • battery
    • dae
    • disk
    • dpe
    • ethernet_port
    • fan
    • fc_port
    • io_module
    • lcc
    • lun
    • memory_module
    • pool
    • power_supply
    • sas_port
    • sp
    • ssc
    • ssd
    • system
    • array_hardware
    array_hardware is a virtual command which combines a serial of hardware components of Unity.

    Array health enum mapping

    The nagios requires plugins to provide defined return codes for each periodic check, see Plugin Return Codes_ for more details. This plugin will perform following mapping between the Unity health enum and nagios return codes: +-------------------+--------------------+-----------------------+ | Unity Health Enum | Nagios Return Code | Nagios Service Status | +-------------------+--------------------+-----------------------+ | OK | 0 | OK | +-------------------+--------------------+-----------------------+ | OK_BUT | 0 | OK | +-------------------+--------------------+-----------------------+ | DEGRADED | 1 | WARNING | +-------------------+--------------------+-----------------------+ | MINOR | 1 | WARNING | +-------------------+--------------------+-----------------------+ | MAJOR | 1 | WARNING | +-------------------+--------------------+-----------------------+ | CRITICAL | 2 | CRITICAL | +-------------------+--------------------+-----------------------+ | NON_RECOVERABLE | 2 | CRITICAL | +-------------------+--------------------+-----------------------+ | UNKNOWN | 3 | UNKNOWN | +-------------------+--------------------+-----------------------+

    Configuration

    .. caution::
    Before proceeding, make sure the nagios and its components are corrected configured.
    It is also suggested to try out the ``nagios-unity`` command line.
    
    • Create a template storage-array in templates.cfg.
    .. code-block:: ini
    # Define a template for storage that we can reuse
    define host{
            name                    storage-array      ; The name of this host template
            use                     generic-host       ; Inherit default values from the generic-host template
            hostgroups              storage-arrays     ; Host groups that storage arrays should be a member of
            check_period            24x7               ; By default, storage arrays are monitored round the clock
            check_interval          5                  ; Arrays are checked every 5 minutes
            retry_interval          1                  ; Schedule array check retries at 1 minute intervals
            max_check_attempts      10                 ; Check each array 10 times (max)
            check_command           check-host-alive   ; Default command to check if arrays are "alive"
            notification_period     24x7               ; Send notifications at any time
            notification_interval   30                 ; Resend notifications every 30 minutes
            notification_options    d,r                ; Only send notifications for specific array states
            contact_groups          admins             ; Notifications get sent to the admins by default
            register                0                  ; DONT REGISTER THIS - ITS JUST A TEMPLATE
            }
    
    • Create a dedicated storage.cfg for storing all storage arrays.
    .. code-block:: ini
    $ touch storage.cfg
    
    • Add groups for grouping all storage devices in storage.cfg
    .. code-block:: ini
    define hostgroup{
        hostgroup_name  storage-arrays
        alias           External Storage
    }
    
    • Add array for nagios management.
    .. code-block:: ini
    define host{
        use         storage-array
        host_name   OB_H1132        ; The name we're giving to this array
        alias       My Nagios Unity ; A longer name associated with the array
        address     10.245.101.35   ; IP address of the Unity array
        _user_name  admin           ; Customer variable for Unity user name
        _password   password        ; Customer variable for Unity password
    }
    
    • Add command for nagios use in commands.cfg.
    .. code-block:: ini
    # for unity
    
    define command{
        command_name    nagios-unity
        command_line    /usr/local/bin/nagios-unity -H $HOSTADDRESS$ -u $_HOSTUSER_NAME$ -p $_HOSTPASSWORD$ $ARG1$
        }
    
    Note: _HOST prefix is prepended by nagios, see custom object vars_.
    • Add services for managed arrays.
    .. code-block:: ini
    define service{
        use                 generic-service
        host_name           OB_H1132
        service_description Ethernet Ports
        check_command       nagios-unity!ethernet_port
        }
    
    define service{
        use                 generic-service
        host_name           OB_H1132
        service_description FC Ports
        check_command       nagios-unity!fc_port
        }
    
    define service{
        use                 generic-service
        host_name           OB_H1132
        service_description SAS Ports
        check_command       nagios-unity!sas_port
        }
    
    For a full list of available commands, check it out Available monitoring commands_
    • Restart nagios to reflect the changes.
    .. code-block:: ini
    $ sudo service nagios restart
    
    SSL consideration ^^^^^^^^^^^^^^^^^ Unity supports SSL via RESTful API, administartor can setup their own CA for SSL verification. nagios-unity also leverages the capability of RESTful API, and provides a -C option for SSL verification. To do this:
    • First add the -C to the commands.cfg
    .. code-block:: ini
    # for unity
    
    define command{
        command_name    nagios-unity
        command_line    /usr/local/bin/nagios-unity -H $HOSTADDRESS$ -u $_HOSTUSER_NAME$ -p $_HOSTPASSWORD$ -C $_HOSTCACERT $ARG1$
        }
    
    • Then supply _cacert option in the storage.cfg.
    .. code-block:: ini
    define host{
        use         storage-array
        host_name   OB_H1132        ; The name we're giving to this array
        alias       My Nagios Unity ; A longer name associated with the array
        address     10.245.101.35   ; IP address of the Unity array
        _user_name  admin           ; Customer variable for Unity user name
        _password   password        ; Customer variable for Unity password
        _cacert     /path/to/CA     ; Customer variable for Unity CA certificate
    }
    
    • Restart nagios service to reflect the changes.

    Contributions

    Simply fork this repo and send PR for your code change(also tests to cover your change), remember to give a title and description of your PR. We are willing to enhance this project with you :).

    License

    Apache license version 2_

    From the {code} Blog

    More related posts on the {code} Blog

    From the {code} Blog

    More related posts on the {code} Blog