Skip to main content

A command line tool for pushing Nagios host and service notifications to a HipChat room.

Project description

==========
HipSaint
==========

Push your nagios notifications to HipChat using a simple command line tool.

.. image:: https://travis-ci.org/hannseman/hipsaint.png?branch=master
:target: https://travis-ci.org/hannseman/hipsaint

.. image:: https://img.shields.io/pypi/dm/hipsaint.svg
:target: https://pypi.python.org/pypi/hipsaint

Implements `HipChat message API`_.

.. _`hipchat message API`: https://www.hipchat.com/docs/api/method/rooms/message

Inspired by https://gist.github.com/2418848.

---------
Install
---------

Through pip:

.. code-block:: bash

pip install hipsaint


Or clone and simply run:

.. code-block:: bash

python setup.py install

-------
Usage in Nagios
-------

Assuming you use Nagios 3 add the following sections to commands.cfg with ``<TOKEN>`` and ``<ROOM_ID>`` specified and macros delimited by ``|``::

define command {
command_name notify-host-by-hipchat
command_line hipsaint -V 2 --token=<TOKEN> --room=<ROOM_ID> --type=host --inputs="$HOSTNAME$|$LONGDATETIME$|$NOTIFICATIONTYPE$|$HOSTADDRESS$|$HOSTSTATE$|$HOSTOUTPUT$" -n
}
define command {
command_name notify-service-by-hipchat
command_line hipsaint -V 2 --token=<TOKEN> --room=<ROOM_ID> --type=service --inputs="$SERVICEDESC$|$HOSTALIAS$|$LONGDATETIME$|$NOTIFICATIONTYPE$|$HOSTADDRESS$|$SERVICESTATE$|$SERVICEOUTPUT$" -n
}

To send less verbose messages to hipchat set the ``--type`` flag to either ``short-host`` or ``short-service``.

Additional commands is available through:

.. code-block:: bash

hipsaint --help


Edit the Nagios contacts.cfg file by adding or editing an existing user and adding the notification commands created above::

define contact {
....
.....
service_notification_commands notify-service-by-hipchat
host_notification_commands notify-host-by-hipchat
email /dev/null
}

-------
Usage in Icinga 2
-------

To use Hipsaint in Icinga 2, you can create an additional config like this :

Create two scripts, one for hosts, one for services :

Don't forget to fill ``<TOKEN>`` and ``<ROOM_ID>``.

Hosts : /etc/icinga2/scripts/hipchat-host-notification.sh ::

#!/bin/bash

hipsaint --user=Icinga --token=<TOKEN> --room=<ROOM_ID> --type=host --inputs="$HOSTNAME|$LONGDATETIME|$NOTIFICATIONTYPE|$HOSTADDRESS|$HOSTSTATE|$HOSTOUTPUT" -n

or

hipsaint -V 2 --token=<TOKEN> --room=<ROOM_ID> --type=host --inputs="$HOSTNAME|$LONGDATETIME|$NOTIFICATIONTYPE|$HOSTADDRESS|$HOSTSTATE|$HOSTOUTPUT" -n



Services : /etc/icinga2/scripts/hipchat-service-notification.sh ::

#!/bin/bash

hipsaint --user=Icinga --token=<TOKEN> --room=<ROOM_ID> --type=service --inputs="$SERVICEDESC|$HOSTALIAS|$LONGDATETIME|$NOTIFICATIONTYPE|$HOSTADDRESS|$SERVICESTATE|$SERVICEOUTPUT" -n

or
hipsaint -V 2 --token=<TOKEN> --room=<ROOM_ID> --type=service --inputs="$SERVICEDESC|$HOSTALIAS|$LONGDATETIME|$NOTIFICATIONTYPE|$HOSTADDRESS|$SERVICESTATE|$SERVICEOUTPUT" -n


Then you need to tell Icinga to use those scripts :

Create a file called ``hipsaint.conf`` in your ``conf.d`` directory ::

/**
* Hipchat/Hipsaint script for Icinga2
*
* Only applied if host/service objects have
* the custom attribute `sla` set to `24x7`.
*/

object NotificationCommand "notify-host-by-hipchat" {
import "plugin-notification-command"

command = [ "/etc/icinga2/scripts/hipchat-host-notification.sh" ]

env = {
HOSTNAME = "$host.name$"
LONGDATETIME = "$icinga.long_date_time$"
NOTIFICATIONTYPE = "$notification.type$"
HOSTADDRESS = "$address$"
HOSTSTATE = "$host.state$"
HOSTOUTPUT = "$host.output$"
}
}

object NotificationCommand "notify-service-by-hipchat" {
import "plugin-notification-command"

command = [ "/etc/icinga2/scripts/hipchat-service-notification.sh" ]

env = {
SERVICEDESC = "$service.name$"
HOSTALIAS = "$host.display_name$"
LONGDATETIME = "$icinga.long_date_time$"
NOTIFICATIONTYPE = "$notification.type$"
HOSTADDRESS = "$address$"
SERVICESTATE = "$service.state$"
SERVICEOUTPUT = "$service.output$"
}
}

apply Notification "hipchat-icingaadmin" to Host {
command = "notify-host-by-hipchat"

user_groups = [ "icingaadmins" ]

assign where host.vars.sla == "24x7"
}

apply Notification "hipchat-icingaadmin" to Service {
command = "notify-service-by-hipchat"

user_groups = [ "icingaadmins" ]

assign where service.vars.sla == "24x7"
}

You want to customize this to your groups and users.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for hipsaint, version 0.7
Filename, size File type Python version Upload date Hashes
Filename, size hipsaint-0.7-py2.py3-none-any.whl (8.6 kB) File type Wheel Python version 2.7 Upload date Hashes View
Filename, size hipsaint-0.7.tar.gz (6.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page