[HowTo] Monitoring Notifications via Telegram
Posted: 2018-09-15 17:05
Hat man ein Monitoring System (im Beispiel ist es ein Icinga) am Laufen bekommt man Monitoring Meldungen meist per Mail.
Hat man gerade weder Lust noch Zeit jedes Mal das Mail-Programm zu öffnen und möchte auch kein GSM Modem für SMS an das Monitoring System anschließen, besteht noch die Möglichkeit das Ganze via Telegram zu organisieren.
Wenn gerade der Mailserver ein Problem hat bekommt man so zumindest noch eine Meldung.
Die Nachteile sind dass man auf dem Telefon Telegram benötigt, natürlich das Monitoring System Internet benötigt und auf dem Client Gerät Empfang gegeben sein muss.
Zuerst erstellt man, direkt in der App, seinen eigenen Bot, wie hier (https://core.telegram.org/bots#6-botfather) beschrieben.
Mit diesem erhält man einen Token, der später noch benötigt wird. Ist der Bot soweit einsatzbereit, benötigt man noch eine "Chat ID" welche man mittels:
Erhät. Hat man Beides, geht es an das Monitoring Tool.
Unter Icinga wird ein neues Kommando definiert:
TOKEN und CHAT ID entsprechend ersetzen. Beide Kommandos (notify-service-by-telegram / notify-host-by-telegram) können dann entsprechend verwendet werden.
Ein Beispiel für Monit, wenn irgendetwas klemmt:
Und das Shell Script enthält eine Curl Aufruf, ähnlich oben:
Das Ganze kann beliebig erweitert werden.
Ein Hinweis, komplett auf Mails zu verzichten ist keine gute Idee, daher ist das Ganze als zusätzliche Methode zu verstehen.
Probleme / Fragen / Kommentare - immer her damit
Hat man gerade weder Lust noch Zeit jedes Mal das Mail-Programm zu öffnen und möchte auch kein GSM Modem für SMS an das Monitoring System anschließen, besteht noch die Möglichkeit das Ganze via Telegram zu organisieren.
Wenn gerade der Mailserver ein Problem hat bekommt man so zumindest noch eine Meldung.
Die Nachteile sind dass man auf dem Telefon Telegram benötigt, natürlich das Monitoring System Internet benötigt und auf dem Client Gerät Empfang gegeben sein muss.
Zuerst erstellt man, direkt in der App, seinen eigenen Bot, wie hier (https://core.telegram.org/bots#6-botfather) beschrieben.
Mit diesem erhält man einen Token, der später noch benötigt wird. Ist der Bot soweit einsatzbereit, benötigt man noch eine "Chat ID" welche man mittels:
Code: Select all
curl https://api.telegram.org/bot<TOKEN>/getUpdates
Unter Icinga wird ein neues Kommando definiert:
Code: Select all
define command {
command_name notify-host-by-telegram
command_line /usr/local/bin/curl -X POST --data chat_id=<CHAT ID>
--data text="Host: $HOSTNAME$%0AGroup:
$HOSTGROUPNAME$%0AState: $HOSTSTATE$%0AAddress: $HOSTADDRESS$%0AInfo:
$HOSTOUTPUT$%0A%0ADate/Time:
$LONGDATETIME$%0A%0AAck
by: $HOSTACKAUTHOR$%0AAck reason: $HOSTACKCOMMENT$%0Astate change
%: $HOSTPERCENTCHANGE$%0AA"
"https://api.telegram.org/bot<TOKEN>/sendMessage"
}
define command {
command_name notify-service-by-telegram
command_line /usr/local/bin/curl -X POST --data chat_id=<CHAT ID>
--data text="Notification Type: $NOTIFICATIONTYPE$%0A%0AService:
$SERVICEDESC$%0AHost: $HOSTALIAS$%0AAddress: $HOSTADDRESS$%0AState:
$SERVICESTATE$%0A%0ADate/Time: $LONGDATETIME$%0A%0AAdditional Info:%0A%0A$SERVICEOUTPUT$%0A" "https://api.telegram.org/bot<TOKEN>/sendMessage"
}
Ein Beispiel für Monit, wenn irgendetwas klemmt:
Code: Select all
check host localhorst with address 254.255.256.257
if failed icmp type echo count 2 with timeout 45 seconds then exec "/usr/local/bin/alert_telegram.sh"
Code: Select all
/usr/local/bin/curl -X POST --data chat_id=<CHAT ID>
--data text="Monit Meldung - 254.255.256.257 hat ein Problem" "https://api.telegram.org/bot<TOKEN>/sendMessage"
Ein Hinweis, komplett auf Mails zu verzichten ist keine gute Idee, daher ist das Ganze als zusätzliche Methode zu verstehen.
Probleme / Fragen / Kommentare - immer her damit