Áú»¢¶Ä²©

3 Verifica??es passivas e ativas

Vis?o geral

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.

Verifica??es passivas

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

<item key>\n

Resposta do agente

<HEADER><DATALEN><DATA>[\0<ERROR>]

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:

  1. Servidor abre uma conex?o TCP
  2. Servidor envia agent.ping\n
  3. Agente l¨º a requisi??o e responde com <HEADER><DATALEN>1
  4. Servidor processa o dado para receber o valor ('1' neste exemplo)
  5. Conex?o TCP ¨¦ fechada

Exemplo de fluxo para item n?o suportado:

  1. Servidor abre uma conex?o TCP
  2. Servidor envia vfs.fs.size[/nono]\n
  3. Agente l¨º a requisi??o e responde com <HEADER><DATALEN>ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
  4. Servidor processa o dado, modifica o estado do item para 'n?o suportado' com a mensagem de erro retornada
  5. Conex?o TCP ¨¦ fechada

Verifica??es Ativas

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.

Obtendo a lista de itens

Requisi??o do agente

<HEADER><DATALEN>{
           "request":"active checks",
           "host":"<hostname>"
       }

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:

  1. Agente abre uma conex?o TCP
  2. Agente requisita a lista de verifica??es ativas
  3. Servidor responde com uma lista de itens (item key, delay, lastlogsize e mtime)
  4. Agente processa a resposta
  5. Conex?o TCP ¨¦ fechada
  6. O agente coleta de forma peri¨®dica os dados

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.

Enviando os dados coletados

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:

  1. O agente abre a conex?o TCP
  2. O agente envia a lista de valores
  3. O servidor processa os dados e envia o status de volta
  4. A conex?o TCP ¨¦ fechada

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.

Protocolo XML antigo

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.

Veja tamb¨¦m