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.