3 Benutzerdefinierte Alarmierungsskripte

Übersicht

Wenn Sie mit den vorhandenen Medientypen zum Senden von Benachrichtigungen nicht zufrieden sind, gibt es eine alternative Möglichkeit dafür. Sie können ein Skript erstellen, das die Benachrichtigung auf Ihre Weise verarbeitet.

Benutzerdefinierte Alarmierungsskripte werden auf dem Zabbix Server ausgeführt. Diese Skripte müssen sich in dem Verzeichnis befinden, das durch den Parameter AlertScriptsPath in der Server-Konfigurationsdatei angegeben ist.

Hier ist ein Beispiel für ein benutzerdefiniertes Alarmierungsskript:

#!/bin/bash

to=$1
subject=$2
body=$3
host=$4
value=$5

cat <<EOF | mail -s "$subject" "$to"
$body

Host: $host
Value: $value
EOF

Zabbix prüft den Exit-Code der ausgeführten Befehle und Skripte. Jeder Exit-Code, der ungleich 0 ist, wird als Befehlsausführungsfehler betrachtet. In solchen Fällen versucht Zabbix, die fehlgeschlagene Ausführung zu wiederholen.

Umgebungsvariablen werden für das Skript weder beibehalten noch erstellt, daher sollten sie explizit behandelt werden.

Konfiguration

Um benutzerdefinierte Alarmskripte als Medientyp zu konfigurieren:

  1. Gehen Sie zu Alerts → Medientypen.
  2. Klicken Sie auf Medientyp erstellen.

Die Registerkarte Medientyp enthält allgemeine Attribute des Medientyps:

Alle obligatorischen Eingabefelder sind mit einem roten Sternchen markiert.

Die folgenden Parameter sind spezifisch für den Skript-Medientyp:

Parameter Beschreibung
Skriptname Geben Sie den Namen der Skriptdatei ein (z. B. notification.sh), die sich in dem Verzeichnis befindet, das durch den Server-Konfigurationsparameter AlertScriptsPath angegeben ist.
Skriptparameter Fügen Sie optionale Skriptparameter hinzu, die in der Reihenfolge ihrer Definition als Befehlszeilenargumente an das Skript übergeben werden.

Skriptparameter unterstützen die Makros {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} sowie alle Makros, die in Benachrichtigungen unterstützt werden, ebenso wie Benutzermakros.

Weitere Informationen zur Konfiguration von Standardnachrichten und Optionen zur Alarmverarbeitung finden Sie unter allgemeine Medientyp-Parameter.

Auch wenn ein Alarmskript keine Standardnachrichten verwendet, müssen die Nachrichtenvorlagen für die von diesem Medientyp verwendeten Operationstypen dennoch definiert sein. Andernfalls wird keine Benachrichtigung gesendet.

Wenn mehr als ein Skript-Medientyp konfiguriert ist, können diese Skripte von den Alerter-Prozessen parallel verarbeitet werden. Die Gesamtzahl der Alerter-Prozesse ist durch den Parameter StartAlerters in der Server-Konfigurationsdatei begrenzt.

Testen

Um einen konfigurierten Skript-Medientyp zu testen:

  1. Suchen Sie das betreffende Skript in der Liste der Medientypen.

  2. Klicken Sie in der letzten Spalte der Liste auf Test; ein Testformular wird in einem Popup-Fenster geöffnet. Das Testformular enthält dieselbe Anzahl von Parametern, die für den Skript-Medientyp konfiguriert sind.

  3. Bearbeiten Sie bei Bedarf die Werte der Skriptparameter. Die Bearbeitung wirkt sich nur auf den Testvorgang aus; die tatsächlichen Werte werden nicht geändert.

  4. Klicken Sie auf Test.

Beim Testen eines konfigurierten Skript-Medientyps werden {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} und Benutzermakros in ihre Werte aufgelöst, Makros, die sich auf Ereignisse beziehen (z. B. {HOST.HOST}, {ITEM.LASTVALUE} usw.), werden jedoch nicht aufgelöst, da beim Testen kein zugehöriges Ereignis vorhanden ist, aus dem die Details ermittelt werden können. Beachten Sie, dass Makros innerhalb von {ALERT.SUBJECT}- und {ALERT.MESSAGE}-Makros ebenfalls nicht aufgelöst werden. Wenn der Wert von {ALERT.SUBJECT} beispielsweise aus "Problem: {EVENT.NAME}" besteht, wird das Makro {EVENT.NAME} nicht aufgelöst.

Benutzermedien

Sobald der Medientyp konfiguriert ist, gehen Sie zum Abschnitt Users → Users und bearbeiten Sie ein Benutzerprofil, indem Sie diesen Medientyp dem Benutzer zuweisen. Die Schritte zum Einrichten von Benutzermedien, die für alle Medientypen gleich sind, werden auf der Seite Medientypen beschrieben.

Beachten Sie, dass beim Definieren der Benutzermedien das Feld Send to nicht leer sein darf. Wenn dieses Feld im Alarmskript nicht verwendet wird, geben Sie eine beliebige Kombination unterstützter Zeichen ein, um die Validierungsanforderungen zu umgehen.