DEV Community

Francisco das Chagas
Francisco das Chagas

Posted on

13 minutos de risco e um alerta calibrado para o desastre

Dois painéis sobre uma mesa: o de atraso de replicação em bytes marca 54 MB de 128 MB (42%) e mostra status saudável; o de atraso de replay em tempo marca 13 minutos, com risco de perder 12 minutos de transações num failover. Ao fundo, um monitor com o diagrama da replicação do PostgreSQL.

A réplica do banco de produção passou 13 minutos recebendo dados sem aplicá-los.

Se houvesse um failover nesses 13 minutos, perderíamos cerca de 12 minutos de transações.

Nenhum alerta tocou.

O alerta de replicação existia. Ele media o atraso em bytes e disparava a partir de 128 MB. Esse valor foi calibrado para o incidente de 8h40, quando a divergência chegou a terabytes.

Com pouca escrita, 13 minutos de atraso couberam em 54 MB, que é 42% do limite. O painel mostrava tudo verde.

O erro era de unidade, não de valor. RPO se mede em tempo, e o alerta media volume.

A correção foi a mais simples possível: uma métrica que já era coletada, de atraso em segundos, com aviso em 15 s e crítico em 60 s.

  • Testei contra 7 dias de histórico: 6 disparos, todos em eventos reais, e nenhum falso positivo.
  • No dia seguinte, o pior evento da série (73 MB, ainda abaixo do limite antigo) foi marcado como crítico 4h30 depois de o alerta nascer.
  • Medi a latência real de detecção em três disparos: 3 min 21 s, e não o 1 minuto da configuração. Corrigi o que eu tinha prometido.

Não foi preciso ferramenta nova, módulo pago nem IA. Foi preciso escolher a unidade certa.

O seu alerta de replicação mede o que o negócio perde, ou mede o que é fácil de medir?

Top comments (0)