Home > Blog > Desenvolvimento Web
Desenvolvimento Web
JavaScript
Programação

Trace Sampling no Node.js: controle custo de tracing

Atualizado em: 19 de outubro de 2026

Terminal Linux usado em desenvolvimento e administração de aplicações Node.js

Trace Sampling no Node.js controla quais traces são registrados e exportados em sistemas observáveis. Capturar 100% das requisições pode ser útil em desenvolvimento, mas costuma gerar custo, volume e cardinalidade excessivos em produção.

O objetivo do sampling é preservar sinais úteis sem coletar tudo indiscriminadamente. Uma estratégia adequada mantém erros, operações lentas e amostras representativas do tráfego normal.

Head sampling

A decisão é tomada no início do trace, antes de conhecer o resultado.

import { TraceIdRatioBasedSampler } from '@opentelemetry/sdk-trace-base';

const sampler = new TraceIdRatioBasedSampler(0.1);

Nesse exemplo, aproximadamente 10% dos traces são amostrados. A decisão é determinística pelo trace ID, o que ajuda serviços diferentes a manter a mesma escolha.

Parent-based sampling

Serviços downstream devem respeitar a decisão recebida do serviço pai. Isso evita traces fragmentados.

import {
  ParentBasedSampler,
  TraceIdRatioBasedSampler
} from '@opentelemetry/sdk-trace-base';

const sampler = new ParentBasedSampler({
  root: new TraceIdRatioBasedSampler(0.1)
});

Tail sampling

A decisão ocorre depois que spans foram coletados. Assim, o sistema pode manter traces com erro, alta latência ou atributos específicos. Essa abordagem normalmente exige um collector com buffer e mais recursos.

Preservando erros

Uma política útil mantém todos os traces com status de erro e amostra apenas uma parte dos sucessos. Isso melhora diagnóstico sem multiplicar custo.

Latência

Traces acima de um limite podem ser mantidos integralmente. Use percentis e SLOs para definir o que é “lento”, em vez de um valor arbitrário.

Rotas de baixo volume

Uma taxa global pode apagar operações raras. Para rotas críticas com pouco tráfego, estabeleça uma amostragem mínima ou regra dedicada.

Não use dados sensíveis

Sampling não é mecanismo de privacidade. Mesmo um trace raro pode conter informação pessoal. Redija headers, tokens, payloads e identificadores sensíveis antes da exportação.

Baggage e atributos

Propague apenas contexto necessário. Baggage viaja entre serviços e pode aumentar headers. Use atributos de baixa cardinalidade para políticas de sampling.

Consistência entre serviços

O header traceparent carrega a decisão sampled. Proxies e gateways devem preservar o contexto. Consulte API Gateway no Node.js.

Collector

O OpenTelemetry Collector pode receber OTLP, aplicar processamento e encaminhar dados. Tail sampling no collector centraliza políticas, mas exige memória suficiente para traces em andamento.

Exemplo de políticas

  • 100% dos erros;
  • 100% das requisições acima de dois segundos;
  • 100% de operações administrativas;
  • 10% do tráfego normal;
  • 1% de endpoints de altíssimo volume.

Dimensionamento

Meça spans por trace, bytes por span, taxa de requisições e retenção. O custo depende do volume exportado, do backend e do número de atributos.

Observabilidade do sampling

Monitore:

  • traces recebidos e exportados;
  • taxa efetiva por serviço;
  • itens descartados por memória;
  • decisões por política;
  • atraso do collector;
  • erros de exportação.

Testes

Gere traces de sucesso, erro e alta latência. Confirme que a política mantém os casos importantes e que serviços filhos respeitam o parent.

Erros comuns

  • usar 100% em produção sem estimar custo;
  • amostrar cada serviço independentemente;
  • perder rotas raras;
  • fazer tail sampling sem memória suficiente;
  • usar atributos de alta cardinalidade;
  • acreditar que sampling protege dados sensíveis.

Conclusão

Trace Sampling no Node.js equilibra diagnóstico e custo. Head sampling é simples e previsível; tail sampling permite selecionar erros e latências depois de observar o trace completo.

Comece com parent-based ratio sampling, preserve erros e ajuste com métricas reais. Leia OpenTelemetry no Node.js, a documentação de sampling do OpenTelemetry e a documentação do Collector.

10 melhores cursos de programação em 2026

Descubra os melhores cursos de programação. Aprenda a escolher o curso ideal para iniciar ou avançar na carreira de desenvolvedor

POSTS RELACIONADOS

Ver todos

Seta para a direita