[comment]: # ({f372a49b-bdae00e2})
# 4 Zabbix agent 2 plugin protocol

Zabbix agent 2 protocol is based on code, size and data model.

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

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

|Typ|Größe|Kommentare|
|-----|-----|----------|
|Byte|	4	|Payload-Typ, derzeit wird nur JSON unterstützt.|

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

[comment]: # ({8edb0275-6f328f94})
### Größe

|Type|Größe|Kommentare|
|-----|-----|----------|
|Byte|	4	|Größe der aktuellen Nutzlast in Byte.|

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

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

|Typ|Größe|Kommentare|
|-----|-----|----------|
|Byte|	Durch das Feld *Größe* definiert	|JSON-formatierte Daten.|

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

[comment]: # ({60a41fe8-265b88ca})
##### Definition der Payload-Daten

###### Allgemeine Daten

Diese Parameter sind in allen Anfragen/Antworten vorhanden:

|Name|Type|Comments|
|-----|--------|----------|
|id	  |uint32|Für Anfragen – die fortlaufende Kennung, die verwendet wird, um Anfragen mit Antworten zu verknüpfen. Eindeutig innerhalb einer Anfragerichtung (d. h. vom Agent zum Plugin oder vom Plugin zum Agent).<br>Für Antworten – ID der entsprechenden Anfrage.|
|type|uint32|Der Anfragetyp.|

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

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

Eine von einem Plugin gesendete Anfrage, um eine Protokollmeldung in die Agent-Protokolldatei zu schreiben.

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

Für Log-Anfragen spezifische Parameter:

|Name|Type|Comments|
|---------|--------|----------|
|severity|uint32|Der Schweregrad der Meldung (Log-Level).|
|message|string|Die zu protokollierende Meldung.|

*Beispiel:*

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

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

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

Eine Anfrage, die vom Agent während der Startphase des Agent gesendet wird, um bereitgestellte Metriken zu erhalten und ein Plugin zu registrieren.

|   |   |
|---|---|
|direction|Agent → Plugin|
|response|ja|

Für Registrierungsanfragen spezifische Parameter:

|Name|Type|Comments|
|---------|--------|----------|
|version|string|Die Protokollversion <major>.<minor>|

*Beispiel:*

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

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

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

Antwort des Plugins auf die Registrierungsanfrage.

|   |   |
|---|---|
|Richtung|Plugin → Agent|
|Antwort|n/v|

Für Registrierungsantworten spezifische Parameter:

|Name|Type|Kommentare|
|---------|--------|----------|
|name|string|Der Plugin-Name.|
|metrics|array of strings (optional)|Die im Plugin verwendeten Metriken mit Beschreibungen. Gibt RegisterMetrics() zurück. Fehlt, wenn ein Fehler zurückgegeben wird.|
|interfaces|uint32 (optional)|Die Bitmaske der vom Plugin unterstützten Schnittstellen. Fehlt, wenn ein Fehler zurückgegeben wird.|
|error|string (optional)|Eine Fehlermeldung, die zurückgegeben wird, wenn ein Plugin nicht gestartet werden kann. Fehlt, wenn Metriken zurückgegeben werden.|

*Beispiele:*

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

oder

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

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

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

Eine Anfrage zur Ausführung der Funktion Start der Runner-Schnittstelle.

|   |   |
|---|---|
|Richtung|Agent → Plugin|
|Antwort|nein|

Die Anfrage hat keine spezifischen Parameter; sie enthält nur die Parameter der [allgemeinen Daten](#common-data).

*Beispiel:*

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

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

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

Eine vom Agent gesendete Anfrage, um ein Plugin herunterzufahren.

|   |   |
|---|---|
|direction|Agent → Plugin|
|response|nein|

Die Anfrage hat keine spezifischen Parameter; sie enthält nur Parameter der [allgemeinen Daten](#common-data).

*Beispiel:*

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

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

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

Eine Anfrage zur Ausführung der Export-Funktion der Exporter-Schnittstelle.

|   |   |
|---|---|
|direction|Agent → plugin|
|response|nein|

Für Export-Anfragen spezifische Parameter:

|Name|Type|Comments|
|---------|--------|----------|
|key|string|Der Plugin-Schlüssel.|
|parameters|array of strings (optional)|Die Parameter für die Export-Funktion.|

*Beispiel:*

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

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

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

Antwort der Export-Funktion der Exporter-Schnittstelle.

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

Für Export-Antworten spezifische Parameter:

|Name|Type|Comments|
|---------|--------|----------|
|value|string (optional) |Antwortwert der Export-Funktion. Fehlt, wenn ein Fehler zurückgegeben wird.|
|error|string (optional) |Fehlermeldung, wenn die Export-Funktion nicht erfolgreich ausgeführt wurde. Fehlt, wenn value zurückgegeben wird.|

*Beispiele:*

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

oder

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

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

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

Eine Anfrage zur Ausführung der Funktion *Configure* der Schnittstelle *Configurator*.

|   |   |
|---|---|
|Richtung|Agent → Plugin|
|Antwort|n/v|

Für *Configure*-Anfragen spezifische Parameter:

|Name|Type|Comments|
|---------|--------|----------|
|global_options|JSON object|JSON-Objekt mit globalen Agent-Konfigurationsoptionen.|
|private_options|JSON object (optional)|JSON-Objekt mit privaten Plugin-Konfigurationsoptionen, falls angegeben.|

*Beispiel:*

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

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

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

Eine Anfrage zur Ausführung der Funktion *Validate* der Schnittstelle *Configurator*.

|   |   |
|---|---|
|direction|Agent → plugin|
|response|ja|

Spezifische Parameter für *Validate*-Anfragen:

|Name|Type|Comments|
|---------|--------|----------|
|private_options|JSON object (optional)|JSON-Objekt mit privaten Plugin-Konfigurationsoptionen, falls angegeben.|

*Beispiel:*

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

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

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

Antwort der *Validate*-Funktion der *Configurator*-Schnittstelle.

|   |   |
|---|---|
|Richtung|plugin → Agent|
|Antwort|n/a|

Für *Validate*-Antworten spezifische Parameter:

|Name|Type|Kommentare|
|---------|--------|----------|
|error|string (optional)|Eine Fehlermeldung, die zurückgegeben wird, wenn die Validate-Funktion nicht erfolgreich ausgeführt wird. Fehlt, wenn sie erfolgreich ausgeführt wurde.|

*Beispiel:*

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

oder

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

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

[comment]: # translation:outdated

