Rozdział ten przedstawia szczegółowo pasywne i aktywne sprawdzenia wykonywane przez agenta Zabbix.
Do komunikacji z agentem Zabbix używa protokołu komunikacyjnego opartego o JSON.
Istnieje kilka definicji uzytych w szczegółach protokołu wykorzystywanego przez Zabbix:
<HEADER> - "ZBXD\x01" (5 bajtów) <DATALEN> - długość danych (8 bajtów). 1 zostanie sformatowane jako 01/00/00/00/00/00/00/00 (osiem bajtów w HEX, liczba 64-bitowa)
Żeby nie przekroczyć pojemności pamięci (potencjalnie) serwer Zabbix jest ograniczony do przyjmowania tylko 64MB w jednym połączeniu, gdy jest używany protokół Zabbix w wersjach 2.2.0-2.2.2 (128MB przed 2.2.0, nielimitowany przed Zabbix 2.0.3).
Od 2.2.3, limit został zmieniony z powrotem na 128MB, żeby utrzymać kompatybilność ze starszymi wersjami Zabbix, ponieważ gdy proces z ograniczeniem do 128MB wysyłał dane do innego z ograniczeniem do 64MB, mogło to spowodować całkowite odrzucenie danych z powodu przekroczenia limitu.
Sprawdzenie pasywne jest prostym zapytaniem o dane. Serwer lub proxy Zabbix pyta o jakieś dane (na przykład, obciążenie CPU), a agent Zabbix odsyła rezultaty.
Zapytanie serwera
<klucz pozycji>\n
Odpowiedź agenta
<HEADER><DATALEN><DATA>
Na przykład:
Sprawdzenia aktywne wymagają więcej przetwarzania. Agent najpierw musi pobrać z serwera(ów) listę pozycji do niezależnego przetwarzania.
Serwery do pobrania sprawdzeń aktywnych są wpisane w parametrze 'ServerActive' w pliku konfiguracji agenta. Częstotliwość odpytywania tych sprawdzeń jest ustawiona w parametrze 'RefreshActiveChecks' w tym samym pliku konfiguracji. Jednakże, jeżeli odświeżenie się nie uda, zostanie powtórzone dokładnie za 60 sekund. Następnie agent okresowo będzie wysyłał nowe wartości do serwera(ów).
Zapytanie agenta
<HEADER><DATALEN>{ "request":"active checks", "host":"<nazwa_hosta>" }
Odpowiedź serwera
{ "response":"success", "data":[ { "key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]", "delay":"30", "lastlogsize":"0" }, { "key":"agent.version", "delay":"600" } ] }
Serwer musi odpowiedzieć poprawnie. Dla każdej zwróconej pozycji musi istnieć key i delay. Dla pozycji typu “Log”, musi również istnieć lastlogsize.
Na przykład:
Agent wysyła
<HEADER><DATALEN>{ "request":"agent data", "data":[ { "host":"<nazwa_hosta>", "key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]", "value":" 13039:20090907:184546.759 zabbix_agentd started. ZABBIX 1.6.6 (revision {7836}).", "lastlogsize":80, "clock":1252926015 }, { "host":"<nazwa_hosta>", "key":"agent.version", "value":"1.6.6", "clock":1252926015 } ], "clock":1252926016 }
Odpowiedź serwera
<HEADER><DATALEN>{ "response":"success", "info":"Processed 2 Failed 0 Total 2 Seconds spent 0.002070" }
Na przykład: