3 Skrypty
Przegląd
W sekcji Alerty > Skrypty można konfigurować i zarządzać globalnymi skryptami zdefiniowanymi przez użytkownika.
To menu jest dostępne tylko dla użytkowników typu SuperAdmin.
Globalne skrypty, w zależności od skonfigurowanego zakresu oraz uprawnień użytkownika, są dostępne do wykonania:
- Z menu hosta w różnych miejscach frontendu (Pulpit nawigacyjny, Problemy, Najnowsze dane, Mapy itd.).
- Z menu zdarzenia.
- Mogą być uruchamiane jako operacja akcji.
Skrypty są wykonywane na agencie Zabbix, serwerze Zabbix (proxy) lub wyłącznie na serwerze Zabbix. Zobacz także Wykonywanie poleceń.
Zdalne skrypty są domyślnie wyłączone zarówno na agencie Zabbix, jak i na proxy Zabbix. Można je włączyć w następujący sposób:
- W przypadku zdalnych poleceń wykonywanych na agencie Zabbix:
- dodając parametr AllowKey=system.run[<command>,*] dla każdego dozwolonego polecenia w konfiguracji agenta; * oznacza tryb wait i nowait;
- W przypadku zdalnych poleceń wykonywanych na proxy Zabbix:
- Ostrzeżenie: Nie ma potrzeby włączania zdalnych poleceń na proxy Zabbix, jeśli zdalne polecenia są wykonywane na agencie Zabbix monitorowanym przez proxy Zabbix. Jeśli jednak wymagane jest wykonywanie zdalnych poleceń na proxy Zabbix, ustaw parametr EnableRemoteCommands na wartość „1” w konfiguracji proxy.
Wykonywanie globalnych skryptów na serwerze Zabbix można wyłączyć, ustawiając EnableGlobalScripts=0 w konfiguracji serwera.
W przypadku nowych instalacji, począwszy od Zabbix 7.0, wykonywanie globalnych skryptów na serwerze Zabbix jest domyślnie wyłączone.
Wyświetlana jest lista istniejących skryptów wraz ze szczegółami.

Wyświetlane dane:
| Kolumna | Opis |
|---|---|
| Nazwa | Nazwa skryptu. Kliknięcie nazwy skryptu otwiera formularz konfiguracji skryptu. |
| Zakres | Zakres skryptu - operacja akcji, ręczna akcja hosta lub ręczna akcja zdarzenia. To ustawienie określa, gdzie skrypt jest dostępny - w zdalnych poleceniach operacji akcji, w menu hosta lub w menu zdarzenia. |
| Używany w akcjach | Wyświetlane są wszystkie akcje, w których używany jest skrypt, poprzedzone łączną liczbą tych akcji. Kliknięcie nazwy akcji otwiera formularz konfiguracji akcji. Jeśli użytkownik nie ma uprawnień do akcji, nazwy nie można kliknąć. |
| Typ | Wyświetlany jest typ skryptu - polecenie typu URL, Webhook, Skrypt, SSH, Telnet lub IPMI. |
| Wykonaj na | Wyświetlana jest informacja, czy skrypt zostanie wykonany na agencie Zabbix, proxy Zabbix lub serwerze, czy wyłącznie na serwerze Zabbix. |
| Polecenia | Wyświetlane są wszystkie polecenia, które zostaną wykonane w ramach skryptu. W przypadku webhooków nic nie jest tutaj wyświetlane. |
| Grupa użytkowników | Wyświetlana jest grupa użytkowników, dla której skrypt jest dostępny (lub Wszystkie w przypadku wszystkich grup użytkowników). |
| Grupa hostów | Wyświetlana jest grupa hostów, dla której skrypt jest dostępny (lub Wszystkie w przypadku wszystkich grup hostów). |
| Dostęp do hosta | Wyświetlany jest poziom uprawnień dla grupy hostów - Odczyt lub Zapis. Dostęp do wykonywania skryptu będą mieli tylko użytkownicy z wymaganym poziomem uprawnień. |
Aby skonfigurować nowy skrypt, kliknij przycisk Utwórz skrypt w prawym górnym rogu.
Opcje masowej edycji
Przycisk poniżej listy oferuje jedną opcję masowej edycji:
- Usuń - usuń skrypty
Aby skorzystać z tej opcji, zaznacz pola wyboru przed odpowiednimi skryptami i kliknij Usuń.
Korzystanie z filtra
Możesz użyć filtra, aby wyświetlić tylko skrypty, które Cię interesują. Aby poprawić wydajność wyszukiwania, dane są przeszukiwane z nierozwiązanymi makrami.
Łącze Filtr jest dostępne nad listą skryptów. Po jego kliknięciu staje się dostępny filtr, za pomocą którego możesz filtrować skrypty według nazwy i zakresu.

Konfigurowanie skryptu globalnego

W celu zwiększenia bezpieczeństwa zaleca się używanie funkcji makr zamiast zwykłych makr w skryptach globalnych, ponieważ makra nie są automatycznie zabezpieczane.
Atrybuty skryptu:
| Parametr | Opis | |
|---|---|---|
| Nazwa | Unikalna nazwa skryptu. Na przykład Clear /tmp filesystem |
|
| Zakres | Zakres skryptu - operacja akcji, ręczna akcja hosta lub ręczna akcja zdarzenia. To ustawienie określa, gdzie można używać skryptu - w zdalnych poleceniach operacji akcji, z menu hosta lub z menu zdarzenia. Ustawienie zakresu na „Operacja akcji” udostępnia skrypt wszystkim użytkownikom mającym dostęp do Alerty > Akcje. Jeśli skrypt jest używany w akcji, nie można zmienić jego zakresu z „operacja akcji”. Obsługa makr Zakres wpływa na zestaw dostępnych makr. Na przykład makra związane z użytkownikiem ( {USER.*}) są obsługiwane w skryptach, aby umożliwić przekazywanie informacji o użytkowniku, który uruchomił skrypt. Nie są jednak obsługiwane, jeśli zakres skryptu to operacja akcji, ponieważ operacje akcji są wykonywane automatycznie.Makro {MANUALINPUT} umożliwia określenie danych wejściowych podczas wykonywania skryptu. Jest obsługiwane w skryptach ręcznej akcji hosta i ręcznej akcji zdarzenia. Aby sprawdzić, które inne makra są obsługiwane, wyszukaj pozycje „Trigger-based notifications and commands/Trigger-based commands”, „Manual host action scripts” oraz „Manual event action scripts” w tabeli obsługiwanych makr. Jeśli makro może zostać rozwinięte do wartości zawierającej spacje (na przykład nazwa hosta), pamiętaj o użyciu cudzysłowów, gdy jest to wymagane. |
|
| Ścieżka menu | Żądana ścieżka menu skryptu. Na przykład Default lub Default/ spowoduje wyświetlenie skryptu w odpowiednim katalogu. Menu mogą być zagnieżdżone, np. Main menu/Sub menu1/Sub menu2. Podczas uzyskiwania dostępu do skryptów za pośrednictwem menu hosta/zdarzenia w sekcjach monitorowania zostaną one uporządkowane zgodnie z podanymi katalogami.To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Ręczna akcja hosta” lub „Ręczna akcja zdarzenia”. |
|
| Typ | Kliknij odpowiedni przycisk, aby wybrać typ skryptu: URL, Webhook, Skrypt, SSH, Telnet lub polecenie IPMI. Typ URL jest dostępny tylko wtedy, gdy jako Zakres wybrano „Ręczna akcja hosta” lub „Ręczna akcja zdarzenia”. |
|
| Typ skryptu: URL | ||
| URL | Określ adres URL zapewniający szybki dostęp z menu hosta lub menu zdarzenia. Obsługiwane są makra i niestandardowe makra użytkownika. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). Użyj makra {MANUALINPUT} w tym polu, aby móc określić dane wejściowe podczas wykonywania skryptu, na przykład: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.viewWartości makr nie mogą być kodowane w adresie URL. |
|
| Otwórz w nowym oknie | Określa, czy adres URL ma zostać otwarty w nowej, czy w tej samej karcie przeglądarki. | |
| Typ skryptu: Webhook | ||
| Parametry | Określ zmienne webhooka jako pary atrybut-wartość. Zobacz także: konfiguracja mediów Webhook. Wartości parametrów obsługują makra i niestandardowe makra użytkownika. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). |
|
| Skrypt | Wprowadź kod JavaScript w edytorze modalnym, który otwiera się po kliknięciu pola parametru lub ikony ołówka obok niego. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). Zobacz także: konfiguracja mediów Webhook, Dodatkowe obiekty JavaScript. |
|
| Limit czasu | Limit czasu wykonywania JavaScript (1-60 s, domyślnie 30 s). Obsługiwane są przyrostki czasu (np. 30s, 1m). |
|
| Typ skryptu: Skrypt | ||
| Wykonaj na | Kliknij odpowiedni przycisk, aby wykonać skrypt powłoki na: Zabbix agent - skrypt zostanie wykonany przez Zabbix agent (jeśli pozycja system.run jest dozwolona) na hoście Zabbix proxy lub serwer - skrypt zostanie wykonany przez Zabbix proxy lub serwer, zależnie od tego, czy host jest monitorowany przez proxy czy serwer. Zostanie wykonany na proxy, jeśli włączono tę funkcję za pomocą EnableRemoteCommands. Zostanie wykonany na serwerze, jeśli skrypty globalne są włączone za pomocą parametru serwera EnableGlobalScripts. Zabbix serwer - skrypt zostanie wykonany wyłącznie przez Zabbix serwer. Ta opcja nie będzie dostępna, jeśli skrypty globalne są wyłączone za pomocą parametru serwera EnableGlobalScripts. |
|
| Polecenia | Wprowadź pełną ścieżkę do poleceń, które mają zostać wykonane w ramach skryptu. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). Obsługiwane są niestandardowe makra użytkownika. |
|
| Typ skryptu: SSH | ||
| Metoda uwierzytelniania | Wybierz metodę uwierzytelniania - hasło lub klucz publiczny. | |
| Nazwa użytkownika | Wprowadź nazwę użytkownika. | |
| Hasło | Wprowadź hasło. To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Hasło”. |
|
| Plik klucza publicznego | Wprowadź ścieżkę do pliku klucza publicznego. To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Klucz publiczny”. |
|
| Plik klucza prywatnego | Wprowadź ścieżkę do pliku klucza prywatnego. To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Klucz publiczny”. |
|
| Hasło klucza | Wprowadź hasło klucza. To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Klucz publiczny”. |
|
| Port | Wprowadź port zdalnej usługi SSH na docelowym hoście, z którym Zabbix nawiąże połączenie. | |
| Polecenia | Wprowadź polecenia. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). Obsługiwane są niestandardowe makra użytkownika. |
|
| Typ skryptu: Telnet | ||
| Nazwa użytkownika | Wprowadź nazwę użytkownika. | |
| Hasło | Wprowadź hasło. | |
| Port | Wprowadź port zdalnej usługi Telnet na docelowym hoście, z którym Zabbix nawiąże połączenie. | |
| Polecenia | Wprowadź polecenia. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). Obsługiwane są niestandardowe makra użytkownika. |
|
| Typ skryptu: IPMI | ||
| Polecenie | Wprowadź polecenie IPMI. Obsługa makr zależy od zakresu skryptu (zobacz powyżej Zakres). Obsługiwane są niestandardowe makra użytkownika. |
|
| Opis | Wprowadź opis skryptu. | |
| Grupa hostów | Wybierz grupę hostów, dla której skrypt będzie dostępny (lub Wszystkie, aby udostępnić go dla wszystkich grup hostów). | |
| Grupa użytkowników | Wybierz grupę użytkowników, dla której skrypt będzie dostępny (lub Wszystkie, aby udostępnić go dla wszystkich grup użytkowników). To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Ręczna akcja hosta” lub „Ręczna akcja zdarzenia”. |
|
| Wymagane uprawnienia do hosta | Wybierz poziom uprawnień dla grupy hostów - Odczyt lub Zapis. Tylko użytkownicy z wymaganym poziomem uprawnień będą mogli wykonywać skrypt. To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Ręczna akcja hosta” lub „Ręczna akcja zdarzenia”. |
|
| Konfiguracja zaawansowana | Kliknij nagłówek Konfiguracja zaawansowana, aby wyświetlić opcje konfiguracji zaawansowanej. To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Ręczna akcja hosta” lub „Ręczna akcja zdarzenia”. |
|
Zaawansowana konfiguracja
Opcje zaawansowanej konfiguracji są dostępne w zwijanej sekcji Zaawansowana konfiguracja:

| Parameter | Description |
|---|---|
| Enable user input | Zaznacz pole wyboru, aby włączyć ręczne wprowadzanie danych przez użytkownika przed wykonaniem skryptu. Ręcznie wprowadzone dane użytkownika zastąpią wartość makra {MANUALINPUT} w skrypcie. Zobacz także: Ręczne wprowadzanie danych przez użytkownika. |
| Input prompt | Wprowadź własny tekst zachęty dla niestandardowego danych wejściowych użytkownika. Ten tekst będzie wyświetlany nad polem wejściowym w oknie podręcznym Ręczne wprowadzanie danych. Aby zobaczyć podgląd okna Ręczne wprowadzanie danych, kliknij Test user input. Podgląd umożliwia również sprawdzenie, czy ciąg wejściowy jest zgodny z regułą walidacji danych wejściowych (zobacz parametry poniżej). Obsługa makr i makr użytkownika zależy od zakresu skryptu (zobacz Scope w ogólnych parametrach konfiguracji skryptu). |
| Input type | Wybierz typ ręcznego wprowadzania danych: String - pojedynczy ciąg; Dropdown - wartość jest wybierana z wielu opcji listy rozwijanej. |
| Dropdown options | Wprowadź unikalne wartości dla listy rozwijanej danych wejściowych użytkownika jako listę rozdzielaną przecinkami. Aby uwzględnić pustą opcję na liście rozwijanej, dodaj dodatkowy przecinek na początku, w środku lub na końcu listy. To pole jest wyświetlane tylko wtedy, gdy jako Input type wybrano 'Dropdown'. |
| Default input string | Wprowadź domyślny ciąg dla danych wejściowych użytkownika (lub brak). To pole będzie sprawdzane względem wyrażenia regularnego podanego w polu Input validation rule. Wprowadzona tutaj wartość będzie domyślnie wyświetlana w oknie Ręczne wprowadzanie danych. To pole jest wyświetlane tylko wtedy, gdy jako Input type wybrano 'String'. |
| Input validation rule | Wprowadź wyrażenie regularne do sprawdzania poprawności ciągu danych wejściowych użytkownika. Obsługiwane są globalne wyrażenia regularne. To pole jest wyświetlane tylko wtedy, gdy jako Input type wybrano 'String'. |
| Enable confirmation | Zaznacz pole wyboru, aby wyświetlić komunikat potwierdzenia przed wykonaniem skryptu. Ta funkcja może być szczególnie przydatna w przypadku potencjalnie niebezpiecznych operacji (takich jak skrypt restartu) lub takich, które mogą zająć dużo czasu. |
| Confirmation text | Wprowadź własny tekst potwierdzenia dla okna potwierdzenia włączanego przez powyższe pole wyboru (na przykład Zdalny system zostanie uruchomiony ponownie. Czy na pewno?). Aby zobaczyć, jak będzie wyglądał tekst, kliknij Test confirmation obok pola. Makra i niestandardowe makra użytkownika są obsługiwane. Uwaga: makra nie zostaną rozwinięte podczas testowania komunikatu potwierdzenia. |
Jeśli skonfigurowano zarówno ręczne wprowadzanie danych przez użytkownika, jak i komunikat potwierdzenia, zostaną one wyświetlone w kolejnych oknach podręcznych.
Ręczne dane wejściowe użytkownika
Ręczne dane wejściowe użytkownika pozwalają podać własny parametr przy każdym uruchomieniu skryptu. Eliminuje to konieczność tworzenia wielu podobnych skryptów użytkownika różniących się tylko jednym parametrem.
Na przykład podczas uruchamiania skryptu można chcieć podać inną liczbę całkowitą lub inny adres URL.
Aby włączyć ręczne dane wejściowe użytkownika:
- użyj makra {MANUALINPUT} w skrypcie (polecenia, skrypt, parametr skryptu) tam, gdzie jest to wymagane; lub w polu URL w skryptach URL;
- w zaawansowanej konfiguracji skryptu włącz ręczne dane wejściowe użytkownika i skonfiguruj opcje wejściowe.
Po włączeniu danych wejściowych użytkownika, przed wykonaniem skryptu użytkownikowi zostanie wyświetlone wyskakujące okno Ręczne dane wejściowe z prośbą o podanie własnej wartości. Podana wartość zastąpi {MANUALINPUT} w skrypcie.
W zależności od konfiguracji użytkownik zostanie poproszony o wprowadzenie wartości tekstowej:

Lub o wybranie wartości z listy rozwijanej wcześniej zdefiniowanych opcji:

Ręczne dane wejściowe użytkownika są dostępne tylko dla skryptów, w których zakres to „Ręczna akcja hosta” lub „Ręczna akcja zdarzenia”.
Wykonywanie skryptu i wynik
Skrypty uruchamiane przez serwer Zabbix są wykonywane w kolejności opisanej na stronie wykonywania poleceń.
Wynik skryptu jest wyświetlany w oknie podręcznym, które pojawia się po uruchomieniu skryptu. Wartość zwracana przez skrypt to standardowe wyjście:
- Jeśli skrypt zakończy się pomyślnie (kod zakończenia
0), wartość zwracana jest ograniczona do 16 MB (w tym końcowe białe znaki, które są obcinane). - Jeśli skrypt zakończy się błędem (niezerowy kod zakończenia), wartość zwracana to standardowy błąd ograniczony do 2 KB.
Zabbix domyślnie nie przechowuje rozszerzonego wyjścia skryptu. Aby zachować pełne szczegóły wyjścia, można zaimplementować logowanie wewnątrz samego skryptu (np. przekierować wyjście do lokalnego pliku dziennika).
Należy pamiętać, że w przypadku skryptów wykonywanych na serwerze Zabbix lub proxy Zabbix obowiązują również limity bazy danych.
Poniżej znajduje się przykład skryptu i okna z wynikiem:
uname -v
/tmp/non_existing_script.sh
echo "Ten skrypt został uruchomiony przez {USER.USERNAME}"

Wynik skryptu nie wyświetla samego skryptu.
Limit czasu skryptu w Zabbix agent
Możesz napotkać sytuację, w której podczas wykonywania skryptu wystąpi przekroczenie limitu czasu.
Poniżej przedstawiono przykład skryptu uruchamianego w Zabbix agent oraz okno z wynikiem:
sleep 5
df -h

Komunikat o błędzie w tym przypadku jest następujący:
Timeout while executing a shell script.
Aby uniknąć takich sytuacji, zaleca się zoptymalizowanie samego skryptu (w powyższym przykładzie „5”) zamiast dostosowywania parametru Timeout w konfiguracji Zabbix agent oraz konfiguracji serwera Zabbix.
Jeśli parametr Timeout został zmieniony w konfiguracji Zabbix agent, pojawi się następujący komunikat o błędzie:
Get value from agent failed: ZBX_TCP_READ() timed out.
Oznacza to, że modyfikacja została wprowadzona w konfiguracji Zabbix agent, ale konieczna jest również zmiana parametru Timeout w konfiguracji serwera Zabbix.
Limit czasu skryptu na agentach aktywnych
Możliwe jest wykonywanie skryptów tylko na agentach działających w trybie aktywnym. Gdy wykonanie skryptu zostanie wyzwolone przez operację akcji lub ręczne uruchomienie skryptu, polecenie jest dołączane do konfiguracji aktywnych kontroli i wykonywane, gdy aktywny agent je otrzyma.
Ręczne skrypty są wysyłane do aktywnego agenta wraz z limitem czasu serwera/proxy na wykonanie skryptu. Zwiększ domyślny limit czasu wykonywania skryptu dla serwera/proxy. Limit czasu musi być wyższy niż częstotliwość odświeżania aktywnych kontroli, w przeciwnym razie zostanie przekroczony, zanim aktywny agent otrzyma skrypt i będzie mógł zwrócić wynik.
Limit czasu skryptu na serwerze/proxy Zabbix
Poniżej przedstawiono przykład skryptu uruchamianego na serwerze Zabbix oraz okno z wynikiem:
sleep 11
df -h

Zaleca się również zoptymalizowanie samego skryptu (zamiast dostosowywania parametru TrapperTimeout do odpowiedniej wartości (w naszym przypadku > 11) poprzez modyfikację konfiguracji serwera Zabbix).