Bild: QuelleHallo Habr! Mein Name ist Ilya Ableev, ich arbeite in der Überwachungsabteilung von Badoo.
Sie können lange festhalten, welches Überwachungssystem kühler ist. Das Hauptwerkzeug für die Reaktion auf Probleme in Badoo ist Zabbix, und wir haben wiederholt
die Erfahrung des Anpassens geteilt.
Nach dem Auspacken können Sie neue Probleme entweder über die Weboberfläche oder per E-Mail / SMS erfahren. Dies funktioniert gut und bis zu einem gewissen Punkt waren wir mit diesen Methoden vertraut.
Heutzutage verfügt unser System über mehrere Serverinstanzen, Tausende von Hosts, Hunderttausende von Überprüfungen und ungefähr die gleiche Anzahl von Triggern, auf die Sie so schnell wie möglich reagieren müssen. Nach einer Reihe von Vorfällen, bei denen wir nur bis zu zehn Minuten damit verbracht haben, ein Problem zu erkennen (was völlig inakzeptabel ist), haben wir festgestellt, dass wir andere Möglichkeiten zur Meldung von Problemen benötigen. Dann wäre unsere Reaktion vielleicht schneller.
Die optimale Lösung wäre unserer Meinung nach, wichtige Benachrichtigungen über allen Fenstern (Browser, Chats, Konsolen) anzuzeigen. In diesem Artikel werden wir darüber sprechen, wie wir Zabbix fertiggestellt haben, und lernen, wie man sie direkt an den Desktop sendet.
Für wen diese Lösung geeignet ist:
- Dienstadministratoren, die nicht nur rund um die Uhr auf den Monitor schauen, sondern sich auch um andere Aufgaben kümmern;
- Alle anderen Administratoren, die die PROBLEM- und OK-Blätter nicht gerne per E-Mail oder SMS anzeigen, sich aber rechtzeitig über kritische Probleme informieren möchten.
Sie müssen Zeit für die Installation aufwenden, aber ich denke, wenn Sie Zabbix verwenden und bereits benutzerdefinierte Skripte verwendet haben, wird es für Sie nicht schwierig sein.
Achtung! Das Empfangen von Benachrichtigungen auf diese Weise macht süchtig. Durch die langfristige Verwendung entsteht der Eindruck, dass es ein wesentlicher Bestandteil von Zabbix ist.
Ich werde Ihnen schrittweise sagen, was und wie wir getan haben. Die technische Umsetzung ist recht einfach:
- Zabbix sendet eine Warnung an ein Ereignis.
- Das Sendeskript auf dem Server sendet Daten über UDP an den Client auf dem Desktop.
- Das Empfängerskript empfängt die Benachrichtigung und löst das Erscheinen einer Popup-Nachricht über eine zusätzliche Anwendung aus.
Das dritte Element kann je nach verwendetem Betriebssystem und der Anwendung, die Ihnen am besten gefällt, unterschiedlich sein.
Erster Schritt: Konfigurieren Sie Zabbix
In der offiziellen Dokumentation erfahren Sie,
wie Sie Ihre Benachrichtigungen erstellen .
Der Projektcode ist auf GitHub verfügbar:
https://github.com/ableev/ZbxDsktp .
- Fügen Sie zbxpush.py vorab in AlertScriptsPath auf dem Zabbix-Server ein.
- Weiter in der Weboberfläche: Administration → Medientypen → Anlegen .

3. Wir werden den IP / FQDN, an den wir Benachrichtigungen senden, im Voraus registrieren.
Dieser Artikel kann aktualisiert werdenZum Beispiel haben wir dies getan: Es gibt einen Hauptüberwachungsserver mit einer SSH-Anmeldung, das Skript merkt sich die IP des Anrufers und beginnt, Warnungen an ihn zu senden. Um den Empfang von Daten zu Hause zu aktivieren, müssen Sie die Aktion nicht jedes Mal ändern.
In der Weboberfläche:
Administration →
Benutzer →
% Benutzername% →
Medien .

4. Erstellen Sie eine Aktion für die Trigger.
In der Weboberfläche:
Konfiguration →
Aktionen .

Sendeformat
{TRIGGER.NSEVERITY}@@@{HOST.NAME}@@@{TRIGGER.NAME}
Das erste ist das Zahlenformat des Auslösers (4 oder 5 wirken sich auf das angezeigte Symbol aus: Hoch oder Katastrophe), das zweite ist der Benachrichtigungsheader, das dritte ist der Nachrichtentext.
@@@ - um das Aufteilen in Spalten zu vereinfachen, da die Namen der Trigger alles aussagen können (zumindest bei uns :)), aber sicherlich nicht diese Kombination.


Schritt zwei: Der Server sendet Daten an den Client
Die Logik ist einfach: Wir erhalten ein Ereignis, wir leiten es an den Kunden weiter.
zbxpush.py
Hier können Sie UDP in TCP ändern. Wir haben uns aus einem einfachen Grund für UDP entschieden: Zabbix sendet alle Benachrichtigungen nacheinander. Wenn Ihr Computer nicht verfügbar ist und TCP verwendet wird, werden Benachrichtigungen mit einer langen Verzögerung gesendet.
Aber UDP ist nicht zuverlässigDer Leser, der zum Witz über UDP kommt, wird feststellen, dass beim Senden von Warnungen über UDP die Möglichkeit besteht, dass sie irgendwo zwischen dem Server und dem Desktop verloren gehen. Und er wird recht haben. Es geht aber nicht darum, eine garantierte Nachricht zu übermitteln, sondern einfach und schnell mit Problemen auf das Dashboard aufmerksam zu machen: "Hey, da ist etwas passiert, gehen Sie und sehen Sie."
Denken Sie daran, das Skript ausführbar zu machen!
Schritt drei: Empfangen Sie das Ereignis und zeigen Sie Benachrichtigungen an
zbxlistenerd.py
- ein Skript, das sich im Hintergrund dreht und Benachrichtigungen auslöst
settings.cfg
- Datei mit Clienteinstellungen
icons/5.png
,
icons/4.png
- Symbole für verschiedene Kritikalitäten von Triggern
Weiter gehen unsere Wege auseinander. Der „Client“ -Teil beinhaltet ein wenig Kreativität, da jeder eine Umgebung für sich selbst schafft.
Was ist notwendig:
- Symbole, die der Kritikalität von Triggern entsprechen;
- Sound-Popup-Benachrichtigungen;
- Ausführen einer Aktion durch Klicken auf eine Benachrichtigung (SSH-Login, Öffnen eines Links, Starten eines Tickets für ein Problem usw.).
Unser Unternehmen verwendet hauptsächlich Linux und Mac OS als Desktop-Betriebssystem. Schauen wir uns einige Beispiele dafür an. Wenn Sie dasselbe für Windows implementieren, können Sie dies gerne kommentieren! Gerne ergänzen wir den Beitrag.
Linux

Lassen Sie mich Ihnen ein Beispiel geben, das zufällig verwendet wurde: Benachrichtigen-Senden in Xfce (im obigen Screenshot). Warum notify-send und nicht dasselbe Python mit libnotify? Ja, da es in allen gängigen Desktop-Distributionen (Ubuntu, Fedora, SUSE) enthalten ist und mit allen (zumindest beliebten) DEs (Gnome, KDE, Xfce) funktioniert.
Tipp: Wenn in Zeiten, in denen etwas massenhaft nicht verfügbar ist (z. B. ein Switch heruntergefallen ist und Sie mit einer Vielzahl von Auslösern über die Nichtverfügbarkeit von Servern überschwemmt sind), konfigurieren Sie den Hotkey sofort, um den Benachrichtigungs-Sende-Prozess zu beenden.
Mac OS
Da die Lösung zunächst auf Basis einer kostenlosen Anwendung implementiert wurde und wir dann die kostenpflichtige Anwendung ausprobiert haben, gibt es zwei Beispiele.
Terminal-Notifier

Nach einer kurzen Suche wurde ein freier
Terminal-Notifier ausgewählt.
Vorteile:
- Sie können verschiedene Symbole für unterschiedliche Kritikalitäten festlegen.
- Sie können in Zabbix Links zu Diagrammen erstellen und diese öffnen, indem Sie auf eine Benachrichtigung klicken.
- Sie können das Öffnen von SSH-Links implementieren: Sie haben eine Benachrichtigung gesehen -> geklickt -> sind sofort zum Host gegangen.
Nachteile: keine (insbesondere nachdem Symbolunterstützung hinzugefügt wurde).
Knurren
Zum Aktivieren setzen Sie growl_enabled = True in settings.cfg.Zu einer Zeit, als Terminal-Notifier nicht wusste, wie man benutzerdefinierte Symbole verwendet, kam Growl damit recht gut zurecht. Daher hat sich unsere Neugier gegenüber unserer Neugier durchgesetzt - und wir haben diese recht beliebte Anwendung ausprobiert (die, wie ich sagen muss, nicht nur Symbole ändern kann - es ist ein ganzes Benachrichtigungszentrum).
Vorteile:
- Möglicherweise ist die Anwendung bereits installiert.
- Sie können verschiedene Symbole für unterschiedliche Kritikalität auswählen.
- Genau wie in Terminal-Notifier können Sie Aktionen konfigurieren, indem Sie auf Benachrichtigungen klicken.
Minus: bezahlt.
Wenn Sie kein Knurren haben, empfehle ich dennoch die Verwendung von Terminal-Notifier.
Fazit
Also mit Hilfe einfacher Geräte ...Was wir als Ergebnis bekommen haben:
- schnelle Zustellung von Benachrichtigungen an Administratoren;
- Verkürzung der Reaktionszeit auf Ereignisse (vom Moment des „Herausfindens“ bis zum „Reparieren“ oder „Weitergeben“);
- die Fähigkeit, einfache halbautomatische Aktionen auszuführen:
Außerdem hängt alles von Ihrer Kreativität ab.
Es war einmal, als ich bei einem Anbieter arbeitete, als der Internetkanal von allen Lautsprechern und Kopfhörern am Arbeitsplatz fiel, war der Klang einer Sirene zu hören. Dies führte den Begleiter (mich) in eine Betäubung, gab keinen angemessenen Bericht über das Problem per Telefon, aber er (ich) versuchte, dieses Problem so schnell wie möglich zu lösen.
Persönlich kenne ich bereits Fälle, in denen der Klang eines Schweins von einem beliebten Antivirenprogramm und von Sprechern eines beliebten Übersetzers an das Skript geschraubt wurde. :) :)
Wenn Sie Freizeit, Lust und moderne Technologie haben, können Sie dies tun
Schnelle Reaktionen auf Zwischenfälle!