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
Letzte ÜberarbeitungBeide Seiten der Revision
wiki:programme:icinga2:pushover [2018/01/19 21:37] wikiadminwiki:programme:icinga2:pushover [2020/01/13 11:28] 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 
 + 
 +<note tip>Um nicht alles umständliche aus diesem Wiki kopieren zu müssen, stehen alle Scripte und Konfigurationsdateien in meinem Git-Repo unter: \\ 
 +https://git.dinven.de/Monitoring/icinga-plugins/src/branch/master/notification/pushover</note> 
 + 
 +<file bash /etc/icinga2/scripts/pushover-service-notifiaction.sh>
 #!/bin/bash #!/bin/bash
  
Zeile 42: Zeile 56:
 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 132:
   --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 151:
 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 211:
 #Ü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 284:
   --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 303:
 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 325:
 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 352:
   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 400:
 </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 429:
  
   display_name = "Patrick"   display_name = "Patrick"
-#  groups = [ "icingaadmins" , "icingaadmins-pushover" ]+  #  groups = [ "icingaadmins" , "icingaadmins-pushover" ]
   groups = [ "icingaadmins-pushover" ]   groups = [ "icingaadmins-pushover" ]
  
Zeile 355: Zeile 437:
   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