Jak się tworzy skrypty zewnętrzne w monitoringu Zabbix
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).
Z tego artykułu dowiesz się:
Co to 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 się tworzy skrypty zewnętrzne
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 taką 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! 😉
Podziel się treścią: