Benutzerdefinierte Alarmskripte

Ü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:

  1. Gehen Sie zu Alerts > Media types.
  2. Klicken Sie auf Create media type.
  3. Geben Sie die Parameter des Skript-Medientyps im Formular ein.

Die Registerkarte Media type enthält allgemeine Attribute des Medientyps:

Alle Pflichtfelder sind mit einem roten Sternchen gekennzeichnet.

Die folgenden Parameter gelten speziell für den Skript-Medientyp:

Parameter Beschreibung
Script name Geben Sie den Namen der Skriptdatei (z. B. notification.sh) ein, die sich in dem Verzeichnis befindet, das im Serverkonfigurationsparameter AlertScriptsPath angegeben ist.
Script parameters 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, und außerdem Benutzermakros.

Weitere Informationen zum Konfigurieren von Standardnachrichten und Optionen für die Alarmverarbeitung finden Sie unter allgemeine Medientypparameter.

Auch wenn ein Alarmskript keine Standardnachrichten verwendet, müssen die Nachrichtenvorlagen für die von diesem Medientyp verwendeten Aktionstypen 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 wird durch den Parameter StartAlerters in der Serverkonfigurationsdatei begrenzt.

Testen

Um einen konfigurierten Script-Medientyp zu testen:

  1. Suchen Sie das relevante Script 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 Script-Medientyp konfiguriert sind.

  3. 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.

  4. 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.