Monitoramento distribuído usando proxies

Visão geral

Os proxies do Zabbix podem ser usados para criar uma configuração de monitoramento distribuído eficaz e confiável.

Os proxies são implantados localmente para coletar dados de desempenho e disponibilidade. Em seguida, os dados são enviados a um server centralizado.

Um proxy do Zabbix pode ser usado para:

  • Monitorar locais remotos
  • Monitorar locais com comunicações não confiáveis
  • Reduzir a carga do server do Zabbix ao monitorar milhares de dispositivos
  • Coletar dados de telemetria para monitoramento do desempenho de aplicações (APM)

O proxy requer apenas uma conexão TCP com o server do Zabbix. Dessa forma, é mais fácil contornar um firewall, pois é necessário configurar apenas uma regra de firewall.

O proxy do Zabbix deve usar um banco de dados separado. Apontá-lo para o banco de dados do server do Zabbix interromperá a configuração.

Todos os dados coletados pelo proxy são armazenados localmente antes de serem transmitidos ao server. Dessa forma, nenhum dado é perdido devido a problemas temporários de comunicação com o server. Os parâmetros ProxyLocalBuffer e ProxyOfflineBuffer no arquivo de configuração do proxy controlam por quanto tempo os dados são mantidos localmente.

Pode acontecer de um proxy, que recebe as alterações de configuração mais recentes diretamente do banco de dados do server do Zabbix, ter uma configuração mais atualizada do que o server do Zabbix, cuja configuração pode não ser atualizada com a mesma rapidez devido ao valor de CacheUpdateFrequency. Como resultado, o proxy pode começar a coletar dados e enviá-los ao server do Zabbix, que ignora esses dados.

O proxy do Zabbix é um coletor de dados. Ele não calcula triggers, processa eventos nem envia alertas. Para obter uma visão geral das funcionalidades do proxy, consulte a tabela a seguir:

Function Supported by proxy
Items
Zabbix agent checks Yes
Zabbix agent checks (active) Yes 1
Simple checks Yes
Trapper items Yes
SNMP checks Yes
SNMP traps Yes
IPMI checks Yes
JMX checks Yes
Log file monitoring Yes
Internal checks Yes
SSH checks Yes
Telnet checks Yes
External checks Yes
Dependent items Yes
Script items Yes
Browser items Yes
Telemetry query items Yes
Built-in web monitoring Yes
Item value preprocessing Yes
Network discovery Yes
Active agent autoregistration Yes
Low-level discovery Yes 2
Remote commands Yes
Telemetry data collection (APM) Yes 3
Calculating triggers No
Processing events No
Event correlation No
Sending alerts No

[1] Para garantir que um agent solicite ao proxy (e não ao server) as verificações ativas, o proxy deve estar listado no parâmetro ServerActive no arquivo de configuração do agent.
[2] Para LLD, o proxy do Zabbix apenas coleta e pré-processa os dados e, em seguida, envia-os ao server do Zabbix para processamento adicional.
[3] Os dados de telemetria são coletados somente se o APM estiver habilitado no proxy (consulte a aba APM em configuração do proxy); o server do Zabbix não pode receber dados de telemetria.

Recursos do proxy

Ao decidir usar ou não um proxy, várias considerações devem ser levadas em conta.

Proxy
Leve Sim
GUI Não
Funciona de forma independente Sim
Fácil manutenção Sim
Criação automática de DB Sim1
Administração local Não
Pronto para hardware embarcado Sim
Conexões TCP unidirecionais Sim
Configuração centralizada Sim
Gera notificações Não

1 O recurso de criação automática de DB funciona apenas com SQLite. Outros bancos de dados suportados exigem configuração manual.

O proxy do Zabbix não tem conhecimento dos períodos de manutenção; consulte Cálculo das filas durante a manutenção para detalhes.

Proteção contra sobrecarga

Se o Zabbix server ficar indisponível por algum tempo e os proxies coletarem muitos dados, quando o server for iniciado, ele poderá ficar sobrecarregado (o uso do cache de histórico permanecerá entre 95% e 100% por algum tempo). Essa sobrecarga poderá afetar o desempenho, fazendo com que as verificações sejam processadas mais lentamente do que deveriam. Foi implementada uma proteção contra esse cenário para evitar problemas causados pela sobrecarga do cache de histórico.

Quando o cache de histórico do Zabbix server está cheio, o acesso de gravação no cache de histórico é limitado, interrompendo os processos de coleta de dados do server. O caso mais comum de sobrecarga do cache de histórico ocorre após uma indisponibilidade do server, quando os proxies enviam os dados coletados. Para evitar isso, foi adicionado o controle de fluxo dos proxies (atualmente, ele não pode ser desativado).

Quando o uso do cache de histórico atinge 80%, o Zabbix server entra no modo de controle de fluxo. Nesse modo, o server aceita dados dos proxies somente quando o uso do cache de histórico está abaixo de 60%, alternando os proxies aceitos. Quando o uso do cache de histórico cai abaixo de 20%, o server retorna ao modo normal.

Além disso, quando o uso do cache de histórico excede 60%, o Zabbix server pode adiar proxies individuais enquanto estiver no modo normal, caso os uploads deles sejam truncados devido aos limites de upload. Essa decisão é aplicada no momento em que o server avalia um upload de proxy e, portanto, pode não ser refletida imediatamente nos gráficos de uso do cache de histórico (o item interno zabbix[wcache,history,pused] e seu intervalo de atualização podem não detectar picos curtos).

Esse modo de controle de fluxo continuará até que o uso do cache atinja novamente 80%, caia para 20% ou a lista de controle de fluxo fique vazia. No primeiro caso, o server deixará de aceitar dados dos proxies novamente. Nos outros dois casos, o server voltará a funcionar normalmente, aceitando dados de todos os proxies.

As informações acima podem ser ilustradas na tabela a seguir:

Uso do cache de gravação do histórico Modo do Zabbix server Ação do Zabbix server
Acima de 60% (no modo "Normal", até atingir 80%) Normal Adia os proxies cujo lote de upload foi truncado devido aos limites de upload; continua aceitando os demais proxies.
Atinge 80% Espera Deixa de aceitar dados dos proxies, mas mantém uma lista de controle de fluxo (uma lista priorizada de proxies a serem contatados posteriormente).
Cai abaixo de 60% (após o modo "Espera") Controle de fluxo Volta a aceitar dados dos proxies, alternando entre os proxies da lista de controle de fluxo.
Cai abaixo de 20% (após o modo "Controle de fluxo") Normal Descarta a lista de controle de fluxo e começa a aceitar dados dos proxies normalmente.

Você pode usar o item interno zabbix[wcache,history,pused] para correlacionar esse comportamento do Zabbix server com uma métrica.

Configuração

Depois de instalar e configurar um proxy, é hora de configurá-lo no frontend do Zabbix.

Adicionando proxies

Em vez de instalar um proxy em sua própria infraestrutura, você pode implantar um no Zabbix Cloud. Para isso, clique em Create proxy in Cloud em Administration > Proxies; o Zabbix Cloud será aberto em uma nova aba do navegador. Depois de criar um nó de proxy lá, configure o proxy no frontend do Zabbix conforme descrito abaixo. Para obter mais informações, consulte Configurar um proxy do Zabbix Cloud.

Para configurar um proxy no frontend do Zabbix:

  1. Acesse Administration > Proxies.
  2. Clique em Create proxy.
  3. Insira os parâmetros do proxy no formulário.

Parâmetro Descrição
Proxy name Insira o nome do proxy. Ele deve ser igual ao nome definido no parâmetro Hostname do arquivo de configuração do proxy.
Proxy group Selecione um grupo de proxy para o balanceamento de carga/alta disponibilidade do proxy.
Address for active agents Insira o endereço ao qual os agents ativos monitorados ou os remetentes devem se conectar. Compatível somente com agents do Zabbix 7.0 ou posterior.
Esse endereço é usado para conectar-se a proxies ativos e passivos. Este campo só estará disponível se um grupo de proxy for selecionado no campo Proxy group.
Address Endereço IP/nome DNS ao qual se conectar.
Port Número da porta TCP (10051 por padrão) à qual se conectar. Macros de usuário são compatíveis.
Proxy mode Selecione o modo do proxy.
Active - o proxy se conectará ao Zabbix server e solicitará dados de configuração
Passive - o Zabbix server se conectará ao proxy
Observação: sem comunicações criptografadas, os dados de configuração do proxy (sensíveis) poderão ficar disponíveis para partes que tenham acesso à porta trapper do Zabbix server ao usar um proxy ativo. Isso é possível porque qualquer pessoa pode se passar por um proxy ativo e solicitar dados de configuração se a autenticação não ocorrer ou se os endereços do proxy não forem limitados no campo Proxy address.
Proxy address Se especificado, as solicitações do proxy ativo serão aceitas somente desta lista de endereços IP separados por vírgulas, opcionalmente em notação CIDR, ou de nomes DNS do proxy ativo do Zabbix.
Este campo só estará disponível se um proxy ativo for selecionado no campo Proxy mode. Macros não são compatíveis.
Interface Insira os detalhes da interface de um proxy passivo.
Este campo só estará disponível se um proxy passivo for selecionado no campo Proxy mode.
Address Endereço IP/nome DNS do proxy passivo.
Port Número da porta TCP do proxy passivo (10051 por padrão). Macros de usuário são compatíveis.
Description Insira a descrição do proxy.

A aba Encryption permite exigir conexões criptografadas com o proxy.

Parâmetro Descrição
Connections to proxy Como o server se conecta ao proxy passivo: sem criptografia (padrão), usando PSK (chave pré-compartilhada) ou certificado.
Connections from proxy Selecione quais tipos de conexão são permitidos a partir do proxy ativo. Vários tipos de conexão podem ser selecionados ao mesmo tempo (útil para testes e para alternar para outro tipo de conexão). O padrão é "No encryption".
Issuer Emissor permitido do certificado. Primeiro, o certificado é validado pela CA (autoridade certificadora). Se for válido e assinado pela CA, o campo Issuer poderá ser usado para restringir ainda mais as CAs permitidas. Este campo é opcional e destina-se a instalações do Zabbix que usam certificados de várias CAs.
Subject Assunto permitido do certificado. Primeiro, o certificado é validado pela CA. Se for válido e assinado pela CA, o campo Subject poderá ser usado para permitir apenas um valor da string Subject. Se este campo estiver vazio, qualquer certificado válido assinado pela CA configurada será aceito.
PSK identity String de identidade da chave pré-compartilhada.
Não insira informações sensíveis na identidade PSK, pois ela é transmitida sem criptografia pela rede para informar ao receptor qual PSK deve ser usada.
PSK Chave pré-compartilhada (string hexadecimal). Comprimento máximo: 512 dígitos hexadecimais (PSK de 256 bytes) se o Zabbix usar a biblioteca GnuTLS ou OpenSSL; 64 dígitos hexadecimais (PSK de 32 bytes) se o Zabbix usar a biblioteca mbed TLS (PolarSSL). Exemplo: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

A aba APM permite configurar o monitoramento do desempenho de aplicações (APM) no proxy. O proxy pode coletar dados de telemetria (traces, métricas e logs) enviados por aplicações ou coletores OpenTelemetry por meio do protocolo OpenTelemetry (OTLP/gRPC) e gravar os dados na fonte de dados de telemetria.

Parâmetro Descrição
Data collection enabled Marque a caixa de seleção para habilitar a coleta de dados de telemetria no proxy.
Antes de habilitar a coleta de dados de telemetria, defina o parâmetro StartAPMCollector como 1 no arquivo de configuração do proxy (requer um proxy do Zabbix com suporte a APM).
Max messages per second Defina o número máximo de mensagens por segundo que o proxy aceita:
Unlimited - aceita todas as mensagens recebidas.
Custom - aceita até o número especificado de mensagens por segundo.

Uma mensagem é uma solicitação OTLP enviada por uma aplicação, um coletor OpenTelemetry ou outra fonte de telemetria. Seu tamanho depende do remetente; por exemplo, um coletor OpenTelemetry pode agrupar milhares de spans em uma mensagem, enquanto uma aplicação simples pode enviar mensagens menores (por exemplo, uma por trace).

Se o limite for excedido, o proxy responderá com o código de status gRPC UNAVAILABLE (erro temporário), portanto o remetente poderá tentar enviar a mensagem novamente mais tarde, dependendo da sua configuração.
Resource attributes Especifique os atributos de recurso a serem adicionados aos dados de telemetria recebidos da categoria selecionada (por exemplo, para marcar todos os dados recebidos por este proxy com seu ambiente ou região). Você poderá usar esses atributos para filtrar dados de telemetria, por exemplo, nas condições de item de consulta de telemetria.

Se os dados recebidos já contiverem um atributo de recurso com a mesma chave, o atributo recebido será mantido em vez do atributo especificado aqui.
Key Insira a chave do atributo (por exemplo, deployment.environment, cloud.region). Deve ser exclusiva para a Category selecionada.
Value Insira o valor do atributo (por exemplo, production, eu-central-1). Pode ficar vazio.
Category Selecione a categoria dos dados recebidos à qual o atributo se aplica: Traces, Metrics ou Logs.

A aba Timeouts permite substituir os tempos limite globais para tipos de item compatíveis.

Parâmetro Descrição
Timeouts for item types Defina o tempo limite do item (com base no tipo):
Global - usa o tempo limite global (exibido no campo Timeout esmaecido de cada tipo de item);
Override - define um tempo limite personalizado (no campo Timeout de cada tipo de item). Intervalo permitido: 1 - 600s (padrão: herdado dos tempos limite globais). Sufixos de tempo, por exemplo, 30s, 1m, e macros de usuário são compatíveis.

Clicar no link Global timeouts permite configurar os tempos limite globais. Observe que o link Global timeouts fica visível somente para usuários do tipo Super admin com permissões para a seção do frontend Administration > General.

Observe que, embora os tempos limite no nível do proxy substituam os globais, eles serão substituídos pelos tempos limite de itens individuais, se configurados.

Se a versão principal do proxy não corresponder à versão principal do server, o ícone será exibido ao lado de Timeouts for item types, com a mensagem ao passar o mouse: "Timeouts disabled because the proxy and server versions do not match". Nesses casos, o proxy usará o parâmetro Timeout do arquivo de configuração do proxy.

O formulário de edição de um proxy existente contém os seguintes botões adicionais:

  • Refresh configuration - atualiza a configuração do proxy;
  • Clone - cria um novo proxy com base nas propriedades do proxy existente;
  • Delete - exclui o proxy.
Configuração do host

Você pode especificar que um host individual deve ser monitorado por um proxy ou grupo de proxy no formulário de configuração do host, usando o campo Monitored by.

A atualização em massa de host é outra forma de especificar que hosts devem ser monitorados por um proxy ou grupo de proxy.