Log diz o que falhou. Tracing distribuído mostra onde falhou e por quê, request por request, serviço por serviço. Quando uma requisição cruza seis serviços, cada um loga seu pedaço e correlacionar por timestamp vira chute sob carga; trace IDs costuram a jornada completa.

Quais conceitos sustentam o OpenTelemetry?

Traces contêm spans: operações nomeadas com duração, atributos e status. Relações pai-filho formam a árvore de execução. O W3C Trace Context propaga contexto via header traceparent através de HTTP, gRPC e filas de mensagem; siga essa spec desde o primeiro dia.

Como configurar o SDK?

Monte um TracerProvider com exportador OTLP apontando para o collector ou endpoint do vendor. O BatchSpanProcessor dá throughput adequado para produção, em contraste com o SimpleSpanProcessor de testes. Nos resource attributes, declare service name, versão e ambiente; telemetria sem identificação de origem vira ruído.

Auto-instrumentação ou spans manuais?

Comece pelos agents de zero-code para Node, Python e Java: eles cobrem frameworks populares e clients HTTP sem tocar no código. Restrinja spans manuais às operações críticas de negócio, com nomes estáveis e atributos de domínio (id do pedido, plano do cliente). Nome genérico demais atrapalha a busca no vendor.

Qual estratégia de sampling usar?

Head sampling entre 10% e 100% conforme o tráfego decide o que coletar na origem. Tail sampling mantém todos os traces com erro e os outliers lentos, descartando sucessos rotineiros; a decisão pertence ao collector nesse modo. Sem tail sampling, o trace raro do bug difícil escapa.

Collector na frente de quê?

O padrão agent sidecar mais gateway equilibra overhead local com processamento central. Processors cuidam de batching, filtragem e remoção de PII antes do export. Fazer scrubbing no collector evita vazamento de dado sensível para vendors terceiros.

Qual vendor escolher?

Jaeger serve para começar self-hosted; Grafana Tempo aposta em object storage para baratear retenção longa; Datadog e Honeycomb entregam análise gerenciada de alta qualidade. OTLP mantém a troca barata: mudar de backend significa trocar o exporter, não instrumentar de novo.

Quais armadilhas derrubam projetos de tracing?

  • Propagação perdida em fronteiras async e thread pools; o trace quebra no meio
  • Span explosion com um span por linha de banco; agregue por query, não por row
  • Clock skew entre hosts confundindo a visualização em waterfall