Powrót do bloga

Monitoring | 25 października 2019

Zrób to sam!

Zewnętrzny skrypt jako pozycja w Zabbix



O czym przeczytasz w artykule:

> zewnętrzne skrypty
> konfiguracja skryptu

Poprzedni artykuł dotyczący Zabbixa – „Jak się tworzy własny monitoring?” – przedstawił nam całkiem przydatny i w gruncie rzeczy ciekawy sposób monitorowania bezpośrednio z serwera źródłowego. To nie wszystkie dodatkowe możliwości Zabbixa. Umożliwia on też monitorowanie systemów „z boku” tzn. sprawdzanie stanu danej usługi, poprawności działania serwera, dzięki wykonywaniu cyklicznie skryptów z poziomu Zabbix serwera. W Zabbixie taka pozycja nazywa się „Zewnętrzne skrypty” (ang. External Scripts).

Blog ekspertów IT, Zrób to sam, zewnętrzny skrypt jako pozycja w Zabbix

Czym są zewnętrzne skrypty?

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ę to właściwie robi?

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 się daną operację wykonuje, wejdź na stronę https://aplitt.pl/rabbit/ lub skontaktuj się z nami. Z chęcią pomożemy! 😉 Może RabbIT jest właśnie usługą dla Ciebie?

Mateusz Dampc Aplitt Sp. z o.o. | Administrator ds. Monitoringu Infrastruktury

Zabbix 3.0 & 4.0 Certified Proffessional z 3 letnim doświadczeniem w administracji systemami Windows oraz Linux. Student WSB w Gdańsku na kierunku Informatyka ze specjalizacją Inżynieria Sieci Komputerowych.

Mateusz Dampc

Aplitt Sp. z o.o. | Administrator ds. Monitoringu Infrastruktury


Zobacz również

thumb image

26 listopada 2019

Po co mojej firmie monitoring IT?


Czytaj
thumb image

25 listopada 2019

Jak się tworzy własny monitoring IT?


Czytaj
thumb image

25 października 2019

Zabbix z lotu ptaka


Czytaj