Esta se??o fornece detalhes sobre as verifica??es passivas e ativas utilizando o Áú»¢¶Ä²© Agent.
O Áú»¢¶Ä²© utiliza o protocolo JSON para se comunicar com o Áú»¢¶Ä²© Agent.
Existem algumas defini??es detalhadas nos protocolos utilizados pelo Áú»¢¶Ä²©:
<HEADER> - "ZBXD\x01" (5 bytes)
<DATALEN> - tamanho do dado (8 bytes). 1 ser¨¢ formatado como 01/00/00/00/00/00/00/00 (oito bytes em HEX, n¨²mero de 64 bit)
Para evitar o potencial esgotamento de mem¨®ria o Áú»¢¶Ä²© Server ¨¦ limitado a aceitar no m¨¢ximo 128MB em uma mesma conex?o atrav¨¦s do protocolo.
Uma verifica??o passiva ¨¦ uma requisi??o simples de dados. O Áú»¢¶Ä²© Server/Proxy solicita algum dado (por exemplo a carga de CPU) e o Áú»¢¶Ä²© Agent retorna com o resultado.
Requisi??o do servidor
Resposta do agente
No exemplo de resposta acima, a parte enviada entre colchetes ¨¦ opcional e s¨® ¨¦ enviada para itens (chaves) n?o suportadas.
Exemplo de fluxo com item suportado:
Exemplo de fluxo para item n?o suportado:
As verifica??es ativas requerem um processamento mais complexo. Primeiramente o agente deve obter do servidor a lista com os itens a serem processados de forma independente.
Os servidores que ir?o fornecer a lista de verifica??es ativas dever?o estar listados no par?metro 'ServerActive' do arquivo de configura??o do agente. A frequ¨ºncia de consulta ¨¤ estas verifica??es ¨¦ definida pelo par?metro 'RefreshActiveChecks' neste mesmo arquivo. Caso uma requisi??o da lista de itens ativos falhe, uma nova tentativa ser¨¢ feita a cada 60 segundos com aquele servidor.
O agente envia os dados periodicamente aos servidores.
Requisi??o do agente
Resposta do servidor
<HEADER><DATALEN>{
"response":"success",
"data":[
{
"key":"log[/home/zabbix/logs/zabbix_agentd.log]",
"delay":30,
"lastlogsize":0,
"mtime":0
},
{
"key":"agent.version",
"delay":600,
"lastlogsize":0,
"mtime":0
},
{
"key":"vfs.fs.size[/nono]",
"delay":600,
"lastlogsize":0,
"mtime":0
}
]
}
O servidor deve responder com sucesso. Para cada item retornado todas as propriedades (key, delay, lastlogsize e mtime) dever?o estar presentes, mesmo que o item n?o seja de log.
Exemplo do fluxo:
Note que dados sens¨ªveis de configura??o podem se tornar dispon¨ªveis para terceiros que tenham acesso ¨¤ porta de 'trapper' do servidor Áú»¢¶Ä²©, quando for utilizada a verifica??o ativa. Isso ¨¦ poss¨ªvel porque qualquer um pode se passar por um agente ativo e solicitar dados de configura??o de itens; n?o ocorre autentica??o neste caso.
O agente envia os dados
<HEADER><DATALEN>{
"request":"agent data",
"data":[
{
"host":"<hostname>",
"key":"agent.version",
"value":"2.4.0",
"clock":1400675595,
"ns":76808644
},
{
"host":"<hostname>",
"key":"log[/home/zabbix/logs/zabbix_agentd.log]",
"lastlogsize":112,
"value":" 19845:20140621:141708.521 Starting Áú»¢¶Ä²© Agent [<hostname>]. Áú»¢¶Ä²© 2.4.0 (revision 50000).",
"clock":1400675595,
"ns":77053975
},
{
"host":"<hostname>",
"key":"vfs.fs.size[/nono]",
"state":1,
"value":"Cannot obtain filesystem information: [2] No such file or directory",
"clock":1400675595,
"ns":78154128
}
],
"clock": 1400675595,
"ns": 78211329
}
O servidor responde
<HEADER><DATALEN>{
"response":"success",
"info":"processed: 3; failed: 0; total: 3; seconds spent: 0.003534"
}
Se o envio de alguns itens falhar no lado do servidor (por exemplo, por que o host ou o item est?o desativados ou exclu¨ªdos), o agente n?o ir¨¢ tentar enviar novamente estes dados.
Exemplo de fluxo:
Observe no exemplo acima que o status de n?o suportado para a chave vfs.fs.size[/nono]
¨¦ indicado pela propriedade "state" tendo o valor '1' e a mensagem de erro vai na propriedade "value".
A mensagem de erro ser¨¢ limitada em 2048 caracteres no lado do servidor.
O Áú»¢¶Ä²© ir¨¢ tratar at¨¦ 16 MB de dados XML codificados em Base64, mas um ¨²nico valor decodificado n?o poder¨¢ ser superior a 64 KB ou ser¨¢ truncado para 64 KB durante a decodifica??o.