Seite wählen

Zurück in die Zukunft: Icinga2-Benachrichtigungen mit XMPP

von | Aug 28, 2020 | NETWAYS

Der klassische Weg um Benachrichtigung an Nutzer zu verschicken ist bei Icinga 2 (wie bei so vielen anderen Systemen auch) das Versenden einer Email. Für zeitnahe und mobilere Benachrichtigung gibt es den Versands von SMS, Sprachanrufe oder andere Optionen.

Mit dem Aufkommen und der starken Verbreitung von Chat-Diensten ist die Einbindung eines solchen Benachrichtigungsfunktion der offensichtliche nächste Schritt (oder zumindest eine tolle Spielerei). So gibt es Skripts für Slack Rocket Chat, Matrix, Telegram, selbstverständlich IRC und gerüchteweise auch Iridium. Wie man aus der Überschrift entnehmen kann geht hier es hier dann um einen weiteren Dienst, nämlich XMPP/Jabber (Jabber ist der alte Name des Protokolls).

XMPP ist ein freier Standard, erweiterbar und es gibt zahlreiche Implementierungen für Server und Clients. Der allgemeine Bekanntheitsgrad ist eher gering, obwohl der Einsatzbereich sehr groß ist. Zahlreiche größere Internetfirmen haben ihre Nachrichtenaustauschfunktionalität zu Beginn schlicht auf XMPP aufgebaut und mit freier Software umgesetzt (und dann natürlich einen “walled garden” um die Nutzer gebaut). Die Kommunikation verläuft ähnlich wie Email, ein Client (ein Nutzer bzw. sein(e) Endgerät(e)) verbindet sich mit einem Server und übergibt diesem eine Nachricht; diese wird dann zu dem Zielserver transportiert, welcher sie dann an den Empfänger weiterleitet. Ähnlich wie bei Email ist es ein föderiertes System, prinzipiell kann jeder sich einen XMPP-Server aufsetzen und mit allen anderen reden. Dementsprechend wird ein Nutzer auch durch eine JID identifiziert, die aus einem Nutzername und einem Domänenteil in der Form nutzer@domaene.tld besteht.

Es gibt nun drei Gründe für die Benachrichtigung via XMPP:

  1. Ganz generell ist ein zweiter Kanal sinnvoll, da der erste Kanal ausfallen kann. Sollte das Mailsetup ausfallen, kann niemand darüber per Email benachrichtigt werden und natürlich wären alle weiteren Benachrichtigungen ebenfalls nicht mehr möglich.
  2. XMPP ist ein sehr mächtiges vielfältiges Protokoll und kann einen Nutzer zeitnah auf einem quasi beliebigen Endgerät erreichen (vorausgesetzt dieses Endgerät ist in irgendeiner Form online, Stichwort: PUSH-Nachrichten). Zusätzlich kann eine XMPP-Infrastruktur in einer beliebigen Größenordnung selbst betrieben werden ohne sich weitere externe Abhängigkeiten ins Haus zu holen.
  3. Der Autor dieses Artikel ist ein XMPP-Fan und würde gerne ein wenig Werbung dafür machen. Auch als Alternative zu den populären proprietären IM-Lösungen fragwürdiger Unternehmen.

Was die Umsetzung angeht, so gibt es hier schon genug Vorlagen, unter anderem diesen Artikel aus gleichem Hause, welcher das Thema zwar abdeckt, aber nach sechs Jahren doch auch ein Update verdient. Zwei Punkte bedürfen im besonderen einer Aktualisierung:

  1. Der Wechsel von Python2 auf Python3
  2. Die eingesetzte XMPP-Bibliothek hat etwas Rost angesetzt

Aus diesem Grund wurde auch diese Variante entwickelt, aber die Verwendung von Umgebungsvariablen für die Übergabe von sensiblen Daten ist im Moment bei der Verwendung des Directors nicht möglich. Zusätzlich wird die sleekxmpp-Bibliothek mittlerweile nicht mehr weiterentwickelt oder gewartet. Diese und weitere Anpassungen  wurden in diese Version  integriert um die sich dann auch dieser Artikel dreht.

Wenn man nun XMPP-Benachrichtigungen von dem eigenen Icinga 2-System erhalten möchte, benötigt man vorher schon die Möglichkeit XMPP-Nachrichten zu versenden, also mindestens einen Account bei einem Anbieter entsprechender Infrastruktur, beispielsweise einer von conversations.im oder jabber.at. Alternativ kann auch eine eigene Infrastruktur erstellt werden. Zur Installation des Skriptes müssen zuerst die Abhängigkeiten erfüllt werden, was in den meisten Fällen durch die Installation von Python3 mit Standardbibliotheken und der Bibliothek slixmpp abgeschlossen sein sollte. Dann muss das Skript selbst an einen passenden Ort kopiert werden und die Konfiguration aus dem Ordner icinga2_config in die eigene Konfiguration integriert werden. Besonders ist hier natürlich das Eintragen des Pfads zum Skript, dem|den eigenen XMPP-Account(s) (sowohl des Senders als auch des Empfängers) und des Passworts. Alternativ kann die Konfiguration auch mit dem Director erstellt werden.

Das ganze sieht dann beispielsweise in Conversations so aus:

Das Ganze ist noch recht minimalistisch und hilfreiche Ideen|Vorschläge|Kritik sind herzlich willkommen. Dann bleibt an dieser Stelle nicht viel mehr übrig als zu hoffen, dass dies hier jemandem nützt, was übrigens auch gerne mal kurz als Feedback gegeben werden kann 🙂

Lorenz Kästle
Lorenz Kästle
Consultant

Lorenz hat seinen Bachelor der Informatik an der FAU gemacht und sich zuletzt mit Betriebssystemen dort beschäftigt. In seiner Freizeit beschäftigt er sich ein wenig mit XMPP und der Programmiersprache Erlang.
Mehr Beiträge zum Thema NETWAYS

Natalie Meets Jessica

Hallo an alle Leser*innen und willkommen zurück zu unserer Blogpostserie „Natalie meets...“, die natürlich auch im neuen Jahr fortgesetzt werden soll! 😊 Hiermit auch von meiner Seite nochmals ein gesundes und frohes neues Jahr 2021 - ich hoffe, ihr seid alle gut ins...

Gemeinsam was Neues starten! Die NETWAYS Startup Days 2020

Anfangen – wenn ein neues Jahr beginnt, dann spielt das Thema Anfangen in der Regel eine große Rolle. Wir haben uns schon im Dezember mit dem Anfang von was Neuem beschäftigt – und zwar in unseren Startup Days. Getöse, Gezwitscher, ein Mann mit Tarnanzug und Gasmaske...

Monthly Snap December 2020

  Christmas is long gone, and we wish you all a happy new year! December seems so far away, as we are now looking ahead towards brighter times. But what was on our minds last year?   JITSI of course! Which is why Marius started the month with his blog NWS...

Fachinformatiker als Junior Consultant

In meinem letzten Blogpost "Die Neuordnung der IT-Ausbildungsberufe und wir" habe ich bereits ein bisschen über die Änderungen an der IT-Ausbildung und meine Pläne für die Umsetzung bei NETWAYS Professional Services geschrieben. Nachdem nun die Eignungsfeststellung...

Veranstaltungen

Di 19

Icinga 2 Advanced Training (englisch class) | Online

Januar 19 @ 09:00 - Januar 21 @ 17:00
Feb 02

Elastic Stack Training | Online

Februar 2 @ 09:00 - Februar 4 @ 17:00
Feb 10

GitLab Fundamentals Training | Online

Februar 10 @ 09:00 - Februar 11 @ 17:00
Feb 23

Terraform mit OpenStack Training | Online

Februar 23 @ 09:00 - Februar 24 @ 17:00
Feb 23

Fundamentals for Puppet | Online

Februar 23 @ 09:00 - Februar 25 @ 17:00