Skrypty

Przegląd

W sekcji Alerty > Skrypty można konfigurować i zarządzać zdefiniowanymi przez użytkownika skryptami globalnymi.

To menu jest dostępne tylko dla użytkowników typu SuperAdmin.

Skrypty globalne, w zależności od skonfigurowanego zakresu, a także uprawnień użytkownika, są dostępne do wykonania:

  • Z poziomu menu hosta w różnych miejscach frontendu (Pulpit nawigacyjny, Problemy, Najnowsze dane, Mapy itd.).
  • Z poziomu 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 „1” w konfiguracji proxy.

Wykonywanie skryptów globalnych 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 skryptów globalnych na serwerze Zabbix jest domyślnie wyłączone.

Wyświetlana jest lista istniejących skryptów wraz ze szczegółowymi informacjami.

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, z poziomu menu hosta lub z poziomu 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, nazwa nie jest klikalna.
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 nie jest tutaj wyświetlana żadna informacja.
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 użyć tej opcji, zaznacz pola wyboru przed odpowiednimi skryptami i kliknij Usuń.

Korzystanie z filtra

Możesz użyć filtra, aby wyświetlić tylko interesujące Cię skrypty. Aby poprawić wydajność wyszukiwania, dane są przeszukiwane z nierozwiązanymi makrami.

Łącze Filter jest dostępne nad listą skryptów. Po jego kliknięciu pojawi się filtr, za pomocą którego możesz filtrować skrypty według nazwy i zakresu.

Konfigurowanie skryptu globalnego

Zaleca się używanie funkcji makr zamiast zwykłych makr w skryptach globalnych w celu zwiększenia bezpieczeństwa, ponieważ makra nie są automatycznie zabezpieczane.

Atrybuty skryptu:

Parametr Opis
Nazwa Unikalna nazwa skryptu.
Na przykład Clear /tmp filesystem
Zakres Zakres skryptu - operacja działania, ręczne działanie na hoście lub ręczne działanie na zdarzeniu. To ustawienie określa, gdzie można używać skryptu - w zdalnych poleceniach operacji działania, z menu hosta lub z menu zdarzenia.
Ustawienie zakresu na „Action operation” udostępnia skrypt wszystkim użytkownikom mającym dostęp do Alerts > Actions.
Jeśli skrypt jest faktycznie używany w działaniu, nie można zmienić jego zakresu z „action operation”.
Obsługa makr
Zakres wpływa na zakres 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 działania, ponieważ operacje działania są wykonywane automatycznie.
Makro {MANUALINPUT} umożliwia określenie danych wejściowych podczas wykonywania skryptu. Jest obsługiwane w skryptach ręcznego działania na hoście i ręcznego działania na zdarzeniu.
Aby dowiedzieć się, które inne makra są obsługiwane, wyszukaj „Trigger-based notifications and commands/Trigger-based commands”, „Manual host action scripts” oraz „Manual event action scripts” w tabeli obsługiwanych makr. Pamiętaj, że jeśli makro może zostać rozwinięte do wartości zawierającej spacje (na przykład nazwa hosta), należy je odpowiednio ująć w cudzysłowy.
Ś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żane, np. Main menu/Sub menu1/Sub menu2. Podczas uzyskiwania dostępu do skryptów za pośrednictwem menu hosta/zdarzenia w sekcjach monitorowania będą one uporządkowane zgodnie z podanymi katalogami.
To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Manual host action” lub „Manual event action”.
Typ Kliknij odpowiedni przycisk, aby wybrać typ skryptu:
URL, Webhook, Script, SSH, Telnet lub polecenie IPMI.
Typ URL jest dostępny tylko wtedy, gdy jako Zakres wybrano „Manual host action” lub „Manual event action”.
Typ skryptu: URL
URL Określ adres URL umożliwiają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 Zakres powyżej).
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.view
Wartoś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 typu Webhook.
W wartościach parametrów obsługiwane są makra i niestandardowe makra użytkownika. Obsługa makr zależy od zakresu skryptu (zobacz Zakres powyżej).
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 Zakres powyżej).
Zobacz także: konfiguracja mediów typu 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: Script
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 serwerze - 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 server - skrypt zostanie wykonany wyłącznie przez Zabbix server.
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 Zakres powyżej). 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 „Password”.
Plik klucza publicznego Wprowadź ścieżkę do pliku klucza publicznego.
To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Public key”.
Plik klucza prywatnego Wprowadź ścieżkę do pliku klucza prywatnego.
To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Public key”.
Hasło klucza Wprowadź hasło klucza.
To pole jest dostępne, jeśli jako metodę uwierzytelniania wybrano „Public key”.
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 Zakres powyżej). 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 Zakres powyżej). Obsługiwane są niestandardowe makra użytkownika.
Typ skryptu: IPMI
Polecenie Wprowadź polecenie IPMI.
Obsługa makr zależy od zakresu skryptu (zobacz Zakres powyżej). 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 All dla wszystkich grup hostów).
Grupa użytkowników Wybierz grupę użytkowników, dla której skrypt będzie dostępny (lub All dla wszystkich grup użytkowników).
To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Manual host action” lub „Manual event action”.
Wymagane uprawnienia do hosta Wybierz poziom uprawnień dla grupy hostów - Read lub Write. Tylko użytkownicy z wymaganym poziomem uprawnień będą mieć dostęp do wykonywania skryptu.
To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Manual host action” lub „Manual event action”.
Konfiguracja zaawansowana Kliknij nagłówek Konfiguracja zaawansowana, aby wyświetlić opcje konfiguracji zaawansowanej.
To pole jest wyświetlane tylko wtedy, gdy jako Zakres wybrano „Manual host action” lub „Manual event action”.

Konfiguracja zaawansowana

Opcje konfiguracji zaawansowanej są dostępne w zwijanej sekcji Konfiguracja zaawansowana:

Parametr Opis
Włącz dane wejściowe użytkownika 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 dane wejściowe użytkownika.
Monit o dane wejściowe Wprowadź niestandardowy tekst zachęcający do wprowadzenia danych przez użytkownika. Ten tekst zostanie wyświetlony nad polem wprowadzania w wyskakującym oknie Ręczne dane wejściowe.
Aby wyświetlić podgląd wyskakującego okna Ręczne dane wejściowe, kliknij Testuj dane wejściowe użytkownika. Podgląd umożliwia także sprawdzenie, czy ciąg wejściowy jest zgodny z regułą walidacji danych wejściowych (zobacz poniższe parametry).
Obsługa makr i makr użytkownika zależy od zakresu skryptu (zobacz Zakres w ogólnych parametrach konfiguracji skryptu).
Typ danych wejściowych Wybierz typ ręcznie wprowadzanych danych:
Ciąg - pojedynczy ciąg;
Lista rozwijana - wartość jest wybierana spośród wielu opcji listy rozwijanej.
Opcje listy rozwijanej Wprowadź unikatowe wartości listy rozwijanej danych wejściowych użytkownika w postaci listy rozdzielanej 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 Typ danych wejściowych wybrano opcję „Lista rozwijana”.
Domyślny ciąg wejściowy Wprowadź domyślny ciąg danych wejściowych użytkownika (lub pozostaw puste).
To pole zostanie zweryfikowane za pomocą wyrażenia regularnego podanego w polu Reguła walidacji danych wejściowych.
Wprowadzona tutaj wartość będzie domyślnie wyświetlana w wyskakującym oknie Ręczne dane wejściowe.
To pole jest wyświetlane tylko wtedy, gdy jako Typ danych wejściowych wybrano opcję „Ciąg”.
Reguła walidacji danych wejściowych Wprowadź wyrażenie regularne w celu zweryfikowania ciągu danych wejściowych użytkownika.
Obsługiwane są globalne wyrażenia regularne.
To pole jest wyświetlane tylko wtedy, gdy jako Typ danych wejściowych wybrano opcję „Ciąg”.
Włącz potwierdzenie Zaznacz pole wyboru, aby wyświetlać komunikat potwierdzenia przed wykonaniem skryptu. Ta funkcja może być szczególnie przydatna w przypadku potencjalnie niebezpiecznych operacji (takich jak skrypt ponownego uruchomienia) lub operacji, których wykonanie może zająć dużo czasu.
Tekst potwierdzenia Wprowadź niestandardowy tekst potwierdzenia dla wyskakującego okna potwierdzenia włączonego za pomocą powyższego pola wyboru (na przykład System zdalny zostanie uruchomiony ponownie. Czy na pewno?). Aby zobaczyć, jak będzie wyglądał tekst, kliknij Testuj potwierdzenie obok pola.
Obsługiwane są makra i niestandardowe makra użytkownika.
Uwaga: makra nie zostaną rozwinięte podczas testowania komunikatu potwierdzenia.

Jeśli skonfigurowano zarówno ręczne dane wejściowe użytkownika, jak i komunikat potwierdzenia, zostaną one wyświetlone w kolejnych wyskakujących oknach.

Ręczne wprowadzanie danych przez użytkownika

Ręczne wprowadzanie danych przez użytkownika umożliwia podanie niestandardowego parametru przy każdym wykonaniu skryptu. Eliminuje to konieczność tworzenia wielu podobnych skryptów użytkownika, różniących się tylko jednym parametrem.

Na przykład podczas wykonywania skryptu można chcieć podać inną liczbę całkowitą lub inny adres URL.

Aby włączyć ręczne wprowadzanie danych przez użytkownika:

  • użyj makra {MANUALINPUT} w skrypcie (polecenia, skrypt, parametr skryptu) w wymaganym miejscu lub w polu URL skryptów URL;
  • w zaawansowanej konfiguracji skryptu włącz ręczne wprowadzanie danych przez użytkownika i skonfiguruj opcje wprowadzania.

Po włączeniu wprowadzania danych przez użytkownika przed wykonaniem skryptu zostanie wyświetlone użytkownikowi okno podręczne Ręczne wprowadzanie danych z prośbą o podanie niestandardowej 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 wybranie wartości z listy rozwijanej zawierającej wstępnie zdefiniowane opcje:

Ręczne wprowadzanie danych przez użytkownika jest dostępne tylko dla skryptów, których zakres to „Ręczne działanie na hoście” lub „Ręczne działanie na zdarzeniu”.

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 wyskakującym oknie, które pojawia się po uruchomieniu skryptu. Wartością zwracaną skryptu jest standardowe wyjście:

  • Jeśli skrypt zakończy się pomyślnie (kod wyjścia 0), wartość zwracana jest ograniczona do 16 MB (włącznie z końcowymi białymi znakami, które są obcinane).
  • Jeśli skrypt zakończy się błędem (niezerowy kod wyjścia), wartością zwracaną jest standardowe wyjście błędów ograniczone do 2 KB.

Domyślnie Zabbix nie przechowuje rozszerzonego wyjścia skryptu. Aby zachować pełne szczegóły wyjścia, można zaimplementować rejestrowanie w samym skrypcie (np. przekierować wyjście do lokalnego pliku dziennika).

Należy pamiętać, że w przypadku skryptów wykonywanych zarówno na serwerze Zabbix, jak i na Zabbix proxy, obowiązują również ograniczenia bazy danych.

Poniżej znajduje się przykład skryptu i okna wyniku:

uname -v
/tmp/non_existing_script.sh
echo "This script was started by {USER.USERNAME}"

Wynik skryptu nie wyświetla samego skryptu.

Przekroczenie limitu czasu skryptu na agencie Zabbix

Może wystąpić sytuacja, w której podczas wykonywania skryptu zostanie przekroczony limit czasu.

Poniżej przedstawiono przykład skryptu uruchamianego na agencie Zabbix oraz okno z wynikiem:

sleep 5
df -h

W tym przypadku wyświetlony zostanie następujący komunikat o błędzie:

Timeout while executing a shell script.

Aby uniknąć takich sytuacji, zaleca się zoptymalizowanie samego skryptu (w powyższym przykładzie wartości „5”) zamiast dostosowywania parametru Timeout w konfiguracji agenta Zabbix i konfiguracji serwera Zabbix.

Jeśli parametr Timeout został zmieniony w konfiguracji agenta Zabbix, zostanie wyświetlony 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 agenta Zabbix, ale konieczne jest również zmodyfikowanie parametru Timeout w konfiguracji serwera Zabbix.

Limit czasu skryptu na agentach aktywnych

Możliwe jest wykonywanie skryptów na agentach działających wyłącznie w trybie aktywnym. Gdy wykonanie skryptu zostanie wyzwolone przez operację akcji lub ręczne uruchomienie skryptu, polecenie jest dołączane do konfiguracji aktywnego sprawdzania i wykonywane, gdy aktywny agent je otrzyma.

Skrypty uruchamiane ręcznie są wysyłane do aktywnego agenta wraz z limitem czasu serwer/proxy dla wykonania skryptu. Zwiększ domyślny limit czasu serwer/proxy dla wykonania skryptu. Limit czasu musi być większy niż częstotliwość odświeżania aktywnego sprawdzania, w przeciwnym razie limit czasu 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 wyników:

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