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.