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 Benachrichtigungsskripte 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 Benachrichtigungsskript:

#!/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 sich von 0 unterscheidet, 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 sollten daher explizit behandelt werden.

Konfiguration

So konfigurieren Sie benutzerdefinierte Alarm-Skripte als Medientyp:

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

Die Registerkarte Medientyp enthält allgemeine Attribute des Medientyps:

Alle erforderlichen 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 im Server-Konfigurationsparameter 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, ebenso wie Benutzermakros.

Weitere Informationen zur Konfiguration von Standardnachrichten und Optionen für die Alarmverarbeitung finden Sie unter Allgemeine Medientyp-Parameter.

Auch wenn ein Alarm-Skript keine Standardnachrichten verwendet, müssen die Nachrichtenvorlagen für die von diesem Medientyp verwendeten Vorgangsarten dennoch definiert werden. 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 Server-Konfigurationsdatei begrenzt.

Testen

So testen Sie einen konfigurierten Skript-Medientyp:

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

  2. Klicken Sie in der letzten Spalte der Liste auf Test; ein Testformular wird in einem Pop-up-Fenster geöffnet. Das Testformular enthält dieselbe Anzahl an 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 es während des Tests kein zugehöriges Ereignis gibt, aus dem die Details abgerufen werden könnten. 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.

Benutzermedien

Sobald der Medientyp konfiguriert ist, wechseln Sie zum Abschnitt Benutzer → Benutzer und bearbeiten Sie ein Benutzerprofil, indem Sie diesem Benutzer diesen Medientyp 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 Senden an nicht leer sein darf. Wenn dieses Feld im Warnskript nicht verwendet wird, geben Sie eine beliebige Kombination unterstützter Zeichen ein, um die Validierungsanforderungen zu umgehen.