This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

3 Pasywne i aktywne sprawdzenia agenta

Przegląd

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.

Sprawdzenia pasywne

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:

  1. Serwer otwiera połączenie TCP
  2. Serwer wysyła agent.ping\n
  3. Agent czyta zapytanie i odpowiada <HEADER><DATALEN>1
  4. Serwer przetwarza dane, żeby pobrać wartość, w tym przypadku '1'
  5. Połączenie TCP jest zamykane

Sprawdzenia aktywne

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).

Pobieranie listy pozycji

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:

  1. Agent otwiera połączenie TCP
  2. Agent pyta się o listę sprawdzeń
  3. Serwer w odpowiedzi wysyła listę pozycji (klucz pozycji, opóźnienie)
  4. Agent parsuje odpowiedź
  5. Połączenie TCP jest zamykane
  6. Agent uruchamia okresowe zbieranie danych

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.

Przesyłanie zebranych danych

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:

  1. Agent otwiera połączenie TCP
  2. Agent wysyła listę wartości
  3. Serwer przetwarza dane i odsyła status
  4. Połączenie TCP jest zamykane

Stary protokół XML

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.

Zobacz również

  1. Więcej szczegółów na temat protokołu agenta Zabbix