Heartbeat não prova função: caçando gray failures em produção
Um serviço "vivo" que não faz nada é indistinguível de um serviço saudável — até você medir a coisa certa. Esta é a lição que mais vezes nos cobrou caro, e a que mais mudou como construímos sistemas.
O incidente que virou doutrina
Operamos uma plataforma com centenas de agentes de IA, cada um publicando um
heartbeat — o "estou vivo" clássico do monitoramento. Um dia, catorze
serviços de consulta a uma base de conhecimento passaram semanas respondendo
status: success com latência normal, contrato de resposta íntegro… e
resultado vazio para qualquer pergunta. Nenhum alarme disparou.
Ninguém falhava. Ninguém respondia.
Isso é um gray failure: o sistema não está morto — está inútil com aparência de saudável. Todo o instrumental clássico de observabilidade (uptime, heartbeat, taxa de erro) mede se o processo existe, não se ele cumpre a função pela qual existe.
Por que o vigia não viu
Pior: nosso próprio detector de problemas tinha o mesmo defeito. Ele enumerava agentes a partir dos sinais que chegavam — e agente morto não emite sinal. O relatório dizia "104 agentes, 7 com alerta" e omitia, em silêncio, dezenas de ausentes.
Um vigia que só enxerga quem responde nunca vê quem morreu.
A correção estrutural: o monitor passou a comparar o roster esperado (o que deveria existir, declarado em configuração) contra o observado — e a ausência virou achado de primeira classe.
As três regras que ficaram
1. Meça função, não existência. Para cada serviço, defina a pergunta cuja resposta prova que ele funciona — e sonde com ela, fim a fim, contra dados reais. "Processo de pé" não é métrica de saúde; é pré-requisito.
2. Degradação anunciada vence vazio que mente. Quando um componente
precisa operar em modo reduzido, a resposta sai rotulada
(degraded: true) e o evento é logado. Um resultado pior e honesto vale
mais do que um vazio indistinguível de "não há nada".
3. Falso positivo é o inimigo do vigia. A primeira versão do nosso detector acusava 52 ausências falsas — e vigia que grita demais é desligado, e para de proteger. Tão importante quanto detectar é calibrar o que não é achado.
O que isso significa para o seu sistema
Se o seu dashboard só mostra uptime e latência, você não sabe se o sistema funciona — sabe que ele existe. A pergunta que fazemos em toda auditoria de confiabilidade é simples: se este serviço passasse a devolver respostas vazias agora, em quanto tempo alguém perceberia? Se a resposta é "quando um cliente reclamar", há um gray failure esperando a vez dele.
Quer essa auditoria no seu sistema?
Primeira conversa sem custo.