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

El protocolo 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 carga útil

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

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

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

###### Datos común

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, de agente a complemento o de complemento a 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 complemento para escribir un mensaje de registro en el archivo de registro del agente.

|   |   |
|---|---|
|direction|complemento → agente|
|response|no|

Parámetros específicos de las solicitudes de registro:

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

*Ejemplo:*

    {"id":0,"tipo":1,"gravedad":3,"mensaje":"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 complemento.

|    |    |
|---|---|
|direction|agente → plugin|
|response|sí|

Parámetros específicos para registrar solicitudes:

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

*Ejemplo:*

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

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

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

###### Registrar respuesta

Respuesta del complemento a la solicitud de registro.

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

Parámetros específicos para registrar respuestas:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|name|cadena|El nombre del complemento.|
|metrics|matriz de cadenas (opcional)|Las métricas con descripciones tal como se utilizan en el complemento. Devuelve RegisterMetrics(). Ausente si se devuelve un error.|
|interfaces|uint32 (opcional)|La máscara de bits de las interfaces admitidas por el complemento. Ausente si se devuelve un error.|
|error|cadena (opcional)|Se devuelve un mensaje de error si no se puede iniciar un complemento. 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":"error message"}

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

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

###### Solicitud de inicio

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

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

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

*Ejemplo:*

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

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

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

###### Solicitud de finalización

Una solicitud enviada por el agente para cerrar un complemento.

|    |    |
|---|---|
|direction|agente → complemento|
|response|no|

La solicitud no tiene parámetros específicos, solo contiene 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 Exportar de la interfaz Exporter.

|    |    |
|---|---|
|direction|agente → complemento|
|response|no|

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

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|key|cadena|La clave del complemento.|
|parameters|matriz de cadenas (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 exportar

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

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

Parámetros específicos para exportar respuestas:

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

*Ejemplos:*

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

o

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

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

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

###### Solicitud de configuración

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

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

Parámetros específicos de las solicitudes *Configurar*:

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

*Ejemplo:*

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

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

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

###### Solicitud de validación

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

|    |    |
|---|---|
|direction|agente → complemento|
|response|sí|

Parámetros específicos de las solicitudes *Validar*:

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

*Ejemplo:*

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

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

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

###### Respuesta de validación

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

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

Parámetros específicos de las respuestas *Validar*:

|Nombre|Tipo|Comentarios|
|---------|--------|----------|
|error|cadena (opcional)|Se devuelve un mensaje de error si la función Validar no se ejecuta correctamente. Ausente si se ejecuta exitosamente.|

*Ejemplo:*

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

o

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

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

[comment]: # translation:outdated

