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

O protocolo do Zabbix agent 2 é baseado em código, tamanho e modelo de dados.

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

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

|Tipo|Tamanho|Comentários|
|-----|-----|----------|
|Byte|	4	|Tipo de payload, atualmente apenas JSON é suportado.|

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

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

|Tipo|Tamanho|Comentários|
|-----|-----|----------|
|Byte|	4	|Tamanho da carga útil atual em bytes.|

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

[comment]: # ({0351e98f-e3974519})
### Dados do payload

|Tipo|Tamanho|Comentários|
|-----|-----|----------|
|Byte|	Definido pelo campo *Size*	|Dados formatados em JSON.|

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

[comment]: # ({60a41fe8-265b88ca})
##### Definição de dados de payload

###### Dados comuns

Esses parâmetros estão presentes em todas as solicitações/respostas:

|Nome|Tipo|Comentários|
|-----|--------|----------|
|id	  |uint32|Para solicitações - o identificador incremental usado para vincular solicitações com respostas. Único dentro de uma direção de solicitação (ou seja, do agent para o plugin ou do plugin para o agent).<br>Para respostas - ID da solicitação correspondente.|
|type|uint32|O tipo de solicitação.|

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

[comment]: # ({3cf942f4-6bdfbea5})
###### Solicitação de log

Uma solicitação enviada por um plugin para gravar uma mensagem de log no arquivo de log do agent.

|   |   |
|---|---|
|direção|plugin → agent|
|resposta|não|

Parâmetros específicos para solicitações de log:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|severity|uint32|A gravidade da mensagem (nível de log).|
|message|string|A mensagem a ser registrada.|

*Exemplo:*

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

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

[comment]: # ({3640b089-38f1c088})
###### Solicitação de registro

Uma solicitação enviada pelo agent durante a fase de inicialização do agent para obter as métricas fornecidas para registrar um plugin.

|   |   |
|---|---|
|direção|agent → plugin|
|resposta|sim|

Parâmetros específicos para solicitações de registro:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|version|string|A versão do protocolo <major>.<minor>|

*Exemplo:*

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

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

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

Resposta do plugin à solicitação de registro.

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

Parâmetros específicos para respostas de registro:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|name|string|O nome do plugin.|
|metrics|array de strings (opcional)|As métricas com descrições conforme usadas no plugin. Retorna RegisterMetrics(). Ausente se um erro for retornado.|
|interfaces|uint32 (opcional)|A máscara de bits das interfaces suportadas pelo plugin. Ausente se um erro for retornado.|
|error|string (opcional)|Uma mensagem de erro retornada se um plugin não puder ser iniciado. Ausente se as métricas forem retornadas.|

*Exemplos:*

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

ou

    {"id":2,"type":3,"error":"mensagem de erro"}

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

[comment]: # ({f190dd1a-0b67f229})
###### Solicitação de início

Uma solicitação para executar a função Start da interface Runner.

|   |   |
|---|---|
|direction|agent → plugin|
|response|não|

A solicitação não possui parâmetros específicos, ela contém apenas os parâmetros de [dados comuns](#common-data).

*Exemplo:*

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

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

[comment]: # ({fce4bba2-f3c8d489})
###### Solicitação de encerramento

Uma solicitação enviada pelo agent para desligar um plugin.

|   |   |
|---|---|
|direction|agent → plugin|
|response|não|

A solicitação não possui parâmetros específicos, apenas contém os parâmetros de [dados comuns](#common-data).

*Exemplo:*

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

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

[comment]: # ({43e9416d-b2754963})
###### Solicitação de exportação

Uma solicitação para executar a função Export da interface Exporter.

|   |   |
|---|---|
|direção|agent → plugin|
|resposta|não|

Parâmetros específicos para solicitações de exportação:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|key|string|A chave do plugin.|
|parameters|array de strings (opcional)|Os parâmetros para a função Export.|

*Exemplo:*

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

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

[comment]: # ({33f976c2-27e2bd0c})
###### Resposta de exportação

Resposta da função Export da interface Exporter.

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

Parâmetros específicos para respostas de exportação:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|value|string (opcional) |Valor de resposta da função Export. Ausente, se um erro for retornado.|
|error|string (opcional) |Mensagem de erro se a função Export não foi executada com sucesso. Ausente, se o valor for retornado.|

*Exemplos:*

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

ou

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

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

[comment]: # ({96eb71cf-15a7dce0})
###### Configurar solicitação

Uma solicitação para executar a função *Configure* da interface *Configurator*.

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

Parâmetros específicos para solicitações *Configure*:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|global_options|JSON object|Objeto JSON contendo opções globais de configuração do agent.|
|private_options|JSON object (opcional)|Objeto JSON contendo opções privadas de configuração do plugin, se fornecido.|

*Exemplo:*

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

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

[comment]: # ({99291487-14b279bc})
###### Validar solicitação

Uma solicitação para executar a função *Validate* da interface *Configurator*.

|   |   |
|---|---|
|direção|agent → plugin|
|resposta|sim|

Parâmetros específicos para solicitações *Validate*:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|private_options|objeto JSON (opcional)|Objeto JSON contendo opções de configuração privadas do plugin, se fornecido.|

*Exemplo:*

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

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

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

Resposta da função *Validate* da interface *Configurator*.

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

Parâmetros específicos para respostas *Validate*:

|Nome|Tipo|Comentários|
|---------|--------|----------|
|error|string (opcional)|Uma mensagem de erro retornada se a função Validate não for executada com sucesso. Ausente se executada com sucesso.|

*Exemplo:*

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

ou

    {"id":8,"type":10,"error":"mensagem de erro"}

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


