Checkmk: Benachrichtigungen über Mastodon
Notifications aus Checkmk lassen sich mit wenig Aufwand auch auf Mastodon anzeigen - sogar rein privat
Checkmk bietet allerlei interne Möglichkeiten, sich über Statusänderungen informieren zu lassen. Weitere gibt es in der Checkmk Exchange und der Eigenbau, den wir hier für Telegram vollzogen haben, ist auch ein Kinderspiel (mittlerweile aber unnötig). Mastodon könnte da zunehmend interessant sein, schließlich kann man das auch firmenintern betreiben!
Checkmk + Mastodon + toot
Das Prozedere ist ganz simpel: Zunächst braucht Ihr ein Skript, welches die Daten der Benachrichtigung von Checkmk ausliest und aufbereitet. Damit das Skript im Falle einer Benachrichtigung ausgelöst wird, benötigt Ihr zudem eine Checkmk-Regel und das Skript muss in einem bestimmten Verzeichnis liegen.
Die Skript-Basis ist das Programm toot, ein schlichter Kommandozeilen-Client für Mastodon. Wie Ihr toot einrichtet zeigen wir hier.
Skript erstellen
Hier zunächst das Skript mastodon_notifier innerhalb der Checkmk-Instanz, sprich unter OMD[mysite]:~/local/share/check_mk/notifications/mastodon_notifier:
#!/bin/bash
# Mastodoner
env | grep NOTIFY_ | sort > $OMD_ROOT/tmp/foobar.out
cat $OMD_ROOT/tmp/foobar.out |\
egrep "NOTIFY_HOSTNAME=|NOTIFY_LASTHOSTSTATE=|NOTIFY_HOSTSTATE=" |\
sed ' s/NOTIFY_HOSTNAME=/Host:/ ; s/NOTIFY_LASTHOSTSTATE=/Alt:/ ; s/NOTIFY_HOSTSTATE=/Neu:/ ' |\
/home/mirco/.nvm/versions/node/v18.14.0/bin/toot --config /home/mirco/.mastodon.json --visibility direct
exit 0
# Mastodoner ist der Titel, wie er auch in Checkmk angezeigt wird. Die Zeile mit env besorgt die Benachrichtigung, sortiert sie und speichert sie in der Datei foobar.out.
Dann wird foobar.out über cat ausgegeben, egrep reduziert auf die hier gewünschten Felder Hostname, letzter und aktueller Status, sed ersetzt die Variablennamen durch Host:, Alt: und Neu:, damit es hübsch aussieht.
Dann folgt der toot-Aufruf: Hier braucht es den absoluten Pfad und die manuelle Angabe der Konfigurationsdatei - installiert wurde toot schließlich unter einem Nutzerkonto (hier "mirco") und nicht als Instanznutzer (hier "mysite"). Die visibility steht hier auf direct, so dass der Toot nur für direkt erwähnte Nutzer sichtbar ist - hier also nur für den Absender selbst.
Tipp: Man könnte meinen, man könnte sich den Zwischenschritt über die Datei foobar.out sparen. Setzt man aber egrep direkt am sort-Befehl an, wird das Skript mehrfach ausgeführt und es hagelt Toots ...
Tipp 2: Eine hübsche Übersicht über alle verfügbaren Felder der Benachrichtigung findet Ihr in Checkmk unter Setup/Events/Notifications/Show analysis. Klickt in der Liste der letzten Benachrichtigungen auf eines der Schriftrollen-Icons, um den gesamten Kontext zu sehen:
Nicht vergessen: Skript ausführbar machen!
chmod +x mastodon_notifier
Das war es soweit im Terminal.
Regel erstellen
Erstellt nun eine Notifications-Regel und legt als Notification method Euer Skript fest - plus etwaige Filter.
Und das Ergebnis auf Mastodon: