The Code Codex
Tema
← Notas / Observability

nota · texto31 jan 2025 · 1 min

Observabilidade

Observabilidade é a capacidade de entender o que acontece dentro de um sistema olhando só para o que ele emite. Monitoramento responde “está quebrado?”; observabilidade responde “por que está quebrado?”, inclusive para problemas que ninguém previu.

Os três sinais
SinalO que éResponde
LogsRegistros de eventos com texto e contextoO que aconteceu nesta requisição?
MétricasNúmeros agregados ao longo do tempo (contadores, histogramas)Quantos erros por minuto? Qual o p99 de latência?
TracesO caminho de uma requisição por todos os serviços, com o tempo de cada etapaOnde esta requisição gastou 2 segundos?

API Gateway

20 ms

Pedidos

40 ms

Pagamentos

1.800 ms

Estoque

30 ms

Banco do PSP

1.750 ms

API Gateway

20 ms

Pedidos

40 ms

Pagamentos

1.800 ms

Estoque

30 ms

Banco do PSP

1.750 ms

O trace acima mostra na hora que o problema está no pagamento, e mais especificamente na chamada externa. Só com logs, seria preciso cruzar registros de quatro serviços.

O que liga tudo: contexto

Cada requisição recebe um trace id, propagado entre os serviços (no header traceparent, padrão W3C) e gravado em cada log. Assim, de um pico na métrica você chega ao trace, e do trace aos logs exatos.

Na prática
  • Logs estruturados (JSON), com trace id, em vez de texto solto.
  • Métricas RED para cada serviço: Rate (requisições por segundo), Errors e Duration.
  • OpenTelemetry: o padrão aberto da CNCF para gerar e exportar os três sinais, independente de fornecedor. Instrumente uma vez e envie para Grafana, Datadog, Jaeger ou o que for.
  • Alertas baseados no que o usuário sente (SLOs, veja o glossário), não em CPU alta.

Veja também: System design e o fator XI dos Doze Fatores.