Home monitoringlove #6 – icinga2 – Notifications mit Telegram
Post
Cancel

monitoringlove #6 – icinga2 – Notifications mit Telegram

Dieser Beitrag wurde vor mehr als 6 Jahren veröffentlicht!
Höchstwahrscheinlich ist dieser inzwischen veraltet.

Wenn man einen icinga2 Service betreibt, möchte man irgendwann auch erfahren, wenn sich ein Status eines Service ändert. Über Jahre hin etabliert und auch (in Grenzen) ausfallsicher ist und bleibt eine SMS. Vor allem, weil man damit unabhängig vom Netzzuganges seines ISPs bleibt. Dafür reicht es, ein altes GSM-Handy mit einer SIM Karte auszurüsten und dieses über einen USB-Anschluss mit dem Monitoring-Host zu verbinden. Die Softwareseitige Integration sollte dann nicht mehr so kompliziert sein. Das kann man aber nur machen, wenn man dem Server im eigenen Zugriff hat.

Ist dieser jedoch gemietet und steht mit Dutzend anderen in einem Rechenzentrum, was sich dann auch noch in einem anderen Land befindet, muss man sich nach einer Alternative umsehen.

Diverse Messagingservices bieten sich da förmlich an. Icinga2 ist da flexibel genug aufgebaut, man kann so ziemlich alles befeuern. Es gibt sogar einen Twitteraccount in dem Notifications landen.

Meine eigenen Versuche begannen mit Threema und WhatsApp.

Beide Services bestehen aber auf eine verifizierten Handynummer, sodass mein privat genutzter Handy Zugang ohne Hinweis abgemeldet wurde.

Bei meinen nachfolgenden Recherchen stieß ich auf Telegram. Telegram bietet mir die Möglichkeit einen Bot zu erstellen und diesen mit entsprechenden Nachrichten zu befüllen.

Genau das was ich brauchte!

Telegram BotFather

Um einen Bot zu erstellen, muss man sich erst einmal bei beim BotFather melden. Im Browser meldet sich dazu mit seiner eigenen Handynummer an. Dann einfach im Suchfeld oben links nach BotFather suchen und mit ihm chatten.

BotFather

Mit einem /start beginnt man das ganze Prozedure.

BotFather wird dir mitteilen, welche Befehle er versteht.

Mit /newbot  geben wir dem BotFather zu verstehen, dass wir einen neuen Bot erstellen wollen. Der möchte darauf hin von uns wissen, wie wir diesen benennen wollen. In meinem Beispiel habe ich ihn bezeichnend icinga2-alerts genannt. Anschließend müssen wir dem Bot noch einen Usernamen geben. Dieser ist einmalig, es kann also passieren, dass ihr hier ein paar extra Runden drehen müsst!

BotFather

Ich bin letztendlich bei Icinga2AlertBot gelandet.

Wenn alles geklappt hat, dann bekommt ihr einen HTTP API Code, mit dem ihr dann dem Bot via HTTP Daten übermitteln könnt: 146495xxx:XYZB-CzDQJRk111OXgTxJcTbWiZg0p00000

Wobei der Part vor dem : die User ID darstellt, während hinter dem : der Telegram API Key steht. Für das nachfolgende Beispiel ist der API-KEY folgendermaßen aufgebaut: ${TELEGRAM_USER}:${TELEGRAM_API_KEY}

 Telegram Notification-Script

Die API lässt sich dann relativ einfach folgendermaßen benutzen:

1
2
3
4
5
6
7
TELEGRAM_USER=146495xxx
TELEGRAM_API_KEY=XYZB-CzDQJRk111OXgTxJcTbWiZg0p00000

curl -X POST \
  --data chat_id=${TELEGRAM_USER} \
  --data text="$(cat /var/tmp/notification.body)" \
  https://api.telegram.org/bot${TELEGRAM_API_KEY}/sendMessage

Das ganze muss man jetzt nu noch in entsprechende Icinga2 Notification-Scripte verpacken und schon können Status-Änderungen im Telegram Messanger gelesen werden.

Meine gebauten Scripte können über meinem GitHub-Account bezogen werden.

Sie sind nicht der Brüller, aber sie funktionieren. ;)

This post is licensed under CC BY 4.0 by the author.