Proxmox Benachrichtigungen via XMPP
Da Proxmox seit einiger Zeit auch sogenannte "Webhooks" beherrscht, ist es relativ einfach, sich per XMPP Benachrichtigungen von Proxmox schicken zu lassen. Voraussetzung: Ihr nutzt einen XMPP-Anbieter, der auch eine HTTP-Schnittstelle für XMPP bereitstellt (z. B. Hot Chilli oder monocles.de bzw. monocles.eu). Im Zweifel Euren Anbieter fragen. Benutzt dieser einen Prosody-Server, so heißt das entsprechende Modul, auf dem auch diese Anleitung beruht, mod_post_msg
Die Einrichtung erfolgt im Proxmox GUI über das Rechenzentrum.
Hier wählt man ziemlich weit unten den Punkt Benachrichtigungen aus. Dort befinden sich dann zwei Unterpunkte,
von denen wir uns den ersten genauer ansehen. Dieser lautet Benachrichtigungsziele. Nach Anklicken des Punktes
Hinzufügen öffnet sich ein Pulldown-Menü, aus dem wir den Punkt Webhook auswählen. Nun erfolgt die eigentliche Bearbeitung.
Als erstes vergibt man dem Webhook einen Namen. Hier muss darauf geachtet werden, dass dieser keine
Leerzeichen enthält, da sonst die Bearbeitung nicht abgeschlossen wird. Die Methode belassen wir auf POST.
Das Häkchen bei Aktivieren sollte auch gesetzt sein. Jetzt erfolgt die Eingabe der Zieladresse,
bei hot-chilli lautet diese: https://jabber.hot-chilli.net:5281/msg/.
Nutzt Ihr monocles.de oder monocles.eu als Provider, dann lautet die Zieladresse:
https://monocles.de/msg/ bzw. https://monocles.eu/msg/. Dann brauchen wir 2 Header, die wir im
darauf folgenden Feld setzen. Der erste hat als Schlüssel Content-Type und als Wert application/json.
Der zweite hat als Schlüssel Authorization und erhält als Wert Basic base64-encoded-username:password.
Das Wort Basic wird so in den Wert geschrieben. Unter Linux bekommt man den darauf folgenden Wert in der
Kommandozeile mit dem Befehl echo -n "benutzer@xmpp-server.de:strenggeheimespasswort" | base64. Der
Benutzer, der hier eingetragen wird, ist der Sender der Nachricht.
Das jetzt folgende Feld heißt body und beinhaltet Informationen im JSON-Format (wir haben ja als
Content-Type json ausgewählt). Das sieht zum Beispiel jetzt so aus:
{
"to": "empfaenger@xmpp-server.de",
"type": "chat",
"body": "{{ title }}\n{{ severity }}\n{{ timestamp }}\n{{ message }}",
}
Der Wert von to enthält die komplette XMPP-Empfängeradresse. type sollte auf chat belassen werden
und im body verbirgt sich die eigentliche Nachricht, die der Empfänger bekommen soll. Die jeweils
doppelt geschweiften Klammern beinhalten Variablen, die beim Verschicken einer Benachrichtigung durch
die jeweiligen Ereignisse ersetzt werden. Welche es davon alle gibt, kann man sich
über die Hilfe links unten anzeigen lassen.
Abschließend kann man noch einen Kommentar vergeben, der dann in der Übersicht auftaucht, damit man diese Benachrichtigungsart von anderen Arten besser unterscheiden kann. Danach kann die Eingabe auf einen Klick auf OK beendet werden und damit ist die XMPP-Benachrichtigung fertig.
Falls alles richtig gemacht wurde, kann man jetzt in der Übersicht das neu erstellte Benachrichtigungsziel durch Anklicken auswählen und im Auswahlmenü einen Test ausführen lassen. Nach einer weiteren Bestätigung sollte man dann eine Testbenachrichtigung erhalten. Damit wäre die Konfiguration des Benachrichtigungsziels abgeschlossen.
Im letzten Schritt muss noch festgelegt werden, bei welcher Art der Benachrichtigung die XMPP-Benachrichtigung versendet
werden soll. Da ich bei mir noch keine Benachrichtigung per eMail konfiguriert hatte, lasse ich mich einfach bei allen
Vorfällen benachrichtigen. Hierzu ändert man einfach den default-matcher ab, indem man auf der Registerkarte
Benachrichtigungsziele das eben erstellte Benachrichtigungsziel (mit)auswählt.