- Castro/
- blog/
- apt-daily-upgrade rodando sozinho: por que timers automáticos precisam entrar na investigação de incidentes/
apt-daily-upgrade rodando sozinho: por que timers automáticos precisam entrar na investigação de incidentes
Como colocar apt-daily, apt-daily-upgrade, Certbot, logrotate e outros timers do systemd na timeline de um incidente sem confundir coincidência temporal com causa raiz.
Nem toda mudança em um servidor veio de alguém conectado por SSH.
Em Ubuntu moderno, vários serviços são executados automaticamente por timers do systemd.
Durante uma investigação real, a timeline mostrava atividades como:
| |
Em outra janela operacional, apt-daily-upgrade.service terminou poucos segundos depois de serviços importantes do host terem sido reiniciados.
Isso é suficiente para colocar o timer na investigação.
Não é suficiente para declarar:
apt-daily-upgrade causou o incidente.
Essa diferença é o ponto deste artigo.
Primeiro: descubra quais timers existem #
Um comando simples:
| |
Num host real, a saída mostrava, entre outros:
| |
A coluna mais interessante durante incidente é a combinação:
| |
Ela permite reconstruir o que deveria ter disparado perto do horário observado.
Timer e service são duas peças diferentes #
apt-daily-upgrade.timer agenda.
apt-daily-upgrade.service executa.
Então eu consulto os dois:
| |
E o journal:
| |
Use a janela real do incidente, não o exemplo acima.
A timeline é mais útil que o status atual #
Se eu olhar apenas:
| |
horas depois, posso ver apenas inactive (dead).
Isso não diz se o serviço executou às 03:17.
O journal diz.
Também vale:
| |
A ideia é correlacionar eventos, não caçar uma palavra isolada.
apt-daily e apt-daily-upgrade não fazem exatamente a mesma coisa #
De forma operacional:
apt-dailyestá ligado a atualização/download periódico de metadados e pacotes;apt-daily-upgradeestá ligado às atividades automáticas de upgrade/clean quando configuradas.
A configuração real depende de:
- APT periodic;
- unattended-upgrades;
- políticas da distribuição;
- overrides locais;
- timers habilitados.
Então eu verifico também:
| |
Um caso real mostrou execução do upgrade automático na mesma janela operacional #
No journal recuperado, apt-daily-upgrade.service terminou com sucesso e registrou consumo de CPU/memória.
Naquela mesma janela havia atividade de serviços importantes do host.
O que posso afirmar:
| |
O que não posso afirmar sem evidência adicional:
| |
Para promover a hipótese a causa, eu procuraria algo como:
- pacote alterado diretamente relacionado ao serviço;
needrestartreiniciando unidade;- maintainer script executando restart;
- timestamp exato consistente;
- log do serviço mostrando impacto da atualização;
- ausência de causa concorrente melhor sustentada.
Ver o que o APT realmente alterou #
Fontes úteis:
| |
Também:
| |
E logs do unattended-upgrades quando presentes:
| |
Pergunta principal:
houve mudança de pacote relevante naquela janela?
needrestart pode ser a ponte entre pacote e serviço #
Uma atualização de biblioteca pode não reiniciar aplicação por si só.
Ferramentas/políticas de restart podem detectar processos usando bibliotecas antigas e sugerir ou executar ações conforme configuração.
Por isso eu procuro:
| |
E reviso a política instalada.
Mas novamente: presença do needrestart não prova que ele reiniciou o serviço investigado.
Outros timers também entram na mesma lógica #
No snapshot real havia Certbot, logrotate, limpeza de temporários e atualização de índices.
Dependendo do incidente, algum deles pode ser mais relevante que APT.
Certbot #
| |
Logrotate #
| |
tmpfiles #
| |
A pergunta é sempre:
algum job automático tocou no mesmo recurso ou serviço no intervalo?
Cron continua existindo #
Timer systemd não substitui automaticamente todos os crons do ambiente.
Então também:
| |
Em frotas heterogêneas, a mesma função pode estar em timer num host e cron em outro.
Como eu monto uma timeline rápida #
Exemplo:
| |
Depois eu separo:
| |
O objetivo é montar causalidade temporal antes de formular RCA.
Não desabilite timer só porque ele apareceu perto do incidente #
Outro erro comum é:
| |
imediatamente após vê-lo na timeline.
Isso é uma mudança operacional com impacto em patching.
Pode ser apropriado em ambientes onde updates automáticos são deliberadamente proibidos e geridos por janela controlada.
Mas a decisão precisa ser de política, não reflexo de suspeita.
Primeiro descubra:
- o que executou;
- o que mudou;
- se houve impacto;
- qual é a política esperada do host.
O que a fonte sustenta #
Uma coleta real de Ubuntu 24.04 mostra timers ativos para APT, Certbot, logrotate e outras rotinas, com timestamps de última/próxima execução.
Outro journal real mostra apt-daily-upgrade.service concluindo na mesma janela em que havia eventos de serviços do host.
Essas evidências justificam incluir tarefas automáticas na timeline.
Elas não são usadas para afirmar que APT foi a causa de uma queda específica.
Checklist #
| |
O principal aprendizado #
Quando ninguém admite ter mexido no servidor, isso não significa que nada executou.
Systemd timers, cron e mecanismos de atualização automática são atores da timeline.
A forma correta de usá-los numa investigação é:
| |
Coincidência de horário é evidência para investigar.
Não é RCA.
Me chama.
Manda o contexto, os sintomas e o que já foi testado. Bora organizar as evidências antes de sair mexendo.