Home

Awesome

notify-by-mqtt

a Nagios/Icinga notification module which wraps data into JSON and fires it off to an MQTT broker.

icinga.cfg

enable_environment_macros=1

commands.cfg

define command{
    command_name notify-by-mqtt
    command_line /home/jpm/icinga/notify-mqtt.py
    }

contacts_icinga.cfg

define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
#        service_notification_commands   notify-service-by-email
        service_notification_commands   notify-by-mqtt
#        host_notification_commands      notify-host-by-email
        host_notification_commands      notify-by-mqtt
        email                           root@localhost
        }

As an example payload for a host notification:

{
    "_type": "icinga", 
    "date": "2014-04-04", 
    "eventstarttime": "1396621975", 
    
    "hostdisplayname": "localhost", 
    "hostname": "localhost", 
    "hostoutput": "PING OK - Packet loss = 0%, RTA = 0.34 ms",
    "hoststate": "UP",
    "hoststateid": "0",
    "hoststatetype": "HARD", 
    
    "shortdatetime": "2014-04-04 16:38:25", 
    "time": "16:38:25", 
    "timet": "1396622305"
}

As an example payload for a service notification:

{
    "_type": "icinga", 
    "date": "2014-04-04", 
    "eventstarttime": "1396621975", 
    
    "hostdisplayname": "localhost", 
    "hostname": "localhost", 
    "hoststatetype": "HARD", 
    
    "servicedesc": "JPtest", 
    "servicedisplayname": "JPtest", 
    "serviceoutput": "file /tmp/f1: ENOENT", 
    "servicestate": "CRITICAL", 
    "servicestateid": "2", 
    
    "shortdatetime": "2014-04-04 16:38:25", 
    "time": "16:38:25", 
    "timet": "1396622305"
}