Jak się tworzy skrypty zewnętrzne w Zabbixie
Monitorowanie poza serwerem źródłowym
O czym przeczytasz w artykule:
Poprzedni artykuł dotyczący Zabbixa – „Jak się tworzy własny monitoring?” – w przydatny i ciekawy mam nadzieję sposób, przedstawił monitorowanie infrastruktury bezpośrednio z serwera źródłowego. To nie wszystkie możliwości Zabbixa. Umożliwia on również monitorowanie systemów „z boku”, czyli sprawdzanie stanu danej usługi, poprawności działania serwera, poprzez wykonywanie cyklicznie skryptów z poziomu Zabbix serwera. W Zabbixie taka pozycja nazywa się „Zewnętrzne skrypty” (ang. External Scripts).

Co to są skrypty zewnętrzne
Zewnętrzny skrypt to skrypt znajdujący się na Zabbix Serverze w katalogu podanym w pliku konfiguracyjnym:

w sekcji External scripts:

Domyślnie katalog ten znajduje się pod ścieżką:

Serwer Zabbixa może zostać zainstalowany tylko i wyłącznie na serwerach z rodziny Linux. Zewnętrzny skrypt jest wykonywany po stronie serwera Zabbix, więc ograniczeniem jest język skryptowy po stronie Zabbix Servera, który musi być dla niego zrozumiały. W ten sposób stosowanymi językami mogą być np. Python, PHP, bash itp.
Po co tworzy się skrypty
Przedstawię zastosowanie takiego monitoringu na podstawie serwerów czasu. Wytworzymy skrypt w języku bash, który sprawdzi nam opóźnienie pomiędzy serwerami NTP, a serwerem Zabbixa. Posłuży nam do tego polecenie ntpdate.
Oto jego przykładowy wynik:

Tworzymy skrypt w języku bash o nazwie: ntp.sh, który poda nam opóźnienie „delay” w milisekundach pomiędzy serwerami.

Następnie nadajemy uprawnienia wykonania dla użytkownika „zabbix” dla naszego skryptu:


Przykładowy wynik naszego skryptu to:

Posiadając już taką wartość możemy utworzyć nową pozycję w Zabbix. Tworzymy na hoście nową pozycję typu „Test zewnętrzny” (ang. External check), z kluczem jako nazwą skryptu:

Sprawdzając „Ostatnie dane” jesteśmy w stanie zaobserwować jak generuje się wykres opóźnień pomiędzy serwerami w milisekundach:

Oczywiście możemy rozszerzyć funkcjonalność skryptu modyfikując linijkę:

Na:

W konsekwencji tego, za pomocą jednego skryptu możemy monitorować kilka serwerów NTP (gdyż $1 w języku bash oznacza parametr podawany przy wywołaniu skryptu).
Zmieniamy więc takową linijkę w skrypcie, modyfikujemy pozycję i dodajemy dla porównania nową z ntp2.pl.




W ten sposób jesteśmy w stanie monitorować dwa serwery NTP i opóźnienie, z jakim przekazują dane. 0.03 ms to naprawdę bardzo dobry wynik.
Jednak zastosowanie Zewnętrznych skryptów niesie ze sobą pewne ograniczenia:
- klucz musi być unikalny
- czas wykonania skryptu nie może być dłuższy niż wartość w polu Timeout zadeklarowana w pliku /etc/zabbix/zabbix_server.conf
- serwer musi zwrócić jedną wartość (int, float, boolean, text)
- skrypt wykonywany musi być napisany w języku zrozumiałym dla systemu operacyjnego Linux
- użytkownik „zabbix” musi mieć uprawnienia do wykonania skryptu
Jeśli ten temat był dla Ciebie zbyt skomplikowany i nadal nie wiesz w jakim celu wykonuje się daną operację, skontaktuj się z nami. Z chęcią pomożemy! 😉
Jeśli chcesz podnieść swoje kompetencje w zakresie systemu Zabbix:
- zaprosimy Twojego admina na certyfikowane szkolenie, na którym krok po kroku pokażemy jak Zabbix może mu pomóc w codziennej pracy
- pokażemy jak duże możliwości integracji daje Zabbix i jak dużo Twojego czasu może oszczędzić
- pomożemy właściwie skonfigurować Zabbixa
Jeśli chcesz powierzyć nam monitoring IT:
- wspólnie określmy parametry dostępności usługi
- określimy newralgiczne obszary dla Ciebie i Twojego biznesu
- dostarczymy Ci raporty z przeprowadzonych działań

Zabbix 3.0 & 4.0 Certified Professional z kilkuletnim doświadczeniem w administracji systemami Windows i Linux. Absolwent WSB w Gdańsku na kierunku Informatyka, ze specjalizacją Inżynieria Sieci Komputerowych. Prowadzi szkolenia autorskie Zabbix.
Mateusz Dampc
Aplitt sp. z o.o. | Starszy Administrator ds. Monitoringu Infrastruktury