wiki:programme:icinga2:pushover

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
wiki:programme:icinga2:pushover [2018/01/19 21:37] wikiadminwiki:programme:icinga2:pushover [2019/10/02 15:53] wikiadmin
Zeile 1: Zeile 1:
-====== icinga-meldung via Pushover ======+====== icinga2 Meldung via Pushover ======
  
 +===== Vorarbeiten: =====
  
-<file bash /etc/icinga2/scripts/pushover-service.sh>+  * Anmeldung bei Pushover 
 +  * Device registrieren (7 Tage kostenlos, danach 4,..€ je Platform) 
 +  * erstellung eines Application/API Token 
 + 
 +===== Scripte ===== 
 + 
 +Die Scripte können 1zu1 kopiert und eingefügt werden. \\ 
 +Bei der Ausarbeitung habe ich versucht, so nahe wie möglich an der Konfiguration für die Email-Benachrichtigung zu bleiben. \\ 
 +Grund: Man kann die Unterschiede zum Original besser sehen und weitere Notifications für andere Dienste (SMS, Pushbullet, Signal, Telegram, ...) erstellen 
 + 
 +<file bash /etc/icinga2/scripts/pushover-service-notifiaction.sh>
 #!/bin/bash #!/bin/bash
  
Zeile 42: Zeile 53:
 ICINGA2HOST="$(hostname)" ICINGA2HOST="$(hostname)"
 CURLPROXY="" CURLPROXY=""
-debug="1"+debug="0"
  
 ##################################################### #####################################################
 #Übergebene Parameter #Übergebene Parameter
 # #
-#PUSHOVERUSER = "$user.vars.pushover_user$" +   PUSHOVERUSER = "$user.vars.pushover_user$" 
-#PUSHOVERTOKEN = "$user.vars.pushover_token$" +   PUSHOVERTOKEN = "$user.vars.pushover_token$"  
-#PUSHOVERPRIORITY = "$user.vars.pushover_priority$" +   PUSHOVERDEVICE = "$user.vars.pushover_device$" 
-#PUSHOVERDEVICE = "$user.vars.pushover_device$" +# 
-#$PUSHOVERRETRY = "$user.vars.pushover_retry$" +#    PUSHOVERPRIORITY = "$host.vars.pushover_priority$" 
-#$PUSHOVEREXPIRE = "$user.vars.pushover_expire$" +   PUSHOVERRETRY = "$host.vars.pushover_retry$" 
 +   PUSHOVEREXPIRE = "$host.vars.pushover_expire$"  
 +
 +#    NOTIFICATIONTYPE = "$notification.type$" 
 +#    NOTIFICATIONCOMMENT = "$notification.comment$" 
 +#    NOTIFICATIONAUTHOR = "$notification.author$" 
 +
 +#    ICINGALONGDATETIME = "$icinga.long_date_time$" 
 +
 +#    HOSTNAME = "$host.name$" 
 +#    HOSTDISPLAYNAME = "$host.display_name$"  
 +#    HOSTSTATE = "$host.state$" 
 +#    HOSTOUTPUT = "$host.output$"
 # #
-#NOTIFICATIONTYPE = "$notification.type$"  
-#HOSTDISPLAYNAME = "$host.display_name$"  
-#SERVICEDISPLAYNAME = "$service.display_name$"  
-#SERVICESTATE = "$service.state$" 
-#ICINGALONGDATETIME = "$icinga.long_date_time$"" 
-#SERVICEOUTPUT = "$service.output$" 
-#SERVICENAME = "$service.name$" 
-#HOSTNAME = "$host.name$" 
 ##################################################### #####################################################
  
 +#***** Host Monitoring on $ICINGA2HOST *****
 PUSHOVERMESSAGE=$(cat << EOF PUSHOVERMESSAGE=$(cat << EOF
-***** Service Monitoring on $ICINGA2HOST ***** +***** Host Monitoring on icinga ***** 
-$SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is ${SERVICESTATE}+$HOSTDISPLAYNAME is $HOSTSTATE
-Info:    $SERVICEOUTPUT+Info:    $HOSTOUTPUT
 When:    $ICINGALONGDATETIME When:    $ICINGALONGDATETIME
-Service: $SERVICENAME 
 Host:    $HOSTNAME Host:    $HOSTNAME
 EOF EOF
 ) )
  
-PUSHOVERTITLE="$NOTIFICATIONTYPE - $HOSTDISPLAYNAME - $SERVICEDISPLAYNAME is $SERVICESTATE"+#Wenn ein Kommentar eingetragen wurde (Downtimekommentar, Benachrichtigungskommentar), wird dieser angehangen 
 +if [ -n "$NOTIFICATIONCOMMENT"
 +then 
 +PUSHOVERMESSAGE=$(cat << EOF 
 +$PUSHOVERMESSAGE 
 +Comment: $NOTIFICATIONCOMMENT 
 +Author:  $NOTIFICATIONAUTHOR 
 +EOF 
 +
 +fi 
 + 
 +PUSHOVERTITLE="$NOTIFICATIONTYPE - Host $HOSTDISPLAYNAME is $HOSTSTATE!"
  
 #Wenn die Priorität 2 vergeben wurde, ist ein retry zwingend erforderlich #Wenn die Priorität 2 vergeben wurde, ist ein retry zwingend erforderlich
Zeile 103: Zeile 129:
   --form-string "expire=$PUSHOVEREXPIRE" \   --form-string "expire=$PUSHOVEREXPIRE" \
   --form-string "device=$PUSHOVERDEVICE" \   --form-string "device=$PUSHOVERDEVICE" \
-  --location https://api.pushover.net/1/messages.json) +  --location https://api.pushover.net/1/messages.json)
  
  
Zeile 122: Zeile 148:
 PUSHOVERRETRY: $PUSHOVERRETRY PUSHOVERRETRY: $PUSHOVERRETRY
 PUSHOVEREXPIRE: $PUSHOVEREXPIRE PUSHOVEREXPIRE: $PUSHOVEREXPIRE
-NOTIFICATIONTYPE: $NOTIFICATIONTYPE 
 HOSTDISPLAYNAME: $HOSTDISPLAYNAME HOSTDISPLAYNAME: $HOSTDISPLAYNAME
-SERVICEDISPLAYNAME: $SERVICEDISPLAYNAME 
-SERVICESTATE: $SERVICESTATE 
 ICINGALONGDATETIME: $ICINGALONGDATETIME ICINGALONGDATETIME: $ICINGALONGDATETIME
 +NOTIFICATIONTYPE: $NOTIFICATIONTYPE
 +NOTIFICATIONCOMMENT: $NOTIFICATIONCOMMENT
 +NOTIFICATIONAUTHOR: $NOTIFICATIONAUTHOR
 ICINGA2HOST: $ICINGA2HOST ICINGA2HOST: $ICINGA2HOST
-SERVICEOUTPUT: $SERVICEOUTPUT +HOSTNAME: $HOSTNAME 
-SERVICENAME: $SERVICENAME+HOSTSTATE: $HOSTSTATE 
 +HOSTOUTPUT: $HOSTOUTPUT
 pushover json output: $failstate pushover json output: $failstate
  
 EOF EOF
 fi fi
- 
 </file> </file>
  
-<file bash /etc/icinga2/scripts/pushover-host.sh>+<file bash /etc/icinga2/scripts/pushover-host-notification.sh>
 #!/bin/bash #!/bin/bash
  
Zeile 182: Zeile 208:
 #Übergebene Parameter #Übergebene Parameter
 # #
-#PUSHOVERUSER = "$user.vars.pushover_user$" +   PUSHOVERUSER = "$user.vars.pushover_user$" 
-#PUSHOVERTOKEN = "$user.vars.pushover_token$" +   PUSHOVERTOKEN = "$user.vars.pushover_token$"  
-#PUSHOVERPRIORITY = "$user.vars.pushover_priority$" +   PUSHOVERDEVICE = "$user.vars.pushover_device$" 
-#PUSHOVERDEVICE = "$user.vars.pushover_device$" +# 
-#$PUSHOVERRETRY = "$user.vars.pushover_retry$" +#    PUSHOVERPRIORITY = "$service.vars.pushover_priority$" 
-#$PUSHOVEREXPIRE = "$user.vars.pushover_expire$" +   PUSHOVERRETRY = "$service.vars.pushover_retry$" 
 +   PUSHOVEREXPIRE = "$service.vars.pushover_expire$"  
 +
 +#    NOTIFICATIONTYPE = "$notification.type$" 
 +#    NOTIFICATIONCOMMENT = "$notification.comment$" 
 +#    NOTIFICATIONAUTHOR = "$notification.author$" 
 +
 +#    ICINGALONGDATETIME = "$icinga.long_date_time$" 
 +
 +#    HOSTNAME = "$host.name$" 
 +#    SERVICENAME = "$service.name$" 
 +#    HOSTDISPLAYNAME = "$host.display_name$" 
 +#    SERVICESTATE = "$service.state$" 
 +#    SERVICEOUTPUT = "$service.output$"
 # #
-#NOTIFICATIONTYPE = "$notification.type$" 
-#HOSTDISPLAYNAME = "$host.display_name$"  
-#ICINGALONGDATETIME = "$icinga.long_date_time$"" 
-#HOSTNAME = "$host.name$" 
-#HOSTSTATE = "$host.state$" 
-#HOSTOUTPUT = "$host.output$" 
- 
 ##################################################### #####################################################
  
 +#***** Service Monitoring on $ICINGA2HOST *****
 PUSHOVERMESSAGE=$(cat << EOF PUSHOVERMESSAGE=$(cat << EOF
-***** Host Monitoring on $ICINGA2HOST ***** +***** Service Monitoring on icinga ***** 
-$HOSTDISPLAYNAME is $HOSTSTATE+$SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is ${SERVICESTATE}
-Info:    $HOSTOUTPUT+Info:    $SERVICEOUTPUT
 When:    $ICINGALONGDATETIME When:    $ICINGALONGDATETIME
 +Service: $SERVICENAME
 Host:    $HOSTNAME Host:    $HOSTNAME
 EOF EOF
 ) )
  
-PUSHOVERTITLE="$NOTIFICATIONTYPE - Host $HOSTDISPLAYNAME is $HOSTSTATE!"+#Wenn ein Kommentar eingetragen wurde (Downtimekommentar, Benachrichtigungskommentar), wird dieser angehangen 
 +if [ -n "$NOTIFICATIONCOMMENT"
 +then 
 +PUSHOVERMESSAGE=$(cat << EOF 
 +$PUSHOVERMESSAGE 
 +Comment: $NOTIFICATIONCOMMENT 
 +Author:  $NOTIFICATIONAUTHOR 
 +EOF 
 +
 +fi 
 + 
 +PUSHOVERTITLE="$NOTIFICATIONTYPE - $HOSTDISPLAYNAME - $SERVICEDISPLAYNAME is $SERVICESTATE"
  
 #Wenn die Priorität 2 vergeben wurde, ist ein retry zwingend erforderlich #Wenn die Priorität 2 vergeben wurde, ist ein retry zwingend erforderlich
Zeile 236: Zeile 281:
   --form-string "expire=$PUSHOVEREXPIRE" \   --form-string "expire=$PUSHOVEREXPIRE" \
   --form-string "device=$PUSHOVERDEVICE" \   --form-string "device=$PUSHOVERDEVICE" \
-  --location https://api.pushover.net/1/messages.json)+  --location https://api.pushover.net/1/messages.json) 
  
  
Zeile 255: Zeile 300:
 PUSHOVERRETRY: $PUSHOVERRETRY PUSHOVERRETRY: $PUSHOVERRETRY
 PUSHOVEREXPIRE: $PUSHOVEREXPIRE PUSHOVEREXPIRE: $PUSHOVEREXPIRE
 +NOTIFICATIONTYPE: $NOTIFICATIONTYPE
 +NOTIFICATIONCOMMENT: $NOTIFICATIONCOMMENT
 +NOTIFICATIONAUTHOR: $NOTIFICATIONAUTHOR
 HOSTDISPLAYNAME: $HOSTDISPLAYNAME HOSTDISPLAYNAME: $HOSTDISPLAYNAME
 +SERVICEDISPLAYNAME: $SERVICEDISPLAYNAME
 +SERVICESTATE: $SERVICESTATE
 ICINGALONGDATETIME: $ICINGALONGDATETIME ICINGALONGDATETIME: $ICINGALONGDATETIME
-NOTIFICATIONTYPE: $NOTIFICATIONTYPE 
 ICINGA2HOST: $ICINGA2HOST ICINGA2HOST: $ICINGA2HOST
-HOSTNAME: $HOSTNAME +SERVICEOUTPUT: $SERVICEOUTPUT 
-HOSTSTATE: $HOSTSTATE +SERVICENAME: $SERVICENAME
-HOSTOUTPUT: $HOSTOUTPUT+
 pushover json output: $failstate pushover json output: $failstate
  
 EOF EOF
 fi fi
- 
 </file> </file>
 +
 +<note>wenn man die Variable debug auf 1 setzt, wird zusätzlich zur Meldung eine Ausgabe mit allen übergebene Werten nach '/var/log/pushover_icinga.log' geschrieben</note>
  
 <file bash /etc/icinga2/conf.d/commands/pushover-notification.conf> <file bash /etc/icinga2/conf.d/commands/pushover-notification.conf>
Zeile 273: Zeile 322:
 import "plugin-notification-command"  import "plugin-notification-command" 
  
-command = [ SysconfDir + "/icinga2/scripts/pushover-host.sh"+command = [ SysconfDir + "/icinga2/scripts/pushover-host-notification.sh" ] 
  
 env = {  env = { 
     PUSHOVERUSER = "$user.vars.pushover_user$"     PUSHOVERUSER = "$user.vars.pushover_user$"
     PUSHOVERTOKEN = "$user.vars.pushover_token$"      PUSHOVERTOKEN = "$user.vars.pushover_token$" 
-    PUSHOVERPRIORITY = "$user.vars.pushover_priority$" 
     PUSHOVERDEVICE = "$user.vars.pushover_device$"     PUSHOVERDEVICE = "$user.vars.pushover_device$"
-    PUSHOVERRETRY = "$user.vars.pushover_retry$" + 
-    PUSHOVEREXPIRE = "$user.vars.pushover_expire$" +    PUSHOVERPRIORITY = "$host.vars.pushover_priority$" 
 +    PUSHOVERRETRY = "$host.vars.pushover_retry$" 
 +    PUSHOVEREXPIRE = "$host.vars.pushover_expire$" 
  
     NOTIFICATIONTYPE = "$notification.type$"     NOTIFICATIONTYPE = "$notification.type$"
-    HOSTDISPLAYNAME = "$host.display_name$" +    NOTIFICATIONCOMMENT = "$notification.comment$" 
 +    NOTIFICATIONAUTHOR = "$notification.author$" 
     ICINGALONGDATETIME = "$icinga.long_date_time$"     ICINGALONGDATETIME = "$icinga.long_date_time$"
 +
     HOSTNAME = "$host.name$"     HOSTNAME = "$host.name$"
 +    HOSTDISPLAYNAME = "$host.display_name$" 
     HOSTSTATE = "$host.state$"     HOSTSTATE = "$host.state$"
     HOSTOUTPUT = "$host.output$"     HOSTOUTPUT = "$host.output$"
- 
   }    } 
  
Zeile 296: Zeile 349:
   import "plugin-notification-command"    import "plugin-notification-command" 
  
-  command = [ SysconfDir + "/icinga2/scripts/pushover-service.sh"+  command = [ SysconfDir + "/icinga2/scripts/pushover-service-notification.sh" ] 
  
   env = {    env = { 
     PUSHOVERUSER = "$user.vars.pushover_user$"     PUSHOVERUSER = "$user.vars.pushover_user$"
     PUSHOVERTOKEN = "$user.vars.pushover_token$"      PUSHOVERTOKEN = "$user.vars.pushover_token$" 
-    PUSHOVERPRIORITY = "$user.vars.pushover_priority$" 
     PUSHOVERDEVICE = "$user.vars.pushover_device$"     PUSHOVERDEVICE = "$user.vars.pushover_device$"
-    PUSHOVERRETRY = "$user.vars.pushover_retry$" + 
-    PUSHOVEREXPIRE = "$user.vars.pushover_expire$" +    PUSHOVERPRIORITY = "$service.vars.pushover_priority$" 
 +    PUSHOVERRETRY = "$service.vars.pushover_retry$" 
 +    PUSHOVEREXPIRE = "$service.vars.pushover_expire$" 
  
     NOTIFICATIONTYPE = "$notification.type$"     NOTIFICATIONTYPE = "$notification.type$"
 +    NOTIFICATIONCOMMENT = "$notification.comment$"
 +    NOTIFICATIONAUTHOR = "$notification.author$"
 +
 +    ICINGALONGDATETIME = "$icinga.long_date_time$"
 +
 +    HOSTNAME = "$host.name$"
 +    SERVICENAME = "$service.name$"
     HOSTDISPLAYNAME = "$host.display_name$"     HOSTDISPLAYNAME = "$host.display_name$"
-    SERVICEDISPLAYNAME = "$service.display_name$" 
     SERVICESTATE = "$service.state$"     SERVICESTATE = "$service.state$"
-    ICINGALONGDATETIME = "$icinga.long_date_time$" 
     SERVICEOUTPUT = "$service.output$"     SERVICEOUTPUT = "$service.output$"
-    SERVICENAME = "$service.name$" 
-    HOSTNAME = "$host.name$" 
   }    } 
  
- 
 </file> </file>
  
Zeile 341: Zeile 397:
 </file> </file>
  
 +<file bash /etc/icinga2/conf.d/notifications/pushover.conf>
 +apply Notification "pushover-icingaadmin" to Host {
 +  import "pushover-host-notification"
 +
 +  user_groups = host.vars.notification.pushover.groups
 +  users = host.vars.notification.pushover.users
 +
 +  assign where host.vars.notification.pushover
 +  interval = 0 // disable re-notification 
 +}
 +
 +
 +apply Notification "pushover-icingaadmin" to Service {
 +  import "pushover-service-notification"
 +
 +  user_groups = host.vars.notification.pushover.groups
 +  users = host.vars.notification.pushover.users
 +
 +  assign where host.vars.notification.pushover
 +  interval = 0 // disable re-notification 
 +}
 +
 +</file>
  
 <file bash /etc/icinga2/conf.d/users/alle.conf> <file bash /etc/icinga2/conf.d/users/alle.conf>
Zeile 347: Zeile 426:
  
   display_name = "Patrick"   display_name = "Patrick"
-#  groups = [ "icingaadmins" , "icingaadmins-pushover" ]+  #  groups = [ "icingaadmins" , "icingaadmins-pushover" ]
   groups = [ "icingaadmins-pushover" ]   groups = [ "icingaadmins-pushover" ]
  
Zeile 355: Zeile 434:
   vars.pushover_user = "user-Token"    vars.pushover_user = "user-Token" 
   vars.pushover_token = "API-Token"    vars.pushover_token = "API-Token" 
 +  #Devices
 +  #(mehrere devices = [ "device1", "device2" ]
   vars.pushover_device = [ "device" ]   vars.pushover_device = [ "device" ]
-# vars.pushover_priority = "2" +  # vars.pushover_priority = "2" 
-# retry >= 30 +  # retry >= 30 
-# vars.pushover_retry = "30" +  # vars.pushover_retry = "30" 
-# expire <= 10800 +  # expire <= 10800 
-# vars.pushover_expire = "300"+  # vars.pushover_expire = "300"
  
 } }
- 
 </file> </file>
  
  • wiki/programme/icinga2/pushover.txt
  • Zuletzt geändert: 2020/01/16 10:58
  • von wikiadmin