3 Niestandardowe skrypty alertów
Przegląd
Jeśli nie jesteś zadowolony z istniejących typów mediów do wysyłania alertów, istnieje alternatywny sposób wykonania tego zadania. Możesz utworzyć skrypt, który będzie obsługiwał powiadomienie w wybrany przez Ciebie sposób.
Niestandardowe skrypty alertów są wykonywane na serwerze Zabbix. Skrypty te muszą znajdować się w katalogu określonym w parametrze AlertScriptsPath w pliku konfiguracyjnym serwera.
Oto przykład niestandardowego skryptu alertu:
#!/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 sprawdza kod zakończenia wykonywanych poleceń i skryptów. Każdy kod zakończenia inny niż 0 jest uznawany za błąd wykonania polecenia. W takich przypadkach Zabbix spróbuje ponownie wykonać nieudaną operację.
Zmienne środowiskowe nie są zachowywane ani tworzone dla skryptu, więc należy obsłużyć je jawnie.
Konfiguracja
Aby skonfigurować niestandardowe skrypty alertów jako typ mediów:
- Przejdź do Alerts → Media types.
- Kliknij Create media type.
Karta Media type zawiera ogólne atrybuty typu mediów:

Wszystkie wymagane pola wejściowe są oznaczone czerwoną gwiazdką.
Następujące parametry są specyficzne dla typu mediów skryptu:
| Parameter | Description |
|---|---|
| Script name | Wprowadź nazwę pliku skryptu (np. notification.sh), który znajduje się w katalogu określonym w parametrze konfiguracji serwera AlertScriptsPath. |
| Script parameters | Dodaj opcjonalne parametry skryptu, które zostaną przekazane do skryptu jako argumenty wiersza poleceń w kolejności, w jakiej zostały zdefiniowane. Parametry skryptu obsługują makra {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} oraz wszystkie makra obsługiwane w powiadomieniach, a także makra użytkownika. |
Szczegóły dotyczące konfiguracji domyślnych wiadomości i opcji przetwarzania alertów znajdują się w sekcji common media type parameters.
Nawet jeśli skrypt alertu nie używa domyślnych wiadomości, szablony wiadomości dla typów operacji używanych przez ten typ mediów nadal muszą być zdefiniowane. W przeciwnym razie powiadomienie nie zostanie wysłane.
Jeśli skonfigurowano więcej niż jeden typ mediów skryptu, skrypty te mogą być przetwarzane równolegle przez procesy alertera.
Łączna liczba procesów alertera jest ograniczona przez parametr StartAlerters w pliku konfiguracji serwera.
Testowanie
Aby przetestować skonfigurowany typ mediów skryptu:
-
Znajdź odpowiedni skrypt na liście typów mediów.
-
Kliknij Test w ostatniej kolumnie listy; formularz testowy zostanie otwarty w oknie podręcznym. Formularz testowy będzie zawierał taką samą liczbę parametrów, jaka została skonfigurowana dla typu mediów skryptu.
-
W razie potrzeby edytuj wartości parametrów skryptu. Edycja wpływa wyłącznie na procedurę testową; rzeczywiste wartości nie zostaną zmienione.
-
Kliknij Test.

Podczas testowania skonfigurowanego typu mediów skryptu {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} oraz makra użytkownika zostaną rozwinięte do swoich wartości, ale makra powiązane z zdarzeniami (np. {HOST.HOST}, {ITEM.LASTVALUE} itd.) nie zostaną rozwinięte, ponieważ podczas testowania nie ma powiązanego zdarzenia, z którego można pobrać szczegóły. Należy pamiętać, że makra wewnątrz makr {ALERT.SUBJECT} i {ALERT.MESSAGE} również nie zostaną rozwinięte. Na przykład, jeśli wartość {ALERT.SUBJECT} jest złożona z "Problem: {EVENT.NAME}", to makro {EVENT.NAME} nie zostanie rozwinięte.
Media użytkownika
Po skonfigurowaniu typu mediów przejdź do sekcji Users → Users i edytuj profil użytkownika, przypisując ten typ mediów do użytkownika. Kroki konfiguracji mediów użytkownika, wspólne dla wszystkich typów mediów, są opisane na stronie Media types.
Należy pamiętać, że podczas definiowania mediów użytkownika pole Send to nie może być puste. Jeśli to pole nie jest używane w skrypcie alertu, wprowadź dowolną kombinację obsługiwanych znaków, aby ominąć wymagania walidacji.