Software · Infraestrutura & Sistemas
Observabilidade em Produção: Os Três Pilares da Telemetria com OpenTelemetry
Indo além dos alertas reativos: como estruturar logs contextuais, métricas de séries temporais e rastreamento distribuído com o padrão aberto OpenTelemetry.
Em sistemas monolíticos legados rodando em um único servidor, solucionar uma anomalia em produção era um processo relativamente direto: o engenheiro acessava a máquina via SSH, abria o arquivo de log local com um utilitário de terminal e inspecionava a pilha de exceção para identificar a linha defeituosa. No entanto, em ecossistemas distribuídos modernos — onde uma única ação do usuário desencadeia chamadas assíncronas através de dezenas de microsserviços, balanceadores de carga, mensagerias e bancos de dados —, tentar diagnosticar lentidões e falhas intermitentes com ferramentas tradicionais de log transforma-se em um pesadelo operacional.
A Observabilidade não é um sinônimo moderno para monitoramento tradicional. Enquanto o monitoramento tradicional apenas responde quando um limiar predefinido foi violado (por exemplo, "o uso de CPU ultrapassou 90%"), a observabilidade confere aos engenheiros a capacidade de compreender por que o sistema está se comportando de determinada maneira em cenários de falhas inéditas e imprevistas (Unknown-Unknowns), baseando-se estritamente nas emissões de telemetria emitidas pelas aplicações.
Os Três Pilares Clássicos da Telemetria
Para inferir com precisão cirúrgica a saúde interna de um sistema em tempo real, a arquitetura de observabilidade apoia-se em três primitivas de dados complementares:
| Pilar | Pergunta Respondida | Natureza dos Dados | Caso de Uso Primário |
|---|---|---|---|
| Métricas | O quê está acontecendo? | Séries temporais numéricas agregadas (contadores, medidores, histogramas). | Detecção precoce de anomalias, alertas e visão panorâmica de baixo custo. |
| Traces | Onde está o gargalo? | Grafos direcionados acíclicos (DAG) de spans correlacionados por ID único. | Mapeamento de latência e dependências através de microsserviços distribuídos. |
| Logs | Por que a falha aconteceu? | Registros textuais estruturados e enriquecidos com metadados e carimbo de data/hora. | Diagnóstico detalhado de causas-raiz em eventos discretos. |
1. Métricas: A Visão Panorâmica de Baixo Custo
Métricas são dados numéricos agregados ao longo de janelas de tempo, projetados para serem extremamente compactos em armazenamento e rápidos para consulta. Em serviços corporativos, orientamos o desenho de métricas através de duas metodologias consagradas:
- Método RED (para APIs e serviços web):
- Rate: Quantas requisições por segundo estão chegando?
- Errors: Quantas requisições estão falhando com códigos 5xx?
- Duration: Quanto tempo as requisições estão demorando (analisando percentis p50, p95 e p99)?
- Método USE (para recursos de infraestrutura como CPU, RAM e I/O):
- Utilization: Porcentagem de tempo em que o recurso está ocupado.
- Saturation: Tamanho da fila de trabalho acumulada aguardando o recurso.
- Errors: Quantidade de falhas registradas no hardware ou no subsistema operacional.
2. Tracing Distribuído: Rastreando o Fluxo de Ponta a Ponta
O rastreamento distribuído (Distributed Tracing) mapeia a trajetória cronológica completa de uma requisição conforme ela navega pelo ecossistema:
- Trace: Representa a transação completa de ponta a ponta, identificado por um
TraceIdúnico universal. - Span: Representa uma unidade atômica de trabalho contíguo dentro de um serviço específico (por exemplo, uma consulta SQL no banco, uma chamada HTTP a um parceiro ou o processamento de uma mensagem na fila). O Span registra seu nome, timestamp de início, duração, atributos de contexto e seu
ParentSpanId.
O encadeamento entre serviços ocorre através da propagação de contexto (Context Propagation): a especificação padronizada pelo W3C (W3C Trace Context) injeta o cabeçalho traceparent nas requisições HTTP e mensagens de broker, garantindo que o TraceId seja mantido inalterado desde a borda até o banco de dados.
3. Logs Estruturados: A Narrativa Detalhada
Arquivos de log em texto livre não estruturado (print("Erro no pedido " + id)) são um desperdício em alta escala, pois impedem agregações analíticas. O padrão exigido pela indústria é o Log Estruturado em JSON, onde cada linha carrega campos explícitos e correlacionados:
{
"timestamp": "2026-09-17T18:20:14.215Z",
"level": "ERROR",
"message": "Falha ao liquidar pagamento no gateway bancário.",
"service.name": "orders-service",
"traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
"spanId": "00f067aa0ba902b7",
"customer.id": "cust-9912",
"payment.gateway": "cielo",
"exception.type": "GatewayTimeoutException"
}
Ao incluir o traceId e o spanId em cada linha de log, o engenheiro pode saltar instantaneamente de um pico de latência no gráfico para o trace específico e dali direto para os logs daquele exato milissegundo.
O Fim do Lock-in de Fornecedores: OpenTelemetry (OTel)
Historicamente, adotar telemetria significava instalar bibliotecas proprietárias de um fornecedor específico (como Datadog, Dynatrace, New Relic ou Azure Application Insights). Se a empresa decidisse trocar de fornecedor, todo o código-fonte precisava ser alterado e recompilado.
O OpenTelemetry (OTel), projeto open-source sob os cuidados da Cloud Native Computing Foundation (CNCF), unificou a indústria criando um padrão agnóstico e universal:
flowchart TD
App["Aplicação (C#, Go, Node, Python)<br/>Instrumentada com SDK OpenTelemetry"]
Collector["<b>OpenTelemetry Collector</b><br/>• Recebe telemetria via OTLP (gRPC / HTTP)<br/>• Processa, sanitiza e remove dados PII<br/>• Roteia e exporta para múltiplos backends"]
subgraph Destinos["Destinos e Backends de Observabilidade"]
Prometheus["Prometheus / Mimir<br/>(Métricas RED & USE)"]
Jaeger["Jaeger / Tempo<br/>(Distributed Traces)"]
Datadog["Plataformas Cloud<br/>(Datadog / Azure / AWS)"]
end
App -->|"Protocolo OTLP"| Collector
Collector --> Prometheus
Collector --> Jaeger
Collector --> Datadog
A aplicação emite dados em um protocolo aberto (OTLP - OpenTelemetry Protocol). O OTel Collector atua como um intermediário neutro que recebe a telemetria, sanitiza informações sensíveis e pode exportar os mesmos dados simultaneamente para ferramentas open-source (como Prometheus, Grafana, Loki e Jaeger) ou plataformas corporativas pagas, garantindo soberania técnica total para a organização.
Boas Práticas para Observabilidade em Produção
Em sistemas distribuídos de missão crítica, a telemetria é considerada parte inegociável da definição de pronto (Definition of Done) de qualquer serviço:
- Instrumentação Nativa de Negócio: Não nos limitamos a métricas básicas de CPU e memória. Nossos serviços emitem métricas e spans customizados orientados a resultados de negócio: taxa de conversão de checkouts por minuto, tempo médio de liquidação bancária e volume financeiro transacionado.
- Proteção Rigorosa de Dados Sensíveis (LGPD / PII Sanitization): Nossos coletores e formatadores de log contam com filtros estritos que mascaram senhas, tokens de autorização, números de cartão e CPFs antes que a telemetria seja transmitida pela rede, prevenindo vazamentos de dados confidenciais nos consoles de observabilidade.
- Alertas Baseados em SLOs e Queima de Erro (Error Budget): Abolimos alertas ruidosos baseados em limiares estáticos de CPU temporários. As notificações de emergência da equipe de plantão são disparadas exclusivamente quando os Objetivos de Nível de Serviço (SLOs) de latência e disponibilidade prometidos aos usuários correm risco iminente de rompimento.