Eine proaktive Überwachung eines Servers oder einer Platform kann mit relativ einfachen Mitteln realisiert werden. Telegram bietet mit sogenannten Bots die Möglichkeit einen Chat mit Maschinen zu erstellen. In diesem Beitrag verwende ich eine Chatgruppe, in der sich menschliche Teilnehmer austauschen können. Der Bot, welcher Teil der Gruppe ist kann aber keine Nachrichten interpretieren sondern nur selber welche schicken.

Telegram Bot erstellen

Das Erstellen eines Telegram Kontos wird bewusst in diesem Artikel nicht erwähnt. Dies kann über https://web.telegram.org/ oder die Mobile App erledigt werden.

Als erstes muss der BotFather angeschrieben werden (welcher selber ebenfalls ein Bot ist) um einen Bot erstellen zu können. Dazu kann im Kontakt Suchfeld /BotFather geschrieben, der Kontakt ausgewählt und anschliessend im Chatfenster auf Start gedrückt werden.

image.png

Darauf präsentiert der BotFather auch gleich seine Interaktions Möglichkeiten. Das Erstellen des Bots läuft interaktiv ab, wir beginnen mit /newbot
Anschliessend werden wir nach dem Namen des Bots gefragt und Usernamen, welcher auf bot enden muss. In meinem Fall ist der Name DirectoryServicesAlerts und der Username DSAlerts_bot. Als Resultat erhalten wir das Token, mit dem Grafana über diesen Bot mit uns kommunizieren kann.

image-1.png

Telegram Gruppe erstellen und Bot einladen

Es ist von Vorteil anstelle eines direkt Chats mit 1 Person eine Gruppe in Telegram zu erstellen, in welcher der Bot Mitglied ist. Dadurch können beliebig menschliche Mitglieder hinzugefügt und entfernt werden je nach Bedarf (z.B im Pikettfall).
Durch klicken auf das Hamburgermenü neben dem Titel Telegram kann mit New Group eine neue Gruppe angelegt werden. Bei Kontakten wird der Bot mit der Suche nach dem Username des Bots (in meinem Fall /DSAlerts_bot ) hinzugefügt. Neben unserem Bot benötigen wir einmalig auch noch den IDBot (/myidbot), welcher uns die ID für die Gruppe sagen kann. Diese wird in Grafana benötigt, damit der Bot weiss in welche Gruppe er die Mitteilungen schicken soll.

dsalertsbot.png myidbot.png

Die Gruppen ID kann anschliessend im Gruppen Chat mit /getgroupid@myidbot angezeigt werden.

image-5.png

Anschliessend kann der IDBot wieder aus der Gruppe entfernt werden, er wird nicht mehr benötigt.

Grafana konfigurieren

In Grafana wird über das Alerting Menü ein neuer Notification channel hinzugefügt

image-7.png

Der Name des Channels kann frei gewählt werden. Als Type wird Telegram ausgewählt und bei den Telegram API Settings das BOT API Token, welches uns der BotFather mitgeteilt hat, eingetragen sowie bei Chat ID diejenige welche uns der IDBot im Gruppenchat geschickt hat.

image-8.png

Abschliessend kann das Ganze mit Send Test überprüft werden. Sollte alles korrekt konfiguriert worden sein ist eine Test Nachricht im Gruppen Chat ersichtlich.

image-9.png

Alerts in Grafana definieren

In Grafana kann nun auf einem Panel im Alert Tab der gewünschte Schwellwert hinzugefügt werden, ich nehme zum testen die CPU Auslastung.

image-12.png

Mit folgenden Powershell Einzeiler wird die CPU auf einem Test Server zu 100% ausgelastet

1
(1..(GWmi Win32_Processor | Select -Expand NumberOfLogicalProcessors)) | ForEach-Object { Start-Job {while(1){}} }; Read-Host "Press any key to stop cpu load test";Stop-Job *;Remove-Job *

und schon meldet der Bot den Alarm, bzw. dessen Aufhebung

image-11.png