Uptime Kuma Benachrichtigungen via XMPP
Uptime Kuma unterstützt zwar schon jede Menge Messenger und sonstige Dienste, um Benachrichtigungen an zuständige Personen weiterzuleiten, leider gibt es aber (noch) keine native Auswahl für Jabber/XMPP. Hier behelfen wir uns mit einem Trick: Das Verfahren läuft, wie bei Proxmox auch, über sogenannte Webhooks. Das heißt, Voraussetzung ist ein XMPP-Server Betreiber, der auch über eine HTTP Schnittstelle verfügt (weitere Erklärung siehe hier), mir bekannt sind z. B. Hot Chilli oder monocles.de.
Ist das sichergestellt, sollte man als Nächstes eine base64-codierte Version seines XMPP-Zugangs, welchen man als Absender für die Nachrichten nehmen möchte (bestehend aus der XMPP-Adresse und dem dazugehörigen Kennwort), erzeugen. Die Anleitung hierfür unter einem Linux Betriebssystem steht auch in dem Artikel zu Benachrichtigungen von Proxmox. Für leidgeplagte Win* User gibt es laut Stackoverflow einen Powershell Befehl, der die gleiche Arbeit leistet (nicht getestet!):
powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(\"sender@server.de:geheimespasswort\"))"
Sind diese Voraussetzungen erfüllt, geht es in die Verwaltungsoberfläche von
Uptime Kuma. Dort findet man nach einem erfolgreichen
Login in sein Administrator Konto oben rechts ein Pulldown-Menü mit dem Punkt Einstellungen.
Hier wählt man den Punkt Benachrichtigungen aus und klickt anschließend auf Benachrichtigung einrichten.
Aus der sehr langen Liste von Benachrichtigungsdiensten wählt man dann "Webhook" aus und
erhält folgende (noch auszufüllende) Maske:

Jetzt muss nur noch aus dem Beispiel die XMPP-Anbieter-Adresse richtig gesetzt werden, der Empfänger richtig eingestellt werden und bei den zusätzlichen Headern die oben generierte base64 Zeichenkette eingetragen werden. Danach bietet Uptime Kuma ganz unten die Möglichkeit, den soeben erstellten Webhook direkt zu testen. Das sollte zur Überprüfung auch gemacht werden, bevor dann im letzten Schritt das Ganze abgespeichert wird. Als letztes muss diese Benachrichtigungsmethode dann noch mindestens 1 Monitor zugewiesen werden und das war's!

Falls alles in Ordnung war, könnte das Resultat so wie oben aussehen! Die erste Nachricht war der Test der Benachrichtigung. Die folgenden Meldungen war der simulierte Ausfall und anschließender Neustart eines Docker Containers. Viel Spaß beim Nachbau und gerne Rückmeldung dazu direkt hier im blogeigenen Chat ganz unten rechts auf jeder dieser Seiten zu finden.
Nachfolgend noch eine Anleitung, wenn der Webhook nicht an einen Prosody Server, sondern an einen ejabberd Server geschickt wird (danke an Stephan für die Ergänzung).
Auf dem ejabberd-Server muss http-api aktiviert sein und die ejabberd.yml um Folgendes ergänzt werden:
listen:
- ip: 127.0.0.1
port: 5580
module: ejabberd_http
tls: false
request_handlers:
/api: mod_http_api
modules:
mod_http_api: {}
acl:
alert_sender:
user: alerts@example.org
api_permissions:
"uptime-kuma":
who:
access:
allow:
acl: alert_sender
what:
- send_message
In den Einstellungen bei Uptime Kuma ist Folgendes zu ändern:
Die URL ändert sich zu: http://127.0.0.1:5580/api/send_message (falls die Konfiguration
von ejabberd.yml so ist wie oben beschrieben, sonst ggf. Port und Adresse anpassen).
Da ejabberd den Sender und Empfänger nicht automatisch aus der URL extrahieren kann, muss bei Uptime Kuma der Anforderungstext wie folgt aussehen (custom bzw. benutzerdefinierter body):
{
"type": "chat",
"from": "uptimekuma@beispiel.de",
"to": "user@beispiel.de",
"subject": "",
"body": {{ msg | json }}
}
Die Konfiguration funktioniert so natürlich nur, solange Uptime Kuma und ejabberd auf der gleichen Maschine laufen, ansonsten sind die Adressparameter entsprechend zu ändern.
Falls kein eigener XMPP-Server vorhanden ist, bitte bei Eurem XMPP-Provider nachfragen, was dieser für eine Serversoftware nutzt und ob die entsprechenden Konfigurationen vorliegen oder ihn lieb bitten, diese einzupflegen.