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

El protocolo de Zabbix agent 2 se basa en código, tamaño y modelo de datos.

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

[comment]: # ({b65bf947-a102065d})
### Código

|Tipo|Tamaño|Comentarios|
|-----|-----|----------|
|Byte|	4	|Tipo de carga útil, actualmente solo se admite JSON.|

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

[comment]: # ({8edb0275-6f328f94})
### Tamaño

|Tipo|Tamaño|Comentarios|
|-----|-----|----------|
|Byte|	4	|Tamaño de la carga útil actual en bytes.|

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

[comment]: # ({0351e98f-e3974519})
### Datos de la carga útil

|Tipo|Tamaño|Comentarios|
|-----|-----|----------|
|Byte|	Definido por el campo *Tamaño*	|Datos en formato JSON.|

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

[comment]: # ({60a41fe8-265b88ca})
##### Definición de datos de carga útil

###### Datos comunes

Estos parámetros están presentes en todas las solicitudes/respuestas:

|Nombre|Tipo|Comentarios|
|-----|--------|----------|
|id	  |uint32|Para solicitudes: el identificador incremental utilizado para vincular solicitudes con respuestas. Único dentro de una dirección de solicitud (es decir, del agente al plugin o del plugin al agente).<br>Para respuestas: ID de la solicitud correspondiente.|
|type|uint32|El tipo de solicitud.|

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

[comment]: # ({3cf942f4-6bdfbea5})
###### Solicitud de registro

Una solicitud enviada por un plugin para escribir un mensaje de registro en el archivo de registro del agente.

|   |   |
|---|---|
|dirección|plugin → agente|
|respuesta|no|

Parámetros específicos para solicitudes de registro:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|severity|uint32|La gravedad del mensaje (nivel de registro).|
|message|string|El mensaje a registrar.|

*Ejemplo:*

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

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

[comment]: # ({3640b089-38f1c088})
###### Solicitud de registro

Una solicitud enviada por el agente durante la fase de inicio del agente para obtener las métricas proporcionadas para registrar un plugin.

|   |   |
|---|---|
|dirección|agente → plugin|
|respuesta|sí|

Parámetros específicos para solicitudes de registro:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|version|string|La versión del protocolo <mayor>.<menor>|

*Ejemplo:*

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

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

[comment]: # ({92946a86-d8c62312})
###### Respuesta de registro

Respuesta del plugin a la solicitud de registro.

|   |   |
|---|---|
|dirección|plugin → agente|
|respuesta|n/a|

Parámetros específicos para las respuestas de registro:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|name|string|El nombre del plugin.|
|metrics|array de strings (opcional)|Las métricas con descripciones tal como se usan en el plugin. Devuelve RegisterMetrics(). Ausente si se devuelve un error.|
|interfaces|uint32 (opcional)|La máscara de bits de las interfaces soportadas por el plugin. Ausente si se devuelve un error.|
|error|string (opcional)|Un mensaje de error devuelto si un plugin no puede iniciarse. Ausente si se devuelven métricas.|

*Ejemplos:*

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

o

    {"id":2,"type":3,"error":"mensaje de error"}

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

[comment]: # ({f190dd1a-0b67f229})
###### Solicitud de inicio

Una solicitud para ejecutar la función Start de la interfaz Runner.

|   |   |
|---|---|
|dirección|agente → plugin|
|respuesta|no|

La solicitud no tiene parámetros específicos, solo contiene los parámetros de [datos comunes](#common-data).

*Ejemplo:*

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

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

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

Una solicitud enviada por el agente para apagar un plugin.

|   |   |
|---|---|
|dirección|agente → plugin|
|respuesta|no|

La solicitud no tiene parámetros específicos, solo contiene los parámetros de [datos comunes](#common-data).

*Ejemplo:*

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

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

[comment]: # ({43e9416d-b2754963})
###### Solicitud de exportación

Una solicitud para ejecutar la función Export de la interfaz Exporter.

|   |   |
|---|---|
|dirección|agente → plugin|
|respuesta|no|

Parámetros específicos para solicitudes de exportación:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|key|string|La clave del plugin.|
|parameters|array de strings (opcional)|Los parámetros para la función Export.|

*Ejemplo:*

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

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

[comment]: # ({33f976c2-27e2bd0c})
###### Respuesta de exportación

Respuesta de la función Export de la interfaz Exporter.

|   |   |
|---|---|
|dirección|plugin → agente|
|respuesta|n/a|

Parámetros específicos para respuestas de exportación:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|value|string (opcional) |Valor de respuesta de la función Export. Ausente si se devuelve un error.|
|error|string (opcional) |Mensaje de error si la función Export no se ha ejecutado correctamente. Ausente si se devuelve value.|

*Ejemplos:*

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

o

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

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

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

Una solicitud para ejecutar la función *Configure* de la interfaz *Configurator*.

|   |   |
|---|---|
|dirección|agente → plugin|
|respuesta|n/a|

Parámetros específicos para solicitudes *Configure*:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|global_options|objeto JSON|Objeto JSON que contiene las opciones de configuración global del agente.|
|private_options|objeto JSON (opcional)|Objeto JSON que contiene las opciones de configuración privadas del plugin, si se proporcionan.|

*Ejemplo:*

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

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

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

Una solicitud para ejecutar la función *Validate* de la interfaz *Configurator*.

|   |   |
|---|---|
|dirección|agente → plugin|
|respuesta|sí|

Parámetros específicos para solicitudes *Validate*:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|private_options|Objeto JSON (opcional)|Objeto JSON que contiene opciones de configuración privadas del plugin, si se proporcionan.|

*Ejemplo:*

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

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

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

Respuesta de la función *Validate* de la interfaz *Configurator*.

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

Parámetros específicos para respuestas *Validate*:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|error|string (opcional)|Un mensaje de error devuelto si la función Validate no se ejecuta correctamente. Ausente si se ejecuta correctamente.|

*Ejemplo:*

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

o

    {"id":8,"type":10,"error":"mensaje de error"}

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


