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
------- 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:
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$NOTIFICATIONTYPE$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$LONGDATETIME$HOSTADDRESS$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.