Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thecodeteam/nagios-unity
Nagios plugin for monitoring Unity system
https://github.com/thecodeteam/nagios-unity
nagios nagios-plugin python unity
Last synced: 3 months ago
JSON representation
Nagios plugin for monitoring Unity system
- Host: GitHub
- URL: https://github.com/thecodeteam/nagios-unity
- Owner: thecodeteam
- License: apache-2.0
- Created: 2017-11-22T14:37:27.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-04T02:45:08.000Z (about 7 years ago)
- Last Synced: 2024-10-01T16:26:16.349Z (3 months ago)
- Topics: nagios, nagios-plugin, python, unity
- Language: Python
- Homepage:
- Size: 47.9 KB
- Stars: 7
- Watchers: 7
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
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 installOnce 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 --versionArguments:
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_hardwareOptions:
-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! sscAvailable 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 `_