Instalação e Configuração do Zabbix 3 e Agentes (Linux/Windows)
Este artigo demonstrará como instalar e configurar o Zabbix 3 em um servidor Debian e clientes (agentes) Windows e Linux (Debian).
Parte 3: Visão geral dos Agentes
O principal trabalho dos agentes Zabbix consiste em obter informações locais (hds, memória, estatísticas do processador etc) dos alvos onde eles são executados e enviar os dados para um servidor Zabbix ou proxy para ser posteriormente processados e analisados.
Em caso de falhas (como um disco rígido cheio ou um serviço travado), o servidor Zabbix pode alertar os administradores de uma máquina em particular que reportou a falha.
Os agentes do Zabbix são extremamente eficientes por que usam métodos nativos do sistema para obter informações estatísticas.
O Zabbix usa um protocolo de comunicação baseado em JSON para comunicar-se com o agente Zabbix.
Requisição do servidor:
<item key>
Resposta do agente:
<HEADER><DATALEN><DATA>[\0<ERROR>]
Por exemplo, para itens suportados:
Para itens não suportados:
Os servidores para obter a lista de verificações ativas estão listados no parâmetro 'ServerActive' do arquivo de configuração do agente. A frequência de perguntar estas verificações está definida no parâmetro 'RefreshActiveChecks' neste mesmo arquivo de configuração. Porém, se a obtenção da lista de verificação ativa falhar, está definido no código-fonte do agente tentar obtê-la novamente em 60 segundos.
O agente então envia periodicamente os novos valores para o(s) servidor(es).
Por exemplo:
A lista completa de argumentos e parâmetros de configuração podem ser encontradas na documentação oficial do Zabbix.
Exemplos específicos de uso de parâmetros de linha de comando:
shell> zabbix_agentd --print
shell> zabbix_agentd -t "mysql.ping" -c /etc/zabbix/zabbix_agentd.conf
Se você tentar executá-lo como 'root', está definido no código-fonte do agente trocar para o usuário 'zabbix', que deve estar presente no seu sistema. Você somente pode executar o agente como 'root' se você modificar o parâmetro 'AllowRoot' no arquivo de configuração do agente.
Em caso de falhas (como um disco rígido cheio ou um serviço travado), o servidor Zabbix pode alertar os administradores de uma máquina em particular que reportou a falha.
Os agentes do Zabbix são extremamente eficientes por que usam métodos nativos do sistema para obter informações estatísticas.
O Zabbix usa um protocolo de comunicação baseado em JSON para comunicar-se com o agente Zabbix.
Verificações passiva e ativa
Os agentes do Zabbix podem realizar tanto verificações passivas quanto ativas.Verificações passivas
Uma verificação passiva é uma simples requisição de dados. O servidor Zabbix ou proxy pede uma informação (por exemplo, ping) e o agente Zabbix retorna o resultado para o servidor.Requisição do servidor:
<item key>
Resposta do agente:
<HEADER><DATALEN><DATA>[\0<ERROR>]
Por exemplo, para itens suportados:
- Servidor abre uma conexão TCP
- Servidor envia agent.ping
- Agente recebe a requisição e responde com <HEADER><DATALEN>1
- Servidor processa os dados e obtém o valor, '1' em nosso caso
- Conexão TCP é fechada
Para itens não suportados:
- Servidor abre uma conexão TCP
- Servidor envia vfs.fs.size[/nono]
- Agente recebe a requisição e responde com <DATALEN>ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
- Servidor processa os dados, muda o estado do item para não suportado com a mensagem de erro específica
- Conexão TCP é fechada
Verificações ativas
Verificações ativas requerem mais processamentos complexos. O agente deve primeiramente obter do servidor uma lista de itens para processamento independente.Os servidores para obter a lista de verificações ativas estão listados no parâmetro 'ServerActive' do arquivo de configuração do agente. A frequência de perguntar estas verificações está definida no parâmetro 'RefreshActiveChecks' neste mesmo arquivo de configuração. Porém, se a obtenção da lista de verificação ativa falhar, está definido no código-fonte do agente tentar obtê-la novamente em 60 segundos.
O agente então envia periodicamente os novos valores para o(s) servidor(es).
Obtendo a lista de itens
Agente envia:
<HEADER><DATALEN>{
"request":"active checks",
"host":"<hostname>"
}
Servidor responde:
<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 devem existir, independente do item ser um item de log ou não.
Por exemplo:
- Agent abre uma conexão TCP
- Agente pergunta por uma lista de verificações
- Servidor responde com uma lista de itens (item key, delay)
- Agente recebe a resposta
- A conexão TCP é fechada
- Agente começa a obter os dados periodicamente
Enviando os dados coletados
Agente envia:
<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 Zabbix Agent [<hostname>]. Zabbix 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
}
Resposta do servidor:
<HEADER><DATALEN>{
"response":"success",
"info":"processed: 3; failed: 0; total: 3; seconds spent: 0.003534"
}
Por exemplo:
- Agente abre uma conexão TCP
- Agente envia uma lista de valores
- Servidor processa os dados e envia o status de volta
- Conexão TCP é fechada
Plataformas suportadas
O agente Zabbix é suportado em:- Linux
- IBM AIX
- FreeBSD
- NetBSD
- OpenBSD
- HP-UX
- Mac OS X
- Solaris: 9, 10, 11
- Windows: todos as versões desktop e servidor a partir da 2000
Execução dos processos do agente
O agente Zabbix é executado no host a ser monitorado como um serviço.| Parâmetro | Descrição |
|---|---|
| Agentes UNIX e Windows | |
| -c --config <arquivo-de-configuração> | Caminho absoluto para o arquivo de configuração. Você pode usar esta opção para especificar um arquivo de configuração diferente do arquivo padrão. No UNIX, o padrão é /usr/local/etc/zabbix_agentd.conf ou definido pelas variáveis de compilação --sysconfdir ou --prefix No Windows, o padrão é c:zabbix_agentd.conf |
| -p --print | Exibe itens conhecidos. Nota: se o arquivo de configuração não está no caminho padrão, você deve especificar o caminho para retornar resultados de parâmetros de usuário também. |
| -t --test <item key> | Testa o item específico. Nota: se o arquivo de configuração não está no caminho padrão, você deve especificar o caminho para retornar resultados de parâmetros de usuário também. |
| -h --help | Exibe informação de ajuda |
| -V --version | Exibe número da versão |
| Somente agente UNIX: | |
| -R --runtime-control log_level_increase | Com controles de tempo de execução você pode alterar o nível de log do agente. |
A lista completa de argumentos e parâmetros de configuração podem ser encontradas na documentação oficial do Zabbix.
Exemplos específicos de uso de parâmetros de linha de comando:
- exibe todos os itens e valores padrões do agente
- testando um parâmetro do usuário com a chave "mysql.ping" definida no arquivo de configuração específico
shell> zabbix_agentd --print
shell> zabbix_agentd -t "mysql.ping" -c /etc/zabbix/zabbix_agentd.conf
Contexto de execução do serviço do agente (usuário)
O agente Zabbix no UNIX foi desenvolvido para executar como um usuário não-root no UNIX.Se você tentar executá-lo como 'root', está definido no código-fonte do agente trocar para o usuário 'zabbix', que deve estar presente no seu sistema. Você somente pode executar o agente como 'root' se você modificar o parâmetro 'AllowRoot' no arquivo de configuração do agente.