- Castro/
- blog/
- Agente fica indisponível por 1-2 minutos e volta sozinho: indisponibilidade real ou flapping?/
Agente fica indisponível por 1-2 minutos e volta sozinho: indisponibilidade real ou flapping?
Como interpretar um Zabbix Agent que registra timeout nos active checks e volta a funcionar cerca de um minuto depois, repetidamente.
Um host aparecer indisponível no Zabbix e voltar sozinho um minuto depois pode significar várias coisas:
- queda real do servidor;
- reinício do Agent;
- perda de rota;
- firewall intermitente;
- atraso no Server/Proxy;
- timeout pontual;
- flapping de comunicação.
Em um log real, o padrão era bem específico.
Repetidamente aparecia algo equivalente a:
| |
E aproximadamente um minuto depois:
| |
O ciclo se repetiu em vários horários e dias.
Isso não prova a causa da falha. Mas prova que tratar cada evento como “servidor caiu” seria uma interpretação ruim.
Primeiro: o que exatamente falhou? #
O log era de um Agent usando active checks.
Nesse fluxo, o Agent conversa com Server ou Proxy para obter/atualizar sua configuração de checks ativos.
A mensagem:
| |
indica que houve timeout de leitura na comunicação.
Ela não diz, sozinha:
| |
Essa diferença é o centro do diagnóstico.
A duração do evento é uma pista importante #
No histórico analisado, muitos pares eram próximos de:
| |
ou:
| |
Havia também episódios um pouco maiores.
Quando o padrão se repete e se recupera automaticamente, vale medir:
| |
Sem essa visão, o dashboard pode transformar flapping em uma sequência de incidentes independentes.
Reinício do Agent é outro evento — e deve ser separado #
O mesmo arquivo de log também continha registros explícitos de parada e inicialização do Agent:
| |
Isso é diferente de um simples timeout de active check.
Portanto eu separaria pelo menos duas classes:
| |
Se misturar as duas, pode parecer que o serviço reinicia a cada flapping quando o log não sustenta isso.
O Agent pode estar vivo enquanto a monitoria sofre #
Um teste local ajuda:
| |
ou, dependendo da instalação:
| |
Também:
| |
Mas, em active checks, o fato de 10050 estar escutando não prova que o Agent consegue falar com Server/Proxy em 10051.
São fluxos diferentes.
Teste o caminho que o log está reclamando #
A partir do host:
| |
Depois:
| |
Se a falha é intermitente, um teste único saudável também não encerra a investigação.
Pode ser necessário amostrar ao longo do tempo:
| |
Em uma coleta operacional, eu registraria stdout/stderr em arquivo com timestamp para correlacionar as falhas depois.
Melhor: correlacionar Server/Proxy no mesmo minuto #
O lado do Agent mostra o sintoma visto pelo cliente da conexão.
Para entender a causa, eu procuraria no Server/Proxy no mesmo período:
| |
Se dezenas de Agents registram timeout no mesmo minuto, a hipótese de problema concentrado no Server/Proxy ou caminho comum ganha peso.
Se apenas um host apresenta o padrão, a investigação tende para rede/localidade daquele host.
Isso ainda é hipótese até a correlação comprovar.
zabbix_get não testa active checks diretamente #
zabbix_get é útil para testar itens passivos contra um Agent:
| |
Mas não deve ser usado como “prova definitiva” de que o caminho de active checks está saudável.
São sentidos e comportamentos diferentes.
A pergunta precisa combinar com o teste.
Flapping também é problema de observabilidade #
Mesmo que a aplicação esteja funcionando, um monitoramento que alterna estado a cada minuto pode gerar:
- alarmes demais;
- fadiga de alerta;
- incidentes falsos;
- automações disparadas sem necessidade;
- perda de confiança na monitoria.
Então não basta dizer:
voltou sozinho, ignora.
O objetivo é entender se o flapping representa uma falha curta real de comunicação e definir uma política adequada de trigger.
Trigger deve considerar duração e dependência #
Dependendo do item, pode fazer sentido usar uma janela antes de disparar um incidente crítico.
Por exemplo, em vez de reagir ao primeiro check perdido, considerar múltiplas falhas consecutivas ou tempo mínimo.
A configuração exata depende do SLA e do que está sendo medido.
Não existe um for 2m universal para qualquer trigger.
Um serviço financeiro e uma coleta auxiliar têm tolerâncias diferentes.
Um roteiro de investigação #
| |
O que a fonte prova #
O log recuperado mostra:
- Zabbix Agent 5.0.x em execução;
- diversos episódios de
ZBX_TCP_READ() timed outdurante atualização de active checks; - recuperação automática registrada como
is working again; - muitos episódios com intervalo próximo de um minuto;
- reinícios explícitos do Agent em outros momentos, distinguíveis dos timeouts.
A fonte não prova uma causa raiz única para os timeouts.
O hostname original e demais identificadores foram removidos deste artigo.
Checklist #
| |
O principal aprendizado #
“Unavailable” é um estado do monitoramento, não uma causa raiz.
Quando o log mostra falha e recuperação repetidas em janelas curtas, o trabalho é descobrir qual parte da comunicação está oscilando e ajustar a observabilidade sem esconder indisponibilidade real.
Me chama.
Manda o contexto, os sintomas e o que já foi testado. Bora organizar as evidências antes de sair mexendo.