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
Odpowiedź agenta
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
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:
Należy zauważyć, że ta (istotna) informacja o konfiguracji może być dostępna dla osób trzecich, mających dostęp do portu trappera serwera Zabbix, gdy używane są aktywne proxy. Dzieje się tak dlatego, że każdy może udawać aktywnego agenta i żądać danych konfiguracyjnych; nie jest tu stosowane uwierzytelnianie.
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"
}
Jeżeli wysyłanie jakichś wartości zakończy się błędem po stronie serwera (na przykład, ponieważ host lub pozycja zostały wyłączone lub usunięte), agent nie powtórzy wysyłanie tych wartości.
Na przykład:
Zabbix może przetworzyć do 16 MB danych XML zakodowanych w Base64, ale pojedyncza zdekodowana wartość nie powinna być dłuższa niż 64 KB, w przeciwnym przypadku zostanie ucięta do 64 KB podczas dekodowania.