[comment]: # ({f372a49b-bdae00e2})
# 4 Protokół pluginów Zabbix agent 2

Protokół Zabbix agent 2 opiera się na modelu kodu, rozmiaru i danych.

[comment]: # ({/f372a49b-bdae00e2})

[comment]: # ({b65bf947-a102065d})
### Kod

|Typ|Rozmiar|Komentarze|
|-----|-----|----------|
|Bajt|	4	|Typ ładunku, obecnie obsługiwany jest tylko JSON.|

[comment]: # ({/b65bf947-a102065d})

[comment]: # ({8edb0275-6f328f94})
### Rozmiar

|Type|Size|Comments|
|-----|-----|----------|
|Bajt|	4	|Rozmiar bieżącego ładunku w bajtach.|

[comment]: # ({/8edb0275-6f328f94})

[comment]: # ({0351e98f-e3974519})
### Dane ładunku

|Typ|Rozmiar|Komentarze|
|-----|-----|----------|
|Byte|	Zdefiniowany przez pole *Rozmiar*	|Dane w formacie JSON.|

[comment]: # ({/0351e98f-e3974519})

[comment]: # ({60a41fe8-265b88ca})
##### Definicja danych payloadu

###### Wspólne dane

Te parametry są obecne we wszystkich żądaniach/odpowiedziach:

|Nazwa|Typ|Komentarze|
|-----|--------|----------|
|id	  |uint32|Dla żądań — inkrementowany identyfikator używany do powiązania żądań z odpowiedziami. Unikalny w obrębie kierunku żądania (tj. od agent do wtyczki lub od wtyczki do agent).<br>Dla odpowiedzi — ID odpowiadającego żądania.|
|type|uint32|Typ żądania.|

[comment]: # ({/60a41fe8-265b88ca})

[comment]: # ({3cf942f4-6bdfbea5})
###### Żądanie logowania

Żądanie wysyłane przez wtyczkę w celu zapisania komunikatu dziennika w pliku dziennika agenta.

|   |   |
|---|---|
|direction|plugin → agent|
|response|no|

Parametry specyficzne dla żądań logowania:

|Name|Type|Comments|
|---------|--------|----------|
|severity|uint32|Poziom ważności komunikatu (poziom logowania).|
|message|string|Komunikat do zapisania w dzienniku.|

*Przykład:*

    {"id":0,"type":1,"severity":3,"message":"message"}

[comment]: # ({/3cf942f4-6bdfbea5})

[comment]: # ({3640b089-38f1c088})
###### Żądanie rejestracji

Żądanie wysyłane przez agent podczas fazy uruchamiania agent w celu uzyskania udostępnianych metryk do zarejestrowania wtyczki.

|   |   |
|---|---|
|direction|agent → plugin|
|response|yes|

Parametry specyficzne dla żądań rejestracji:

|Name|Type|Comments|
|---------|--------|----------|
|version|string|Wersja protokołu <major>.<minor>|

*Przykład:*

    {"id":1,"type":2,"version":"1.0"}

[comment]: # ({/3640b089-38f1c088})

[comment]: # ({92946a86-d8c62312})
###### Odpowiedź rejestracji

Odpowiedź pluginu na żądanie rejestracji.

|   |   |
|---|---|
|kierunek|plugin → agent|
|odpowiedź|n/d|

Parametry specyficzne dla odpowiedzi rejestracji:

|Nazwa|Typ|Uwagi|
|---------|--------|----------|
|name|string|Nazwa pluginu.|
|metrics|array of strings (optional)|Metryki wraz z opisami używanymi w pluginie. Zwraca RegisterMetrics(). Nieobecne, jeśli zwracany jest błąd.|
|interfaces|uint32 (optional)|Maska bitowa interfejsów obsługiwanych przez plugin. Nieobecne, jeśli zwracany jest błąd.|
|error|string (optional)|Komunikat błędu zwracany, jeśli plugin nie może zostać uruchomiony. Nieobecne, jeśli zwracane są metryki.|

*Przykłady:*

    {"id":2,"type":3,"metrics":["external.test", "External exporter Test."], "interfaces": 4}

lub

    {"id":2,"type":3,"error":"error message"}

[comment]: # ({/92946a86-d8c62312})

[comment]: # ({f190dd1a-0b67f229})
###### Żądanie Start

Żądanie wykonania funkcji Start interfejsu Runner.

|   |   |
|---|---|
|direction|agent → plugin|
|response|nie|

Żądanie nie ma specyficznych parametrów, zawiera tylko parametry [wspólnych danych](#common-data).

*Przykład:*

    {"id":3,"type":4}

[comment]: # ({/f190dd1a-0b67f229})

[comment]: # ({fce4bba2-f3c8d489})
###### Żądanie zakończenia

Żądanie wysyłane przez agent w celu zamknięcia wtyczki.

|   |   |
|---|---|
|direction|agent → plugin|
|response|no|

Żądanie nie ma specyficznych parametrów, zawiera jedynie parametry [wspólnych danych](#common-data).

*Przykład:*

    {"id":3,"type":5}

[comment]: # ({/fce4bba2-f3c8d489})

[comment]: # ({43e9416d-b2754963})
###### Żądanie eksportu

Żądanie wykonania funkcji Export interfejsu Exporter.

|   |   |
|---|---|
|direction|agent → plugin|
|response|nie|

Parametry specyficzne dla żądań eksportu:

|Name|Type|Comments|
|---------|--------|----------|
|key|string|Klucz pluginu.|
|parameters|array of strings (optional)|Parametry funkcji Export.|

*Przykład:*

    {"id":4,"type":6,"key":"test.key","parameters":["foo","bar"]}

[comment]: # ({/43e9416d-b2754963})

[comment]: # ({33f976c2-27e2bd0c})
###### Odpowiedź eksportu

Odpowiedź z funkcji Export interfejsu Exporter.

|   |   |
|---|---|
|kierunek|plugin → agent|
|odpowiedź|n/d|

Parametry specyficzne dla odpowiedzi eksportu:

|Nazwa|Typ|Komentarze|
|---------|--------|----------|
|value|string (optional) |Wartość odpowiedzi z funkcji Export. Nieobecne, jeśli zwracany jest błąd.|
|error|string (optional) |Komunikat błędu, jeśli funkcja Export nie została wykonana pomyślnie. Nieobecne, jeśli zwracana jest wartość.|

*Przykłady:*

    {"id":5,"type":7,"value":"response"}

lub

    {"id":5,"type":7,"error":"error message"}

[comment]: # ({/33f976c2-27e2bd0c})

[comment]: # ({96eb71cf-15a7dce0})
###### Konfiguracja żądania

Żądanie wykonania funkcji *Configure* interfejsu *Configurator*.

|   |   |
|---|---|
|direction|agent → plugin|
|response|n/a|

Parametry specyficzne dla żądań *Configure*:

|Name|Type|Comments|
|---------|--------|----------|
|global_options|JSON object|Obiekt JSON zawierający globalne opcje konfiguracji agenta.|
|private_options|JSON object (optional)|Obiekt JSON zawierający prywatne opcje konfiguracji pluginu, jeśli zostały podane.|

*Przykład:*

    {"id":6,"type":8,"global_options":{...},"private_options":{...}}

[comment]: # ({/96eb71cf-15a7dce0})

[comment]: # ({99291487-14b279bc})
###### Walidacja żądania

Żądanie wykonania funkcji *Validate* interfejsu *Configurator*.

|   |   |
|---|---|
|direction|agent → plugin|
|response|yes|

Parametry specyficzne dla żądań *Validate*:

|Name|Type|Comments|
|---------|--------|----------|
|private_options|JSON object (optional)|Obiekt JSON zawierający prywatne opcje konfiguracji pluginu, jeśli zostały podane.|

*Przykład:*

    {"id":7,"type":9,"private_options":{...}}

[comment]: # ({/99291487-14b279bc})

[comment]: # ({3b19fa95-9a73001b})
###### Walidacja odpowiedzi

Odpowiedź z funkcji *Validate* interfejsu *Configurator*.

|   |   |
|---|---|
|direction|plugin → agent|
|response|n/a|

Parametry specyficzne dla odpowiedzi *Validate*:

|Name|Type|Comments|
|---------|--------|----------|
|error|string (optional)|Komunikat o błędzie zwracany, jeśli funkcja Validate nie zostanie wykonana pomyślnie. Nieobecny, jeśli wykonanie zakończy się powodzeniem.|

*Przykład:*

    {"id":8,"type":10}

lub

    {"id":8,"type":10,"error":"error message"}

[comment]: # ({/3b19fa95-9a73001b})
