====== Notifications via Pushover ======
https://pushover.net/
===== Neue Version für WATO =====
Siehe: http://mathias-kettner.de/checkmk_flexible_notifications.html
Nach local/share/check_mk/notifications kopieren und executable setzen.
#!/bin/sh
date >> /tmp/sm.log
# set | grep NOTIFY >> /tmp/sm.log
SITE="$NOTIFY_OMD_SITE"
OBJECT="$NOTIFY_WHAT"
TYPE="$NOTIFY_NOTIFICATIONTYPE"
case "$OBJECT" in
HOST) # Host
HOST="$NOTIFY_HOSTNAME"
OUTPUT="$NOTIFY_HOSTOUTPUT"
STATE="$NOTIFY_HOSTSTATE"
;;
SERVICE) # Service
HOST="$NOTIFY_HOSTNAME"
SERVICE="$NOTIFY_SERVICEDESC"
OUTPUT="$NOTIFY_SERVICEOUTPUT"
STATE="$NOTIFY_SERVICESTATE"
;;
*)
exit 1
;;
esac
# Pushover Parameter https://pushover.net/api
URL="https://api.pushover.net/1/messages.json"
TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
USER="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
SEND=1
TITLE="OMD $SITE"
case "$STATE" in
WARNING | UNKNOWN | UNREACHABLE)
PRIORITY=0
;;
CRITICAL | DOWN)
PRIORITY=1
;;
OK | UP)
PRIORITY=-1
;;
*)
PRIORITY=-1
;;
esac
case "$OBJECT" in
HOST)
case "$TYPE" in
PROBLEM)
MESSAGE="$HOST: $STATE - $OUTPUT"
;;
RECOVERY)
# vorerst keine Recovery-Messages
;;
*)
SEND=0
;;
esac
;;
SERVICE)
case "$TYPE" in
PROBLEM)
MESSAGE="$SERVICE@$HOST: $STATE - $OUTPUT"
;;
RECOVERY)
# vorerst keine Recovery-Messages
;;
*)
SEND=0
;;
esac
;;
*)
SEND=0
;;
esac
if [ $SEND ]; then
echo "/usr/bin/curl -s -F 'token=$TOKEN' -F 'user=$USER' -F 'priority=$PRIORITY' -F 'title=$TITLE' -F 'message=$MESSAGE' $URL" >> /tmp/sm.log
/usr/bin/curl -s -F "token=$TOKEN" -F "user=$USER" -F "priority=$PRIORITY" -F "title=$TITLE" -F "message=$MESSAGE" $URL
fi
===== Alte Version für manuelle Config =====
#!/bin/sh
SITE="$1" # Sitename
OBJECT="$2" # H = Host S = Service
TYPE="$3" # $NOTIFICATIONTYPE$ http://nagios.sourceforge.net/docs/3_0/macrolist.html#notificationtype
STATE="$4" # $HOSTSTATE$ / $SERVICESTATE$ http://nagios.sourceforge.net/docs/3_0/macrolist.html#hoststate
# http://nagios.sourceforge.net/docs/3_0/macrolist.html#servicestate
case "$OBJECT" in
H) # Host
HOST="$5" # $HOSTNAME$ http://nagios.sourceforge.net/docs/3_0/macrolist.html#hostname
shift 5
;;
S) # Service
HOST="$5" # $HOSTNAME$ http://nagios.sourceforge.net/docs/3_0/macrolist.html#hostname
SERVICE="$6" # $SERVICEDESC$ http://nagios.sourceforge.net/docs/3_0/macrolist.html#servicedesc
shift 6
;;
*)
exit 1
;;
esac
OUTPUT="$@" # $SERVICEOUTPUT$ http://nagios.sourceforge.net/docs/3_0/macrolist.html#serviceoutput
# Pushover Parameter https://pushover.net/api
URL="https://api.pushover.net/1/messages.json"
TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
USER="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
SEND=1
TITLE="Nagios - $SITE"
case "$STATE" in
WARNING | UNKNOWN | UNREACHABLE)
PRIORITY=0
;;
CRITICAL | DOWN)
PRIORITY=1
;;
OK)
PRIORITY=-1
;;
*)
PRIORITY=-1
;;
esac
case "$OBJECT" in
H)
case "$TYPE" in
PROBLEM)
MESSAGE="$HOST: $STATE - $OUTPUT"
;;
RECOVERY)
# vorerst keine Recovery-Messages
;;
*)
SEND=0
;;
esac
;;
S)
case "$TYPE" in
PROBLEM)
MESSAGE="$SERVICE@$HOST: $STATE - $OUTPUT"
;;
RECOVERY)
# vorerst keine Recovery-Messages
;;
*)
SEND=0
;;
esac
;;
*)
SEND=0
;;
esac
if [ $SEND ]; then
/usr/bin/curl -s -F "token=$TOKEN" -F "user=$USER" -F "priority=$PRIORITY" -F "title=$TITLE" -F "message=$MESSAGE" $URL
fi
Nagios Config
define command {
command_name notify-host
command_line /usr/local/bin/sendmessage MHC H $NOTIFICATIONTYPE$ $HOSTSTATE$ $HOSTNAME$ '$HOSTOUTPUT$'
}
define command {
command_name notify-service
command_line /usr/local/bin/sendmessage MHC H $NOTIFICATIONTYPE$ $SERVICESTATE$ $HOSTNAME$ $SERVICEDESC$ '$SERVICEOUTPUT$'
}
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
define contact {
contact_name root
alias Root
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c
host_notification_options d,u
service_notification_commands notify-service
host_notification_commands notify-host
}
define contactgroup {
contactgroup_name notification_group
alias notification_group
members root
}
check_mk Config
extra_host_conf['contact_groups'] = [
('notification_group',ALL_HOSTS),
]
Notifications erst wenn ein Problem für mehr als 5 Minuten vorliegt:
extra_host_conf['first_notification_delay'] = [
('5',ALL_HOSTS),
]