Benachrichtigungen

Einleitung

Benachrichtigungen werden dazu verwendet, um im Falle von Problemen über den Status von Services informiert zu werden. Dabei kann im Detail eingerichtet werden, zu welchem Status eine Benachrichtigung versendet wird.

Damit Benachrichtigungen funktionieren, muss an verschiedenen Stellen in der WebGUI eine Konfiguration vorgenommen werden. Diese sind

  • Mitteilungsdienste
  • Kontakte
  • Kontaktgruppen

Mitteilungsdienste

Über die Mitteilungsdienste wird die Versendungsart von Benachrichtigungen festgelegt. In der WebGUI gibt es dazu drei Varianten zur Auswahl:

  • Sendmail
  • HTTP
  • Skript

Sendmail

Wie der Name schon beinhaltet, werden mit der Variante Sendmail Benachrichtigungen über E-Mail versendet. Zum Versenden der E-Mail wird das Programm sendmail verwendet, welches mit einem MTA wie Postfix oder Exim installiert und eingerichtet werden kann. Wichtig dabei ist einen gültigen Absender zu definieren. Über den MTA können Sie steuern, ob E-Mails über einen Relay laufen sollen oder direkt via Benutzer/Passwort über SMTP versendet werden.

HTTP

Mit diesem Mitteilungsdienst werden Benachrichtigungen über HTTP versendet. Die Postdaten können URL-enkodiert oder im Format JSON versendet werden. Auf diese Weise lassen sich Nachrichten an eine Vielzahl von Nachrichtendiensten versenden, wie z.B. SMS, Chats und Ticketsysteme, wenn diese über eine HTTP Schnittstelle verfügen.

Skript

Sollte der Funktionsumfang der anderen Mitteilungsdienste nicht ausreichen, so ist es auch möglich ein eigenes Skript zur Versendung von Nachrichten zu entwickeln und dieses in der WebGUI einzubinden.

Hierzu muss das Skript unter dem Pfad abgelegt werden, der mit dem Parameter message_service_script_path in der Konfiguration des Bloonix-Servers eingerichtet ist.

Wir möchten das gerne anhand eines kleines Beispiels demonstrieren. Nehmen wir z.B. an Sie haben ein Skript namens test.py. Speichern Sie das Skript unter dem Pfad /usr/local/lib/bloonix/message-service. Das Skript könnte folgenden Inhalt haben:

#> cat /usr/local/lib/bloonix/message-service/test.py
#!/usr/bin/python3
import json
import sys
lines = ""
while True:
    try:
        line = input()
    except EOFError:
        break
    lines += line
param = json.loads(lines)
f = open("/tmp/test.log", "w")
f.write(json.dumps(param))
f.close()
sys.exit(0)

Erstellen Sie nun über die WebGUI einen neuen Mitteilungsdienst des Typs Skript und tragen Sie beispielhaft folgende Werte ein:

Was nun bei der Auslösung eines Alarms passiert ist, dass die Parameter, welche in der WebGUI definiert werden, an das Skript über STDIN im JSON Format übergeben werden. Mit dem Exit-Code wird dem Bloonix-Server mitgeteilt, ob das Versenden der Nachricht erfolgreich war: 0 = ok, 1 = nicht erfolgreich.

In der Datei /tmp/test.log sollte nach erfolgreicher Ausführung folgender Eintrag enthalten sein:

{
    "message": "eine lange Nachricht, generiert aus dem Nachrichtentemplate ...",
    "send_to": "Adresse des Kontakts",
    "foo": "bar",
}

Kontakte

Über Kontakte werden Personen eingerichtet, an die letztendlich Benachrichtigung gesenden werden. Einem Kontakt können beliebig viele Mitteilungsdienste zugeorndet werden. Zusätzlich können mit jedem Mitteilungsdienst Zeitabschnitte definiert werden, wann Benachrichtigungen versendet werden. Die Syntax dazu ist wie folgt:

Syntax: DAY RANGE  TIME RANGE

DAY RANGE                       EXAMPLES
------------------------------------------------------------
Weekday                         Monday
Weekday - Weekday               Monday - Friday
Month                           Januar
Month - Month                   Januar - July
Month Day                       Januar 1
Month Day - Month Day           Januar 1 - July 15
Year                            2010
Year - Year                     2010 - 2012
YYYY-MM-DD                      2010-01-01
YYYY-MM-DD - YYYY-MM-DD         2010-01-01 - 2012-06-15

TIME RANGE                      EXAMPLES
------------------------------------------------------------
HH:MM - HH:MM                   09:00 - 17:00
HH:MM - HH:MM, HH:MM - HH:MM    00:00 - 08:59, 17:01 - 23:59

Kontaktgruppen

Über die Kontaktgruppen werden im letzten Schritt Kontakte mit Hosts und Services verknüpft. Auf diese Weise lässt sich genau definieren, welche Kontakte beim Ausfall von bestimmten Hosts und Services kontaktiert werden sollen.

Sie sollten sicherstellen, dass jeder Host mindestens einer Kontaktgruppe zugeordnet ist, damit bei Problemen jemand über den Status der Hosts informiert wird.