# Validateur de propagation OpenTelemetry W3C traceparent / tracestate / baggage et en-têtes OTLP

Valide traceparent selon l'ABNF de W3C Trace Context (version / trace-id 16 octets / parent-id 8 octets / trace-flags 1 octet ; zéros et version ff rejetés, majuscules signalées), tracestate (≤32 membres, clés simples et tenant@système, doublons signalés) et baggage (valeurs percent-encodées avec propriétés opaques) ; vérifie le Content-Type d'export OTLP et le contexte binaire de 25 octets de grpc-trace-context-bin ; corrèle deux traceparent dans un aller-retour simulé (stabilité du trace-id et collision d'un span-id enfant aléatoire) et émet des en-têtes normalisés.

> Page canonique: https://elysiatools.com/fr/tools/opentelemetry-w3c-traceparent-tracestate-baggage-and-otlp-protobuf-headers-propagation-validator

- **Catégorie:** Development

- **Mots-clés:** W3C Trace Context, traceparent, tracestate, baggage, OpenTelemetry, en-têtes OTLP, traçage distribué, span id, validation de propagation

## Présentation

Syntaxe de traceparent : version(2 HEX)-trace-id(32 HEX minuscules)-parent-id(16 HEX minuscules)-trace-flags(2 HEX) ; aucun espace interne ; trace-id/parent-id jamais nuls ; la version ff est réservée et invalide ; bit0 = sampled, les récepteurs version 00 ignorent le reste. tracestate est une liste key=value séparée par OWS","OWS (≤32), clés simples (début lcalpha) ou system-id@tenant, valeurs sans =/, ni espace et ≤256 caractères imprimables. baggage : premier segment key=value (valeur limitée aux baggage-octet, encodage-percent obligatoire hors plage, séquences % invalides en erreur) ; les ;prop suivants sont des propriétés opaques. OTLP : l'export binaire exige Content-Type: application/x-protobuf (JSON : application/json) ; en gRPC grpc-trace-context-bin = base64(trace-id 16o ‖ span-id 8o ‖ flags 1o), 25 octets, avec aller-retour face à traceparent. Round-trip de corrélation : un même trace-id fait tourner de nouveaux span-id à chaque saut (8 octets aléatoires, non nuls, sans collision avec le parent) ; un trace-id stable réunit les contextes en une seule trace distribuée.

## Entrées

- **en-tête traceparent** (text): 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
- **en-tête tracestate** (text): congo=t61rcWkgMzE,rojo=00f067aa0ba902b7
- **en-tête baggage** (text): userId=alice;serverNode=DF%2028
- **transport OTLP** (select)
- **Content-Type d'export** (text): application/x-protobuf
- **grpc-trace-context-bin (base64)** (text): S/kvNXezTaajzpKdDg5HNgDw…
- **Second traceparent (corrélation)** (text): 00-4bf92f35…-aabbccddeeff0011-01

## Quand l'utiliser

- Lors du débogage d'une rupture de trace distribuée entre plusieurs microservices HTTP ou gRPC.
- Pour vérifier le format d'encodage de baggage et la validité des clés ou valeurs de tracestate avant injection.
- Pour tester la conformité des en-têtes OTLP (Content-Type, grpc-trace-context-bin) envoyés à un collecteur OpenTelemetry.

## Fonctionnement

- L'outil analyse l'en-tête traceparent selon la grammaire ABNF W3C (version, trace-id 16 octets, parent-id 8 octets, trace-flags) en vérifiant l'absence de valeurs nulles ou de versions réservées.
- Il inspecte tracestate (limite de 32 membres, format des clés tenant, absence de séparateurs interdits) et baggage (encodage-percent et propriétés opaques).
- Il contrôle la cohérence du Content-Type OTLP, décode le contexte binaire gRPC de 25 octets en le comparant au traceparent, et vérifie la stabilité du trace-id lors d'un saut de corrélation.

## Cas d'usage

- Validation des contextes de propagation dans les passerelles d'API et proxies de maillage de services.
- Audit de conformité des bibliothèques d'instrumentation OpenTelemetry personnalisées.
- Diagnostic d'incohérences de corrélation de traces lors de transitions de protocoles HTTP vers gRPC.

## Questions fréquentes

### Quelles sont les valeurs interdites pour trace-id et parent-id dans traceparent ?

Les identifiants ne doivent jamais être entièrement composés de zéros et doivent respecter leur taille exacte en hexadécimal minuscule.

### Pourquoi la version 'ff' est-elle rejetée dans traceparent ?

La version 'ff' est explicitement réservée par la spécification W3C Trace Context et considérée comme invalide.

### Quel Content-Type est requis pour l'export binaire OTLP HTTP ?

L'export binaire Protobuf exige l'en-tête Content-Type: application/x-protobuf (ou application/json pour le format JSON).

### Quelle est la structure de l'en-tête grpc-trace-context-bin ?

Il s'agit d'une chaîne base64 représentant exactement 25 octets : 16 octets de trace-id, 8 octets de span-id et 1 octet de drapeaux.

### Combien de membres la liste tracestate peut-elle contenir au maximum ?

La spécification W3C limite tracestate à un maximum de 32 membres séparés par des virgules.

## Outils associés

- [Comparateur d’algorithmes de hachage](https://elysiatools.com/fr/tools/hash-algorithm-comparator): Hache la même entrée avec MD5, SHA-1, SHA-256, SHA-512, BLAKE2b et BLAKE3 et les compare : longueur, digest hex/Base64, statut de sécurité (cassé/moderne) et benchmark de vitesse relatif. Idéal pour l’enseignement, le choix d’algorithme ou la vérification de checksums.
- [Générateur de PKCE Code Verifier et Challenge](https://elysiatools.com/fr/tools/pkce-code-verifier-generator): Génère, valide et vérifie les paires code_verifier / code_challenge PKCE (RFC 7636) OAuth2 / OIDC. Trois modes : (1) générer une nouvelle paire depuis des octets aléatoires cryptographiques (256/384/512/768 bits), (2) auditer un verifier existant selon le RFC — longueur (43–128), charset \[A-Za-z0-9-._~\] et ≥256 bits d'entropie, et (3) vérifier une paire en recalculant BASE64URL(SHA256(verifier)). Construit en option l'URL complète de requête d'autorisation et le corps d'échange de token. Complète le nonce-generator générique (qui n'émet que la paire) avec l'audit de conformité RFC et la vérification de paire.
- [Chiffrement / Déchiffrement RSA](https://elysiatools.com/fr/tools/rsa-encrypt-decrypt): Chiffre du texte avec une clé publique RSA ou déchiffre le texte chiffré avec la clé privée correspondante, en utilisant le padding OAEP (SHA-1 ou SHA-256). Gère les longs messages par blocs. Les clés et données restent locales. PKCS#1 v1.5 n'est pas proposé (Node le désactive pour le déchiffrement à cause des attaques Bleichenbacher).
- [Générateur de Data URI](https://elysiatools.com/fr/tools/data-uri-generator): Convertit les fichiers en Data URI (Base64 ou pourcentage-encodé) pour intégrer images, polices et ressources directement dans HTML, CSS ou Markdown
- [Convertisseur Base64](https://elysiatools.com/fr/tools/base64-converter): Encode et décode les données vers/depuis le format Base64 avec options URL-safe
- [Codecs texte étendus (Base65536 + netstring)](https://elysiatools.com/fr/tools/extended-text-base-codecs): Codez et décodez avec des codecs moins courants : Base65536 (binaire → Unicode dense) et netstring (encadrement auto-délimité).
- [Pont PDF (OCR) vers JSON structuré](https://elysiatools.com/fr/tools/ocr-pdf-to-structured-json-bridge): Extrait la couche texte du PDF avec la géométrie (lignes par position y, tableaux par écarts de colonnes, titres par taille de police, paires clé-valeur à deux-points) puis remplit champ par champ un JSON Schema fourni — libellés appariés par clés normalisées, valeurs coercées vers les types déclarés et validées par ajv.
- [Convertisseur Leet Speak](https://elysiatools.com/fr/tools/leet-speak-converter): Convertit le texte vers et depuis le leet speak (1337). Code avec les styles Basique, Complet ou Majuscules, ou décode le leet en texte brut.

## Exemples

- [Exemples OpenTelemetry](https://elysiatools.com/fr/samples/opentelemetry): Exemples de standards d'observabilité OpenTelemetry incluant instrumentation, traçage, métriques et logging dans plusieurs langages et frameworks
- [Exemples de Traçage Distribué](https://elysiatools.com/fr/samples/distributed-tracing-samples): Exemples complets de traçage distribué utilisant Jaeger, OpenTelemetry et outils d'observabilité modernes
- [Échantillons Audio MP3 Libres de Droits](https://elysiatools.com/fr/samples/mp3-samples): Collection d'échantillons audio libres de droits pour les tests et le développement, incluant les sons de la nature, la musique de méditation et l'audio ambiant
- [Exemples de Traitement d'Images Web Python](https://elysiatools.com/fr/samples/web-image-processing-python): Exemples de traitement d'images Web Python utilisant PIL/Pillow incluant la lecture, l'enregistrement, le redimensionnement et la conversion de format
