Migrando de zabbix-agent para zabbix-agent2 de forma controlada
Como migrar do agent clássico para o Zabbix Agent 2 sem deixar dois serviços disputando a TCP 10050, preservando configuração e validando o monitoramento antes de encerrar a troca.
Trocar zabbix-agent por zabbix-agent2 parece uma operação simples:
| |
Em produção, isso pode terminar com dois serviços disputando a mesma porta.
Em uma migração real, a configuração do Agent 2 passava na validação, o systemd iniciava o processo e, segundos depois, aparecia:
| |
O serviço entrava em auto-restart e repetia o ciclo.
A causa imediata daquele erro estava clara: a TCP 10050 já tinha dono.
O aprendizado maior foi que migração de agente precisa ser tratada como troca de serviço, não como instalação de pacote.
Primeiro: descobrir o que já está escutando #
Antes de instalar qualquer coisa:
| |
Também:
| |
E:
| |
O objetivo é responder:
| |
Sem isso, o pacote novo pode ser instalado sobre um estado que já conflita com ele.
Configuração válida não significa serviço executável #
No caso real, o log mostrava algo importante:
| |
Logo depois:
| |
São duas validações diferentes.
A primeira diz:
o arquivo de configuração é sintaticamente aceitável.
A segunda responde:
o processo consegue realmente ocupar os recursos que precisa no host?
Por isso eu não encerro uma migração em:
| |
Esse comando é útil, mas insuficiente.
Preserve o contrato do agente antigo antes de removê-lo #
Antes da troca, eu registraria pelo menos:
| |
E, se Agent 2 já existir:
| |
Também:
| |
O ponto não é copiar cegamente a configuração antiga.
É saber quais propriedades fazem parte do contrato de monitoramento:
- identidade do host;
- Server/ServerActive;
- metadata de auto-registro;
- timeouts;
- UserParameters;
- includes;
- TLS, quando usado.
O passo crítico: parar o serviço antigo antes de liberar a porta #
Se a estratégia é substituir o agent clássico:
| |
Depois confirmar:
| |
A porta precisa estar livre antes de iniciar o Agent 2 — salvo se o desenho deliberadamente usa outra porta.
Só então:
| |
Purge pode fazer sentido, mas não deve ser o primeiro movimento cego #
Em outra automação real, a role tinha uma etapa explícita de remoção de instalações antigas de zabbix-agent e zabbix-agent2 antes da instalação desejada.
Essa abordagem reduz resíduos de pacote/configuração quando o padrão do host está bem conhecido.
Mas em ambiente heterogêneo eu ainda faria preflight antes de purge.
Perguntas importantes:
| |
Remover primeiro e descobrir depois é uma forma ruim de documentar dependências.
O dpkg também pode falhar porque o pós-instalação tenta iniciar o serviço #
Uma execução Ansible recuperada mostrou a instalação do pacote zabbix-agent2 falhando durante o dpkg.
O pacote foi desempacotado, mas o pós-instalação não conseguiu completar a ativação do serviço.
O resultado foi:
| |
no PLAY RECAP.
Isso é importante porque o erro superficial pode aparecer como:
| |
quando o próximo passo é olhar:
| |
O gerenciador de pacotes pode estar apenas propagando uma falha do serviço.
Validação em camadas #
Depois da troca, eu valido nesta ordem.
1. Configuração #
| |
2. Serviço #
| |
3. Porta #
| |
4. Processo antigo #
| |
5. Log #
| |
6. Conectividade com o Server #
Para active checks, por exemplo:
| |
quando essa for a arquitetura.
7. Zabbix frontend/API #
Confirmar que o host continua recebendo dados e que os itens esperados deixam de ficar unsupported/stale.
Agent 2 não deve ser escolhido só porque é “mais novo” #
Outro ambiente real exigiu o contrário: o procedimento correto era manter agent clássico 6.0 LTS, alinhado ao padrão daquela monitoria, e remover uma instalação anterior baseada no repositório 7.0.
Isso reforça uma regra:
versão e tipo de agente são decisões do ambiente, não uma atualização automática por preferência.
Antes da migração, validar:
- versão do Zabbix Server/Proxy;
- templates usados;
- plugins Agent 2 necessários;
- sistema operacional/arquitetura;
- auto-registro;
- checagens ativas/passivas;
- política da equipe de monitoria.
Rollback precisa ser simples #
Se o Agent 2 não funcionar e o pacote antigo ainda estiver disponível/configurado, um rollback controlado pode ser:
| |
Depois validar novamente porta, logs e recebimento de dados.
Se houve purge, o rollback passa a depender de reinstalação/restauração da configuração — por isso a decisão de remover definitivamente deve vir depois da validação.
Checklist de migração #
| |
O que a evidência permite concluir #
A fonte recuperada comprova um host onde:
zabbix-agentestava ativo;- o Agent 2 validava sua configuração;
- o Agent 2 falhava repetidamente ao tentar bind na TCP 10050;
- o systemd fazia novas tentativas automáticas.
Outra execução comprova uma instalação Agent 2 via Ansible que terminou com falha do pacote/serviço e PLAY RECAP failed=1.
Essas fontes sustentam o risco operacional da coexistência e a necessidade de validação por camadas.
Elas não são usadas para afirmar que todo ambiente deve migrar para Agent 2.
O principal aprendizado #
Migrar agente de monitoramento é uma troca de responsabilidade sobre o host.
O momento crítico não é quando o pacote novo aparece em dpkg -l.
É quando você consegue provar:
| |
Sem isso, você pode ter instalado o Agent 2 e, ao mesmo tempo, perdido o monitoramento.
Me chama.
Manda o contexto, os sintomas e o que já foi testado. Bora organizar as evidências antes de sair mexendo.