Nagios notifications with Pushbullet

I was looking into using Pushbullet to notify me of the Nagios events, instead of sending the notifications via email. I stumbled upon this reddit post by a user named 1lowlyadmin which perfectly describes the process, but is around two years old and still uses the older Pushbullet API.

If you don’t know what Pushbullet is, here is a link to their site. They have clients for Android and iOS mobile devices, for Chrome, Firefox and Opera browsers, and a native client for Windows OS.

Pushbullet docs: https://docs.pushbullet.com/
Get API key: https://www.pushbullet.com/#settings/account – Go to Access Tokens and click Create Access Token.

There are two ways to get IDs for your devices, first is as described in the reddit post with curl:

curl -u <YourAPIkey>: https://api.pushbullet.com/api/devices

2016_04_04_19_52_49_cli_pushbullet
The second is to go to https://www.pushbullet.com/#devices and click the device, and the last string in the url is the device ID.
2016_04_04_19_48_30_Pushbullet

The lines to add to commands.cfg (using the new Pushbullet v2 API):

# 'notify-host-by-push' command definition - ident
define command{
        command_name notify-host-by-push
        command_line /usr/bin/curl --header 'Access-Token: <YourAPIkey>' --header 'Content-Type: application/json' --data-binary '{"body":"***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$","title":"** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **","type":"note","device_iden":"<DesiredIdent>"}' --request POST https://api.pushbullet.com/v2/pushes
        }

# 'notify-service-by-push' command definition - ident
define command{
        command_name notify-service-by-push
        command_line /usr/bin/curl --header 'Access-Token: <YourAPIkey>' --header 'Content-Type: application/json' --data-binary '{"body":"** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **","title":"***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$ ","type":"note","device_iden":"<DesiredIdent>"}' --request POST https://api.pushbullet.com/v2/pushes
        }

Replace

<YourAPIkey>

with your API Access Token and

<DesiredIdent>

with your device ID (iden).

You can also publish this to a Pushbullet channel, so that other people can subscribe to these notifications, such as your coworkers. In that case you have to create a channel and obtain the channel tag, and then replace device_iden with channel_tag. Keep in mind that the APIkey used to push the notifications to a channel needs to be of the channel owner.

Lines to be added to contacts.cfg are the same from the reddit post:

define contact{
        contact_name pusher
        use generic-contact
        alias Pushbullet Notification
        service_notification_commands notify-service-by-push
        host_notification_commands notify-host-by-push
        }

If you wish to just use pushbullet, you can just replace the email ones in the templates.cfg for the generic-contact, and skip adding a new contact:

define contact{
        name                            generic-contact         ; The name of this contact template
        service_notification_period     24x7                    ; service notifications can be sent anytime
        host_notification_period        24x7                    ; host notifications can be sent anytime
        service_notification_options    w,u,c,r,f,s             ; send notifications for all service states, flapping events, and scheduled downtime events
        host_notification_options       d,u,r,f,s               ; send notifications for all host states, flapping events, and scheduled downtime events
        service_notification_commands   notify-service-by-push  ; send service notifications via push
        host_notification_commands      notify-host-by-push     ; send host notifications via push
        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
        }

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *