# Validador de propagação OpenTelemetry W3C traceparent / tracestate / baggage e cabeçalhos OTLP

Valida traceparent pela ABNF do W3C Trace Context (versão / trace-id de 16 bytes / parent-id de 8 bytes / trace-flags de 1 byte; zeros e versão ff rejeitados, maiúsculas avisadas), tracestate (≤32 membros, chaves simples e tenant@sistema, duplicatas avisadas) e baggage (valores percent-encoded com propriedades opacas); verifica o Content-Type de exportação OTLP e o contexto binário de 25 bytes do grpc-trace-context-bin; correlaciona dois traceparent num round-trip simulado (estabilidade do trace-id e colisão de um span-id filho aleatório) e emite cabeçalhos normalizados.

> Página canônica: https://elysiatools.com/pt/tools/opentelemetry-w3c-traceparent-tracestate-baggage-and-otlp-protobuf-headers-propagation-validator

- **Categoria:** Development

- **Palavras-chave:** W3C Trace Context, traceparent, tracestate, baggage, OpenTelemetry, cabeçalhos OTLP, rastreamento distribuído, span id, validação de propagação

## Visão geral

Sintaxe do traceparent: version(2 HEX)-trace-id(32 HEX minúsculo)-parent-id(16 HEX minúsculo)-trace-flags(2 HEX); sem espaços internos; trace-id/parent-id nunca todos zero; a versão ff é reservada e inválida; bit0 = sampled, receptores da versão 00 ignoram o resto. tracestate é uma lista key=value separada por OWS","OWS (≤32), chaves simples (início lcalpha) ou system-id@tenant, valores sem =/, espaços e ≤256 caracteres imprimíveis. baggage: primeiro segmento key=value (valor restrito a baggage-octet, percent-encoding obrigatório fora da faixa, sequências % inválidas dão erro); os ;prop seguintes são propriedades opacas. OTLP: exportação binária exige Content-Type: application/x-protobuf (JSON: application/json); no gRPC grpc-trace-context-bin = base64(trace-id 16B ‖ span-id 8B ‖ flags 1B), 25 bytes, com verificação de ida e volta contra o traceparent. Round-trip de correlação: o mesmo trace-id rota novos span-id em cada salto (8 bytes aleatórios, não nulos, sem colisão com o pai); um trace-id estável une os contextos num único trace distribuído.

## Entradas

- **cabeçalho traceparent** (text): 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
- **cabeçalho tracestate** (text): congo=t61rcWkgMzE,rojo=00f067aa0ba902b7
- **cabeçal baggage** (text): userId=alice;serverNode=DF%2028
- **transporte OTLP** (select)
- **Content-Type de exportação** (text): application/x-protobuf
- **grpc-trace-context-bin (base64)** (text): S/kvNXezTaajzpKdDg5HNgDw…
- **Segundo traceparent (correlação)** (text): 00-4bf92f35…-aabbccddeeff0011-01

## Quando usar

- Depurar falhas na propagação de contexto de rastreamento entre microsserviços HTTP ou gRPC.
- Validar a sintaxe de cabeçalhos traceparent, tracestate e baggage antes de implantar coletores OpenTelemetry.
- Verificar a compatibilidade de cabeçalhos Content-Type e metadados binários em exportações OTLP.

## Como funciona

- Analisa o cabeçalho traceparent verificando versão, tamanho de 16 bytes do trace-id, 8 bytes do parent-id e flags hexadecimais.
- Valida listas tracestate (limite de 32 membros e formato de chave de tenant) e baggage (codificação percent-encoded e propriedades).
- Decodifica o contexto binário grpc-trace-context-bin e compara a estabilidade de identificadores com um segundo traceparent de correlação.

## Casos de uso

- Auditar cabeçalhos HTTP gerados por SDKs e bibliotecas de instrumentação customizadas.
- Investigar perda de rastreabilidade em chamadas gRPC que utilizam metadados binários.
- Simular a correlação entre spans pais e filhos para testar coletores de observabilidade.

## Perguntas frequentes

### Por que o trace-id ou parent-id com todos os dígitos zero é inválido?

A especificação W3C Trace Context proíbe identificadores compostos exclusivamente por zeros (000...000), tratando-os como contexto ausente ou corrompido.

### Qual o Content-Type correto para exportação binária via OTLP?

O transporte binário Protobuf via HTTP exige explicitamente o cabeçalho 'application/x-protobuf' (ou 'application/json' se serializado em JSON).

### Quantos membros são permitidos no cabeçalho tracestate?

A especificação W3C permite uma lista separada por vírgulas contendo no máximo 32 membros no formato key=value.

### Como o grpc-trace-context-bin é estruturado?

Ele é composto por 25 bytes codificados em Base64: 16 bytes para trace-id, 8 bytes para span-id e 1 byte para trace-flags.

### Por que o uso de letras maiúsculas no traceparent gera avisos?

O W3C exige que valores hexadecimais de trace-id e parent-id sejam representados estritamente em letras minúsculas.

## Ferramentas relacionadas

- [Comparador de algoritmos de hash](https://elysiatools.com/pt/tools/hash-algorithm-comparator): Aplica MD5, SHA-1, SHA-256, SHA-512, BLAKE2b e BLAKE3 à mesma entrada e compara: tamanho, digest hex/Base64, status de segurança (quebrado/moderno) e benchmark de velocidade relativa. Útil para ensino, escolha de algoritmo ou checagem de checksums.
- [Gerador de PKCE Code Verifier e Challenge](https://elysiatools.com/pt/tools/pkce-code-verifier-generator): Gera, valida e verifica pares code_verifier / code_challenge PKCE (RFC 7636) de OAuth2 / OIDC. Três modos: (1) gerar um par novo a partir de bytes aleatórios criptográficos (256/384/512/768 bits), (2) auditar um verifier existente frente ao RFC — comprimento (43–128), charset \[A-Za-z0-9-._~\] e ≥256 bits de entropia, e (3) verificar um par recalculando BASE64URL(SHA256(verifier)). Opcionalmente constrói a URL completa de autorização e o corpo de troca de token. Complementa o nonce-generator genérico (que só emite o par) com auditoria de conformidade RFC e verificação de pares.
- [Criptografar / Descriptografar RSA](https://elysiatools.com/pt/tools/rsa-encrypt-decrypt): Criptografa texto com uma chave pública RSA ou descriptografa o texto cifrado com a chave privada correspondente, usando padding OAEP (SHA-1 ou SHA-256). Trata mensagens longas em blocos. Chaves e dados ficam locais. PKCS#1 v1.5 não é oferecido (Node o desabilita para descriptografia devido a ataques Bleichenbacher).
- [Gerador de Data URI](https://elysiatools.com/pt/tools/data-uri-generator): Converte arquivos em Data URIs (Base64 ou porcentagem-codificada) para incorporar imagens, fontes e recursos diretamente em HTML, CSS ou Markdown
- [Conversor Base64](https://elysiatools.com/pt/tools/base64-converter): Codifica e decodifica dados para/de formato Base64 com opções URL-safe
- [Codecs de texto estendidos (Base65536 + netstring)](https://elysiatools.com/pt/tools/extended-text-base-codecs): Codifique e decodifique com codecs menos comuns: Base65536 (binário → Unicode denso) e netstring (enquadramento autodelimitante).
- [Ponte de PDF (OCR) para JSON estruturado](https://elysiatools.com/pt/tools/ocr-pdf-to-structured-json-bridge): Extrai a camada de texto do PDF com geometria (linhas por posição y, tabelas por vaos de coluna, títulos por tamanho de fonte, pares chave-valor com dois pontos) e preenche campo a campo um JSON Schema do usuário — rótulos pareados por chaves normalizadas, valores coagidos aos tipos declarados e validados com ajv.
- [Conversor de Leet Speak](https://elysiatools.com/pt/tools/leet-speak-converter): Converte texto para e a partir de leet speak (1337). Codifica com os estilos Básico, Completo ou Maiúsculas, ou decodifica leet em texto simples.

## Exemplos

- [Exemplos OpenTelemetry](https://elysiatools.com/pt/samples/opentelemetry): Exemplos de padrões de observabilidade OpenTelemetry incluindo instrumentação, tracing, métricas e logging em múltiplos idiomas e frameworks
- [Exemplos de Rastreamento Distribuído](https://elysiatools.com/pt/samples/distributed-tracing-samples): Exemplos completos de rastreamento distribuído usando Jaeger, OpenTelemetry e ferramentas modernas de observabilidade
- [Amostras de Áudio MP3 Livres de Direitos Autorais](https://elysiatools.com/pt/samples/mp3-samples): Coleção de amostras de áudio livres de direitos autorais para testes e desenvolvimento, incluindo sons da natureza, música de meditação e áudio ambiente
- [Exemplos de Processamento de Imagem Web Python](https://elysiatools.com/pt/samples/web-image-processing-python): Exemplos de processamento de imagem Web Python usando PIL/Pillow incluindo leitura, salvamento, redimensionamento e conversão de formato
