4 Proxy
Visão geral
O proxy do Zabbix é um processo que pode coletar dados de monitoramento de um ou mais dispositivos monitorados e enviar as informações para o server do Zabbix, funcionando essencialmente em nome do server. Todos os dados coletados são armazenados localmente em buffer e, em seguida, transferidos para o server do Zabbix ao qual o proxy pertence.
Implantar um proxy é opcional, mas pode ser muito benéfico para distribuir a carga de um único server Zabbix. Se apenas proxies coletarem dados, o processamento no server se torna menos exigente em CPU e I/O de disco.
Um proxy Zabbix é a solução ideal para monitoramento centralizado de locais remotos, filiais e redes sem administradores locais.
O proxy Zabbix requer um banco de dados separado.
Observe que os bancos de dados suportados com o proxy Zabbix são SQLite, MySQL e PostgreSQL.
Veja também: Usando proxies em um ambiente distribuído
Executando o proxy
Se instalado como pacote
O proxy Zabbix é executado como um processo daemon. O proxy pode ser iniciado executando:
systemctl start zabbix-proxy
Isso funcionará na maioria dos sistemas GNU/Linux. Em outros sistemas, pode ser necessário executar:
/etc/init.d/zabbix-proxy start
Da mesma forma, para parar/reiniciar/verificar o status do proxy Zabbix, use os seguintes comandos:
systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
Iniciar manualmente
Se o acima não funcionar, você terá que iniciá-lo manualmente.
Encontre o caminho para o binário zabbix_proxy e execute:
zabbix_proxy
Você pode usar os seguintes parâmetros de linha de comando com o Zabbix proxy:
-c --config <file> Caminho para o arquivo de configuração
-f --foreground Executa o Zabbix proxy em primeiro plano
-R --runtime-control <option> Executa funções administrativas
-T --test-config Valida o arquivo de configuração e sai
-h --help Exibe esta ajuda
-V --version Exibe o número da versão
Exemplos de execução do Zabbix proxy com parâmetros de linha de comando:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
Controle em tempo de execução
Opções de controle em tempo de execução:
| Option | Description | Target |
|---|---|---|
config_cache_reload |
Recarrega o cache de configuração. Ignorado se o cache estiver sendo carregado no momento. O proxy Zabbix ativo se conectará ao server Zabbix e solicitará os dados de configuração. O proxy Zabbix passivo solicitará os dados de configuração ao server Zabbix na próxima vez em que o server se conectar ao proxy. |
|
history_cache_clear=target |
Limpa o cache de histórico do item especificado pelo seu ID. Afeta todos os valores do item, exceto o primeiro e o último valor. |
target - ID do item. |
diaginfo[=<section>] |
Coleta informações de diagnóstico no arquivo de log do proxy. | historycache - estatísticas do cache de histórico;preprocessing - estatísticas do gerenciador de pré-processamento;locks - lista de mutexes (está vazia em sistemas BSD). |
snmp_cache_reload |
Recarrega o cache SNMP - limpa as propriedades do engine SNMP (engine time, engine boots, engine id, credenciais) para todos os hosts. Use para forçar uma limpeza global do cache ao solucionar problemas de SNMP. | |
housekeeper_execute |
Inicia o procedimento de housekeeping. Ignorado se o procedimento de housekeeping estiver em andamento no momento. | |
log_level_increase[=<target>] |
Aumenta o nível de log, afeta todos os processos se o target não for especificado. Não suportado em sistemas BSD. |
process type - todos os processos do tipo especificado (por exemplo, poller).Veja todos os tipos de processo do proxy. process type,N - tipo de processo e número (por exemplo, poller,3)pid - identificador do processo ( 1 a 65535). Para valores maiores, especifique o target como 'process type,N'. |
log_level_decrease[=<target>] |
Reduz o nível de log, afeta todos os processos se o target não for especificado. Não suportado em sistemas BSD. |
|
prof_enable[=<target>] |
Ativa a profilagem. Afeta todos os processos se o target não for especificado. A profilagem ativada fornece detalhes de todos os rwlocks/mutexes por nome de função. |
process type - todos os processos do tipo especificado (por exemplo, history syncer).Veja todos os tipos de processo do proxy. process type,N - tipo de processo e número (por exemplo, history syncer,1).pid - identificador do processo ( 1 a 65535). Para valores maiores, especifique o target como 'process type,N'.scope - rwlock, mutex, processing podem ser usados com o tipo de processo e número (por exemplo, history syncer,1,processing) ou com todos os processos do tipo (por exemplo, history syncer,rwlock). |
prof_disable[=<target>] |
Desativa a profilagem. Afeta todos os processos se o target não for especificado. |
process type - todos os processos do tipo especificado (por exemplo, history syncer).Veja todos os tipos de processo do proxy. process type,N - tipo de processo e número (por exemplo, history syncer,1).pid - identificador do processo ( 1 a 65535). Para valores maiores, especifique o target como 'process type,N'. |
Exemplo de uso do controle em tempo de execução para recarregar o cache de configuração do proxy:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload
Exemplo de uso do controle em tempo de execução para limpar o cache de histórico de um item:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R history_cache_clear=42243
Exemplos de uso do controle em tempo de execução para coletar informações de diagnóstico:
# Coletar todas as informações de diagnóstico disponíveis no arquivo de log do proxy:
zabbix_proxy -R diaginfo
# Coletar estatísticas do cache de histórico no arquivo de log do proxy:
zabbix_proxy -R diaginfo=historycache
Exemplo de uso do controle em tempo de execução para recarregar o cache SNMP:
zabbix_proxy -R snmp_cache_reload
Quando uma interface SNMPv3 é atualizada pela interface do Zabbix, o Zabbix recarregará automaticamente as novas credenciais SNMPv3 para essa interface na maioria dos casos; use -R snmp_cache_reload somente se a coleta ainda falhar após a alteração das credenciais (por exemplo, devido a inconsistências de engineBoots/engineID ou dispositivos não compatíveis com RFC), ou quando for necessário forçar uma limpeza global do cache SNMP para fins de troubleshooting.
Exemplo de uso do controle em tempo de execução para acionar a execução do housekeeper:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute
Exemplos de uso do controle em tempo de execução para alterar o nível de log:
# Aumentar o nível de log de todos os processos:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase
# Aumentar o nível de log do segundo processo poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2
# Aumentar o nível de log do processo com PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234
# Reduzir o nível de log de todos os processos http poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
Usuário do processo
O proxy do Zabbix foi projetado para ser executado como um usuário não root. Ele será executado como qualquer usuário não root com o qual for iniciado. Portanto, você pode executar o proxy como qualquer usuário não root sem problemas.
Se você tentar executá-lo como 'root', ele mudará para um usuário 'zabbix' predefinido, que deve estar presente no seu sistema.
Você só pode executar o proxy como 'root' se modificar o parâmetro AllowRoot no arquivo de configuração do proxy de acordo com isso.
Arquivo de configuração
Consulte as opções do arquivo de configuração para obter detalhes sobre a configuração do zabbix_proxy.
Tipos de processos e threads do proxy
agent poller- processo assíncrono de poller para verificações passivas com uma thread de trabalho;availability manager- processo para atualizações de disponibilidade do host;browser poller- poller para verificações de item de navegador;configuration syncer- processo para gerenciar o cache em memória dos dados de configuração;data sender- remetente de dados do proxy;discovery manager- processo gerenciador para descoberta de dispositivos;discovery worker- processo para tratar tarefas de descoberta vindas do discovery manager;history syncer- gravador do banco de dados de histórico;housekeeper- processo para remover histórico de item desatualizado;http agent poller- processo assíncrono de poller para verificações HTTP com uma thread de trabalho;http poller- poller de monitoramento web;icmp pinger- poller para verificações icmpping;internal poller- poller para verificações internas;ipmi manager- gerenciador do poller IPMI;ipmi poller- poller para verificações IPMI;java poller- poller para verificações Java;odbc poller- poller para verificações ODBC;poller- poller normal para verificações passivas;preprocessing manager- gerenciador de tarefas de pré-processamento com threads de trabalho de pré-processamento;preprocessing worker- thread para pré-processamento de dados;self-monitoring- processo para coletar estatísticas internas do server;snmp poller- processo assíncrono de poller para verificações SNMP com uma thread de trabalho (walk[OID]eget[OID]apenas);snmp trapper- trapper para traps SNMP;task manager- processo para execução remota de tarefas solicitadas por outros componentes (por exemplo, fechar problema, reconhecer problema, verificar o valor do item agora, funcionalidade de comando remoto);trapper- trapper para verificações ativas, traps e comunicação com o proxy;unreachable poller- poller para dispositivos inacessíveis;vmware collector- coletor de dados VMware responsável pela coleta de dados dos serviços VMware.
O arquivo de log do proxy pode ser usado para observar esses tipos de processo.
O arquivo de log do proxy é criado com permissões de leitura e gravação apenas para o proprietário do arquivo. Além disso, o arquivo pode ser lido pelo grupo do proprietário. Todas as outras permissões são negadas.
Vários tipos de processos do Zabbix proxy podem ser monitorados usando o internal item zabbix[process,<type>,<mode>,<state>].
Estatísticas de transações do history syncer
O título do processo history syncer exibe estatísticas detalhadas sobre as transações do history syncer.
205276 ? S 0:00 zabbix_proxy: history syncer #1 [processed 1 values in 0.001179 (0.001167,0.000000) sec, idle 1 sec]
205277 ? S 0:00 zabbix_proxy: history syncer #2 [processed 0 values in 0.000022 (0.000000,0.000000) sec, idle 1 sec]
Os tempos em processed...in N (<timings>) sec são:
- Tempo gasto gravando os valores do item no banco de dados.
- Tempo gasto atualizando os dados do item (estado, erros).
Procedimento de housekeeping
O proxy Zabbix possui o processo housekeeper que remove o histórico e as tendências de items desatualizados.
Ele é executado em ciclos, com frequência determinada por HousekeepingFrequency, e o limite de exclusão por ciclo determinado por ProxyLocalBuffer e ProxyOfflineBuffer.
Diferentemente do procedimento de housekeeping do servidor Zabbix, o processo housekeeper do proxy não utiliza a tabela housekeeper—ele exclui todos os dados desatualizados uma vez por ciclo de housekeeping.
Plataformas suportadas
O Zabbix proxy é executado na mesma lista de plataformas suportadas que o Zabbix server.
Buffer de memória
O buffer de memória permite armazenar novos dados (valores de item, descoberta de rede, autoregistro de host) no buffer e enviá-los ao Zabbix server sem acessar o banco de dados. O buffer de memória foi introduzido para o proxy no Zabbix 7.0.
Em instalações anteriores ao Zabbix 7.0, os dados coletados eram armazenados no banco de dados antes de serem enviados ao Zabbix server. Para essas instalações, esse continua sendo o comportamento padrão após a atualização para o Zabbix 7.0.
Para um desempenho otimizado, é recomendável configurar o uso do buffer de memória no proxy.
Isso é possível modificando o valor de ProxyBufferMode de disk (padrão codificado para instalações existentes) para hybrid (recomendado) ou memory.
Também é necessário definir o tamanho do buffer de memória (parâmetro ProxyMemoryBufferSize).
No modo híbrido, o buffer é protegido contra perda de dados ao gravar no banco de dados os dados não enviados se o proxy for interrompido, se o buffer estiver cheio ou se os dados estiverem muito antigos. Quando todos os valores tiverem sido gravados no banco de dados, o proxy volta a usar o buffer de memória.
No modo de memória, o buffer de memória será usado; no entanto, não há proteção contra perda de dados. Se o proxy for interrompido ou se a memória ficar sobrecarregada, os dados não enviados serão descartados.
O modo híbrido (ProxyBufferMode=hybrid) é aplicado a todas as novas instalações desde o Zabbix 7.0.
Parâmetros adicionais, como ProxyMemoryBufferSize e ProxyMemoryBufferAge, definem, respectivamente, o tamanho do buffer de memória e a idade máxima dos dados no buffer.
Observe que, em caso de configuração conflitante, o proxy exibirá um erro e não será iniciado, por exemplo, se:
ProxyBufferModeestiver definido comohybridoumemoryeProxyMemoryBufferSizefor0.ProxyBufferModeestiver definido comohybridoumemoryeProxyLocalBuffernão for0.
Localidade
Observe que o proxy requer uma localidade UTF-8 para que alguns itens textuais possam ser interpretados corretamente. A maioria dos sistemas modernos semelhantes ao Unix possuem uma localidade UTF-8 como padrão, no entanto, existem alguns sistemas onde isso pode precisar ser definido especificamente.
Cálculo das filas durante a manutenção
O proxy Zabbix não tem conhecimento dos períodos de manutenção; consulte Cálculo das filas durante a manutenção para obter detalhes.