[comment]: # ({f372a49b-bdae00e2})
# 4 Protocole du plug-in agent Zabbix 2

Le protocole de l'agent Zabbix 2 est basé sur le code, la taille et le modèle de données.

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

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

|Type|Size|Commentaires|
|-----|-----|----------|
|Byte|	4	|Type de charge utile, actuellement seul JSON est pris en charge.|

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

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

|Type|Taille|Commentaires|
|-----|-----|----------|
|Octet|	4	|Taille de la charge utile actuelle en octets.|

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

[comment]: # ({0351e98f-e3974519})
### Données de charge utile

|Type|Taille|Commentaires|
|-----|-----|----------|
|Octet|	Défini par le champ *Taille*	|Données au format JSON.|

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

[comment]: # ({60a41fe8-265b88ca})
##### Définition des données de charge utile

###### Données communes

Ces paramètres sont présents dans toutes les requêtes/réponses :

|Name|Type|Comments|
|-----|--------|----------|
|id	  |uint32|Pour les requêtes - l’identifiant incrémentiel utilisé pour associer les requêtes aux réponses. Il est unique dans une direction de requête donnée (c’est-à-dire de l’agent vers le plugin ou du plugin vers l’agent).<br>Pour les réponses - l’ID de la requête correspondante.|
|type|uint32|Le type de requête.|

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

[comment]: # ({3cf942f4-6bdfbea5})
###### Requête de journalisation

Une requête envoyée par un plugin pour écrire un message de journal dans le fichier journal de l'agent.

|   |   |
|---|---|
|direction|plugin → agent|
|response|non|

Paramètres spécifiques aux requêtes de journalisation :

|Name|Type|Comments|
|---------|--------|----------|
|severity|uint32|La sévérité du message (niveau de journalisation).|
|message|string|Le message à journaliser.|

*Exemple :*

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

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

[comment]: # ({3640b089-38f1c088})
###### Requête d’enregistrement

Une requête envoyée par l’agent pendant la phase de démarrage de l’agent afin d’obtenir les métriques fournies pour enregistrer un plugin.

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

Paramètres spécifiques aux requêtes d’enregistrement :

|Name|Type|Comments|
|---------|--------|----------|
|version|string|La version du protocole <major>.<minor>|

*Exemple :*

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

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

[comment]: # ({92946a86-d8c62312})
###### Réponse d’enregistrement

Réponse du plugin à la requête d’enregistrement.

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

Paramètres spécifiques aux réponses d’enregistrement :

|Name|Type|Comments|
|---------|--------|----------|
|name|string|Le nom du plugin.|
|metrics|array of strings (optional)|Les métriques avec leurs descriptions telles qu’utilisées dans le plugin. Renvoie RegisterMetrics(). Absent si une erreur est renvoyée.|
|interfaces|uint32 (optional)|Le masque de bits des interfaces prises en charge par le plugin. Absent si une erreur est renvoyée.|
|error|string (optional)|Un message d’erreur renvoyé si un plugin ne peut pas être démarré. Absent si des métriques sont renvoyées.|

*Exemples :*

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

ou

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

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

[comment]: # ({f190dd1a-0b67f229})
###### Requête de démarrage

Une requête pour exécuter la fonction Start de l’interface Runner.

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

La requête n’a pas de paramètres spécifiques, elle contient uniquement les paramètres des [données communes](#common-data).

*Exemple :*

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

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

[comment]: # ({fce4bba2-f3c8d489})
###### Requête de terminaison

Une requête envoyée par l'agent pour arrêter un plugin.

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

La requête n'a pas de paramètres spécifiques, elle contient uniquement les paramètres des [données communes](#common-data).

*Exemple :*

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

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

[comment]: # ({43e9416d-b2754963})
###### Requête d’export

Une requête pour exécuter la fonction Export de l’interface Exporter.

|   |   |
|---|---|
|direction|agent → plugin|
|response|non|

Paramètres spécifiques aux requêtes d’export :

|Name|Type|Comments|
|---------|--------|----------|
|key|string|La clé du plugin.|
|parameters|array of strings (optional)|Les paramètres de la fonction Export.|

*Exemple :*

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

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

[comment]: # ({33f976c2-27e2bd0c})
###### Réponse d’export

Réponse de la fonction Export de l’interface Exporter.

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

Paramètres spécifiques aux réponses d’export :

|Name|Type|Comments|
|---------|--------|----------|
|value|string (optional) |Valeur de réponse de la fonction Export. Absent si une erreur est renvoyée.|
|error|string (optional) |Message d’erreur si la fonction Export ne s’est pas exécutée avec succès. Absent si une valeur est renvoyée.|

*Exemples :*

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

ou

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

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

[comment]: # ({96eb71cf-15a7dce0})
###### Configurer la requête

Une requête pour exécuter la fonction *Configure* de l’interface *Configurator*.

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

Paramètres spécifiques aux requêtes *Configure* :

|Name|Type|Comments|
|---------|--------|----------|
|global_options|JSON object|Objet JSON contenant les options de configuration globales de l’agent.|
|private_options|JSON object (optional)|Objet JSON contenant les options de configuration privées du plugin, si elles sont fournies.|

*Exemple :*

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

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

[comment]: # ({99291487-14b279bc})
###### Valider la requête

Une requête pour exécuter la fonction *Validate* de l’interface *Configurator*.

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

Paramètres spécifiques aux requêtes *Validate* :

|Name|Type|Comments|
|---------|--------|----------|
|private_options|JSON object (optional)|Objet JSON contenant les options de configuration privées du plugin, si elles sont fournies.|

*Exemple :*

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

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

[comment]: # ({3b19fa95-9a73001b})
###### Valider la réponse

Réponse de la fonction *Validate* de l’interface *Configurator*.

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

Paramètres spécifiques aux réponses de *Validate* :

|Name|Type|Comments|
|---------|--------|----------|
|error|string (optional)|Message d’erreur renvoyé si la fonction Validate ne s’exécute pas correctement. Absent si l’exécution réussit.|

*Exemple :*

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

ou

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

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


