wiki:programme:icinga2:pushover

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
wiki:programme:icinga2:pushover [2018/01/19 21:34] – angelegt wikiadminwiki:programme:icinga2:pushover [2020/01/16 10:58] (aktuell) – [Vorarbeiten:] wikiadmin
Zeile 1: Zeile 1:
-icinga-meldung via Pushover+====== icinga2 Meldung via Pushover ======
  
-<file bash /etc/icinga2/scripts/pushover-service.sh>+===== Vorarbeiten: ===== 
 + 
 +  * Anmeldung bei Pushover 
 +  * Device registrieren 
 +    * 7 Tage kostenlos 
 +    * danach [[https://pushover.net/pricing|5$ je Plattform]] (Android, iOS oder Desktop) 
 +  * 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 41: Zeile 58:
 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 102: Zeile 134:
   --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 121: Zeile 153:
 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 181: Zeile 213:
 #Ü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 235: Zeile 286:
   --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 254: Zeile 305:
 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 272: Zeile 327:
 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 295: Zeile 354:
   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 340: Zeile 402:
 </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 346: Zeile 431:
  
   display_name = "Patrick"   display_name = "Patrick"
-#  groups = [ "icingaadmins" , "icingaadmins-pushover" ]+  #  groups = [ "icingaadmins" , "icingaadmins-pushover" ]
   groups = [ "icingaadmins-pushover" ]   groups = [ "icingaadmins-pushover" ]
  
Zeile 354: Zeile 439:
   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.1516394043.txt.gz
  • Zuletzt geändert: 2018/01/19 21:34
  • von wikiadmin