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 Alarmskripte 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 Alarmskript:
#!/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 Fehler bei der Befehlsausführung betrachtet. In solchen Fällen versucht Zabbix, die fehlgeschlagene Ausführung zu wiederholen.
Umgebungsvariablen werden für das Skript weder beibehalten noch erstellt und müssen daher explizit behandelt werden.
Konfiguration
So konfigurieren Sie benutzerdefinierte Alarmskripte als Medientyp:
- Gehen Sie zu Alerts > Medientypen.
- 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 (z. B. notification.sh) ein, die sich in dem Verzeichnis befindet, das durch den Serverkonfigurationsparameter AlertScriptsPath angegeben ist. |
| Skriptparameter | Fügen Sie optionale Skriptparameter hinzu, die in der Reihenfolge, in der sie definiert sind, 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, und außerdem Benutzermakros. |
Weitere Informationen zur Konfiguration von Standardnachrichten und Optionen zur Alarmverarbeitung finden Sie unter allgemeine Parameter für Medientypen.
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 Serverkonfigurationsdatei begrenzt.
Testen
Um einen konfigurierten Script-Medientyp zu testen:
-
Suchen Sie das relevante Script in der Liste der Medientypen.
-
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 Script-Medientyp konfiguriert sind.
-
Bearbeiten Sie bei Bedarf die Werte der Script-Parameter. Die Bearbeitung wirkt sich nur auf den Testvorgang aus; die tatsächlichen Werte werden nicht geändert.
-
Klicken Sie auf Test.

Beim Testen eines konfigurierten Script-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 der Makros {ALERT.SUBJECT} und {ALERT.MESSAGE} 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.
Benutzer-Medien
Sobald der Medientyp konfiguriert ist, gehen Sie zum Abschnitt Benutzer > Benutzer und bearbeiten Sie ein Benutzerprofil, indem Sie diesem Benutzer diesen Medientyp zuweisen. Die Schritte zum Einrichten von Benutzer-Medien, die für alle Medientypen gleich sind, werden auf der Seite Medientypen beschrieben.
Beachten Sie, dass beim Definieren der Benutzer-Medien das Feld Senden an 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.