/ computer

Pushover notification with Icinga 2

Here is the quick guide to making your Icinga 2 do notifications using the Pushover service.
Sorry for the brevity.

You need to create one file - notify_by_pushover2.sh in my example. Permissions on that file need to be like the existing files in the same folder. My script is based on what i learnt from the script found in Using Pushover to push Nagios notifications.

You need to edit four files: commands.conf, templates.conf, notifications.conf and users.conf. This is assuming the out of the box default configuration files are used.
The text that i show in my examples below is text that you should add to the existing configuration files, you should not replace the existing text in those files.

In my example notifications.conf i use some assign where that relate to mail. I am sure this could be done better.

Hope this will help you.

/etc/icinga2/scripts/notify_by_pushover2.sh

#!/bin/sh 

curl -F "token=$PUSHOVERTOKEN" \ 
-F "user=$PUSHOVERUSER" \ 
-F "title=$PUSHOVERTITLE" \ 
-F "message=$PUSHOVERMESSAGE" \ 
https://api.pushover.net/1/messages 

exit 0 

/etc/icinga2/conf.d/commands.conf

object NotificationCommand "pushover-host-notification" { 
import "plugin-notification-command" 

command = [ SysconfDir + "/icinga2/scripts/notify_by_pushover2.sh" ] 

env = { 
    PUSHOVERUSER = "$user.vars.pushover_user$" 
    PUSHOVERTOKEN = "$user.vars.pushover_token$" 
    PUSHOVERTITLE = "Icinga Skanderborg" 
    PUSHOVERMESSAGE = "$notification.type$ $host.display_name$ $host.state$ $icinga.long_date_time$" 
  } 
} 

object NotificationCommand "pushover-service-notification" { 
  import "plugin-notification-command" 

  command = [ SysconfDir + "/icinga2/scripts/notify_by_pushover2.sh" ] 

  env = { 
    PUSHOVERUSER = "$user.vars.pushover_user$" 
    PUSHOVERTOKEN = "$user.vars.pushover_token$" 
    PUSHOVERTITLE = "Icinga" 
    PUSHOVERMESSAGE = "$notification.type$ $host.display_name$ $service.display_name$ $service.state$ $icinga.long_date_time$" 
  } 
} 

/etc/icinga2/conf.d/templates.conf

template Notification "pushover-host-notification" { 
  command = "pushover-host-notification" 

  states = [ Up, Down ] 
  types = [ Problem, Acknowledgement, Recovery, Custom, 
        FlappingStart, FlappingEnd, 
        DowntimeStart, DowntimeEnd, DowntimeRemoved ] 

  period = "24x7" 
} 

template Notification "pushover-service-notification" { 
  command = "pushover-service-notification" 

  states = [ OK, Warning, Critical, Unknown ] 
  types = [ Problem, Acknowledgement, Recovery, Custom, FlappingStart, FlappingEnd, DowntimeStart, DowntimeEnd, DowntimeRemoved ] 

  period = "24x7" 
} 

/etc/icinga2/conf.d/notifications.conf

apply Notification "pushover-icingaadmin" to Host { 
  import "pushover-host-notification" 

  user_groups = host.vars.notification.mail.groups 
  users = host.vars.notification.mail.users 

  assign where host.vars.notification.mail 
  interval = 0 // disable re-notification 
} 


apply Notification "pushover-icingaadmin" to Service { 
  import "pushover-service-notification" 

  user_groups = host.vars.notification.mail.groups 
  users = host.vars.notification.mail.users 

  assign where host.vars.notification.mail 
  interval = 0 // disable re-notification 
} 

/etc/icinga2/conf.d/users.conf

object User "icingaadmin" { 
  import "generic-user" 

  display_name = "Icinga 2 Admin" 
  groups = [ "icingaadmins" ] 

  email = "admin@bruntt.dk" 
  vars.pushover_user = "YOUR PUSHOVER USER TOKEN HERE" 
  vars.pushover_token = "YOUR PUSHOVER APPLICATION TOKEN HERE" 

}