Logs & Observability

Analyseur traceparentet validateur W3C Trace Context

Collez un en-tête traceparent pour voir sa version, son trace-id, son parent-id et ses flags décodés champ par champ, ou passez en mode lot ou génération.

Analyseur traceparent

en-tête traceparent

Analyse et génération entièrement réalisées dans votre navigateur. Rien n'est envoyé vers un serveur ou un backend de traçage.

Résultat

Collez un en-tête traceparent, ou chargez un exemple, pour commencer.

Un en-tête traceparent paraît simple — quatre champs séparés par des tirets — jusqu'au jour où un microservice journalise une requête avec un trace-id composé uniquement de zéros, ou qu'un proxy réécrit silencieusement l'octet de version en une valeur que la spécification interdit explicitement. Cet analyseur traceparent vérifie l'en-tête contre la grammaire réelle de W3C Trace Context plutôt que de simplement regarder les tirets, pour distinguer un en-tête réellement cassé d'un en-tête qui semble juste inhabituel.

Utilisez-le quand une trace distribuée disparaît entre deux services et que vous devez savoir si l'en-tête lui-même était valide, quand vous testez une propagation manuelle d'en-têtes et avez besoin d'un en-tête d'exemple, ou quand vous relisez des logs et devez décoder toute une série de valeurs traceparent d'un coup plutôt qu'une par une.

Pourquoi utiliser cet analyseur traceparent

Conçu pour traquer de vrais bugs d'en-tête, pas seulement pour afficher joliment un en-tête déjà valide.

Chaque champ décodé et coloré

Cet analyseur traceparent découpe un en-tête en version, trace-id, parent-id et trace-flags, chacun affiché dans sa propre couleur, avec une lecture en langage clair de l'octet de flags (échantillonné ou non, et si un bit réservé est activé de façon inattendue).

Un en-tête traceparent découpé en quatre champs colorés : version, trace-id, parent-id et trace-flags

Détecte exactement les cas interdits par la spécification

Une version ff, un trace-id tout à zéro et un parent-id tout à zéro ressemblent tous à de l'hexadécimal valide, mais sont explicitement interdits par W3C Trace Context — cet analyseur traceparent les signale nommément au lieu de se contenter de vérifier longueur et jeu de caractères.

Les trois cas interdits par la spécification : version ff, trace-id tout à zéro et parent-id tout à zéro

Ce que cet analyseur vérifie qu'un coup d'œil ne révèle pas

Trois choses à savoir avant de coller un en-tête tiré des logs de production.

01

Coller un en-tête, ou charger un exemple limite

L'analyse s'exécute automatiquement 300ms après l'arrêt de la frappe — aucun bouton nécessaire sauf si l'analyse automatique est désactivée. Les trois exemples ne sont pas choisis au hasard : ils chargent un en-tête valide, un en-tête en version ff, et un en-tête avec un trace-id tout à zéro — les trois cas limites que la spécification nomme explicitement.

  • Ctrl/Cmd+Entrée analyse immédiatement, en court-circuitant le délai
02

Ajouter une valeur tracestate, ou passer en mode lot

Le champ tracestate est replié par défaut car tous les en-têtes n'en portent pas — activez-le pour valider les paires vendor=value selon les limites de la spécification (32 membres, 256 caractères). Pour vérifier tout un export de logs plutôt qu'un seul en-tête, passez en mode lot et collez un traceparent par ligne.

  • Le mode lot est volontairement manuel : il ne relance pas l'analyse à chaque frappe pendant que vous collez
03

Lire le résultat champ par champ, puis copier ou exporter

Un en-tête en version 00 est entièrement validé ; toute version supérieure est décodée mais ses champs supplémentaires sont affichés tels quels, jamais interprétés. Copier et télécharger se désactivent dès que vous modifiez la saisie, pour ne jamais exporter un résultat périmé par erreur.

  • Passez en mode Générer pour produire un traceparent conforme à la spécification pour une requête de test

Ce que font réellement l'analyseur et le générateur

Une vraie validation W3C Trace Context, pas une expression régulière qui vérifie juste la position des tirets.

Décomposition complète des quatre champs

Version, trace-id, parent-id et trace-flags sont chacun analysés et étiquetés séparément, avec une lecture en langage clair du bit d'échantillonnage.

Validation stricte et fidèle à la spécification

Rejette la version ff, un trace-id tout à zéro, un parent-id tout à zéro, des longueurs de champ incorrectes et de l'hexadécimal en majuscules — des cas qu'une expression régulière laxiste laisse généralement passer.

Validation par lot avec résumé ligne par ligne

Collez tout un extrait de logs contenant des valeurs traceparent et obtenez un décompte valides/invalides/vides, avec le champ exact en cause pour chaque ligne fautive.

Vérification de la structure tracestate

Valide les membres key=value selon le jeu de caractères de la spécification, le format tenant@vendor, la limite de 256 caractères par valeur, le plafond de 32 membres et l'interdiction des clés dupliquées.

Génération d'un en-tête de test conforme

Génère un traceparent en version 00 avec un trace-id et un parent-id aléatoires cryptographiquement sûrs et garantis non nuls, pour ne jamais tester par erreur avec un placeholder invalide.

Ce que cet outil vérifie, et ce qu'il ne fait volontairement pas

À lire avant de considérer un résultat vert comme la preuve d'un pipeline de traçage sain.

Un en-tête valide ne prouve pas qu'une trace existe
Cet outil vérifie uniquement une chaîne de caractères par rapport à la grammaire de W3C Trace Context. Il ne contacte jamais Jaeger, Datadog, Honeycomb ni aucun autre backend, donc « valide » signifie seulement « bien formé », pas « réellement enregistré ».
Seul W3C Trace Context est pris en charge
Les en-têtes B3 de Zipkin, le X-Cloud-Trace-Context de Google Cloud et le sentry-trace de Sentry utilisent un nombre de champs et des séparateurs différents. Cet analyseur ne lit ni ne convertit ces formats.
Les saisies invalides sont signalées, jamais corrigées silencieusement
Un trace-id de 31 caractères n'est pas complété par un zéro, et de l'hexadécimal en majuscules n'est pas mis en minuscules avant validation — ce sont exactement le genre d'erreurs réelles qui cassent la propagation des traces, elles sont donc révélées plutôt que masquées.
La saisie par lot est plafonnée à 500 lignes
Tout s'exécute dans l'onglet du navigateur, donc un collage de logs extrêmement volumineux est limité par la mémoire disponible de l'appareil. Découpez les exports plus grands en lots de 500 lignes ou moins.

FAQ de l'analyseur traceparent

Des questions réelles rencontrées en déboguant des en-têtes W3C Trace Context.

Que signifie exactement le flag sampled (01) dans trace-flags ?

trace-flags est un seul octet écrit en deux caractères hexadécimaux ; le bit 0 est le flag sampled. 01 signifie que l'appelant recommande que cette trace soit enregistrée par le backend de traçage, 00 signifie le contraire — c'est une recommandation transmise le long de la chaîne d'appels, pas une garantie qu'un système ait réellement capturé la trace.

Quelle est la différence entre trace id et span id ?

Le trace-id identifie de façon unique l'ensemble de la trace distribuée et est partagé par tous les services traversés par la requête. Le span-id (appelé parent-id dans la spécification W3C) identifie un segment particulier de cette chaîne, et change généralement à chaque service tout en partageant le même trace-id.

Quelle est la différence entre traceparent et tracestate ?

traceparent transporte les quatre champs obligatoires — version, trace-id, parent-id et trace-flags — que tout système conforme à W3C doit comprendre. tracestate est optionnel et contient des données key=value propres à chaque fournisseur, que d'autres systèmes n'ont pas besoin de comprendre.

Pourquoi la version ff est-elle interdite dans traceparent ?

La spécification W3C Trace Context réserve ff pour qu'elle ne soit jamais confondue avec un futur numéro de version — elle est explicitement interdite, quelle que soit la correction du reste de l'en-tête. Cet analyseur la rejette nommément plutôt que de la traiter comme une version hexadécimale ordinaire.

Pourquoi un trace-id tout à zéro est-il invalide ?

Un trace-id tout à zéro ne peut rien identifier, donc la spécification l'interdit purement et simplement, même si « 32 zéros » passe une vérification naïve du format hexadécimal. La même règle s'applique à un parent-id (span-id) tout à zéro.

Comment corriger un en-tête W3C Trace Context invalide ?

Analysez-le d'abord ici pour voir précisément quel champ échoue et pourquoi. La plupart des cassures réelles viennent d'un proxy ou d'un pipeline de logs qui tronque l'en-tête, y mélange de l'hexadécimal en majuscules, ou transmet par erreur une valeur modèle comme des zéros au lieu d'un identifiant réellement généré.

Un en-tête mal évalué par cet analyseur ?

Utiliser l'analyseur traceparent maintenant

Analysez un en-tête traceparent, validez-en plusieurs par lot, ou générez un nouvel en-tête de test — entièrement dans votre navigateur, sans rien envoyer.

Mettez-le en favori pour la prochaine fois qu'une trace disparaît entre deux services.

Fait partie de la catégorie Developer Tools & DevOps sur HeyUtils.