Push your nagios notifications to HipChat using a simple command line tool.
Implements HipChat message API.
Inspired by https://gist.github.com/2418848.
Through pip:
pip install hipsaint
Or clone and simply run:
python setup.py install
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:
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 }
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.