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
| Sinal | O que é | Responde |
|---|---|---|
| Logs | Registros de eventos com texto e contexto | O que aconteceu nesta requisição? |
| Métricas | Números agregados ao longo do tempo (contadores, histogramas) | Quantos erros por minuto? Qual o p99 de latência? |
| Traces | O caminho de uma requisição por todos os serviços, com o tempo de cada etapa | Onde esta requisição gastou 2 segundos? |
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.
- Para se aprofundar: opentelemetry.io