Logs & Observability

Analizador de traceparenty validador de W3C Trace Context

Pega una cabecera traceparent para ver su version, trace-id, parent-id y flags decodificados campo por campo, o cambia al modo por lotes o al modo generar.

Analizador de traceparent

cabecera traceparent

El análisis y la generación ocurren totalmente en tu navegador. Nada se sube ni se envía a un backend de trazado.

Resultado

Pega una cabecera traceparent, o carga un ejemplo, para empezar.

Una cabecera traceparent parece simple —cuatro campos separados por guiones— hasta que un microservicio registra una petición con un trace-id lleno de ceros, o un proxy reescribe silenciosamente el byte de versión con un valor que la especificación prohíbe explícitamente. Este analizador de traceparent comprueba la cabecera contra la gramática real de W3C Trace Context en lugar de solo mirar los guiones, para distinguir una cabecera realmente rota de una que simplemente parece poco familiar.

Úsalo cuando una traza distribuida desaparece entre dos servicios y necesitas saber si la cabecera en sí era válida, cuando estás implementando propagación manual de cabeceras y necesitas una de ejemplo para probar, o cuando revisas logs y necesitas decodificar de golpe varios valores traceparent en lugar de uno por uno.

Por qué usar este analizador de traceparent

Pensado para encontrar errores reales de cabecera, no solo para mostrar bonita una cabecera que ya era válida.

Cada campo decodificado y coloreado

Este analizador de traceparent divide una cabecera en version, trace-id, parent-id y trace-flags, cada uno en su propio color, además de una lectura en lenguaje claro del byte de flags (si está muestreado o no, y si algún bit reservado está activado inesperadamente).

Una cabecera traceparent dividida en cuatro campos coloreados: version, trace-id, parent-id y trace-flags

Detecta exactamente los casos que la especificación prohíbe

Una versión ff, un trace-id todo ceros y un parent-id todo ceros parecen hexadecimal válido, pero W3C Trace Context los prohíbe explícitamente — este analizador de traceparent los señala por su nombre en lugar de limitarse a comprobar longitud y juego de caracteres.

Los tres casos que la especificación prohíbe: versión ff, trace-id todo ceros y parent-id todo ceros

Qué comprueba este analizador que un vistazo rápido no revela

Tres cosas que conviene saber antes de pegar una cabecera sacada de logs de producción.

01

Pega una cabecera, o carga un ejemplo límite

El análisis se ejecuta automáticamente 300ms después de dejar de escribir — no hace falta ningún botón salvo que desactives el análisis automático. Los tres ejemplos no son aleatorios: cargan una cabecera válida, una con versión ff y una con trace-id todo ceros, los tres casos límite que la especificación menciona explícitamente.

  • Ctrl/Cmd+Intro analiza al instante, saltándose la espera
02

Añade un valor tracestate, o cambia al modo por lotes

El campo tracestate está colapsado por defecto porque no todas las cabeceras lo llevan — actívalo para validar los pares vendor=value contra los límites de la especificación (32 miembros, 256 caracteres). Si necesitas revisar toda una exportación de logs en vez de una sola cabecera, cambia al modo por lotes y pega un traceparent por línea.

  • El modo por lotes es manual a propósito: no vuelve a ejecutarse con cada tecla mientras todavía estás pegando
03

Lee el resultado campo por campo, luego copia o exporta

Una cabecera de versión 00 se valida por completo; cualquier versión superior se decodifica pero sus campos adicionales se muestran tal cual, nunca se interpretan. Copiar y descargar se desactivan en cuanto editas la entrada, para que nunca exportes por error un resultado desactualizado.

  • Cambia al modo Generar para producir un traceparent nuevo y válido para una petición de prueba

Qué hacen realmente el analizador y el generador

Validación real de W3C Trace Context, no una expresión regular que solo revisa la posición de los guiones.

Desglose completo de los cuatro campos

Version, trace-id, parent-id y trace-flags se analizan y etiquetan por separado, con una lectura en lenguaje claro del bit de muestreo.

Validación estricta y fiel a la especificación

Rechaza la versión ff, un trace-id todo ceros, un parent-id todo ceros, longitudes de campo incorrectas y hexadecimal en mayúsculas — justo los casos que una expresión regular laxa suele dejar pasar.

Validación por lotes con resumen por línea

Pega todo un extracto de logs con valores traceparent y obtén un conteo de válidas/inválidas/vacías, más el campo exacto que falla en cada línea con error.

Comprobación de estructura de tracestate

Valida los miembros key=value contra el juego de caracteres de la especificación, el formato tenant@vendor, el límite de 256 caracteres por valor, el tope de 32 miembros y la regla de claves sin duplicar.

Generación de cabeceras de prueba válidas

Genera un traceparent de versión 00 con trace-id y parent-id aleatorios criptográficamente seguros y garantizados distintos de cero, para que nunca pruebes por error con un valor de relleno inválido.

Qué comprueba esta herramienta, y qué no hace a propósito

Léelo antes de asumir que un resultado en verde significa que tu pipeline de trazado está sano.

Una cabecera válida no demuestra que exista una traza
Esta herramienta solo comprueba una cadena de texto contra la gramática de W3C Trace Context. Nunca contacta con Jaeger, Datadog, Honeycomb ni ningún otro backend, así que "válida" solo significa "bien formada", no "realmente registrada".
Solo se admite W3C Trace Context
Las cabeceras B3 de Zipkin, el X-Cloud-Trace-Context de Google Cloud y el sentry-trace de Sentry usan un número de campos y separadores distintos. Este analizador no lee ni convierte esos formatos.
La entrada inválida se reporta, nunca se corrige en silencio
Un trace-id de 31 caracteres no se rellena con un cero, y el hexadecimal en mayúsculas no se convierte a minúsculas antes de validar — ambos son exactamente el tipo de error real que rompe la propagación de trazas, así que se muestran en vez de ocultarse.
La entrada por lotes está limitada a 500 líneas
Todo se ejecuta en la pestaña del navegador, así que pegar logs extremadamente grandes queda limitado por la memoria disponible del dispositivo. Divide las exportaciones más grandes en lotes de 500 líneas o menos.

Preguntas frecuentes sobre el analizador de traceparent

Preguntas reales que surgen al depurar cabeceras W3C Trace Context.

¿Qué significa exactamente el flag sampled (01) en trace-flags?

trace-flags es un solo byte escrito como dos caracteres hexadecimales; el bit 0 es el flag sampled. 01 significa que quien llama recomienda que el backend de trazado registre esta traza, 00 significa lo contrario — es una recomendación que viaja a lo largo de la cadena de llamadas, no una garantía de que algún sistema haya capturado realmente la traza.

¿Cuál es la diferencia entre trace id y span id?

El trace-id identifica de forma única toda la traza distribuida y lo comparten todos los servicios por los que pasa la petición. El span-id (llamado parent-id en la especificación W3C) identifica un tramo concreto de esa cadena y normalmente cambia en cada servicio, aunque comparten el mismo trace-id.

¿Cuál es la diferencia entre traceparent y tracestate?

traceparent transporta los cuatro campos obligatorios —version, trace-id, parent-id y trace-flags— que todo sistema compatible con W3C debe entender. tracestate es opcional, con datos key=value específicos de cada proveedor, que un sistema de trazado puede añadir sin que otros sistemas necesiten entenderlos.

¿Por qué la versión ff está prohibida en traceparent?

La especificación W3C Trace Context reserva ff para que nunca se confunda con un número de versión futuro — está explícitamente prohibida sin importar lo correcto que esté formateado el resto de la cabecera. Este analizador la rechaza por su nombre en lugar de tratarla como una versión hexadecimal cualquiera.

¿Por qué un trace-id de todo ceros no es válido?

Un trace-id de todo ceros no puede identificar nada, así que la especificación lo prohíbe directamente, aunque "32 ceros" pase una comprobación ingenua de formato hexadecimal. La misma regla se aplica a un parent-id (span-id) de todo ceros.

¿Cómo se corrige una cabecera W3C Trace Context inválida?

Analízala primero aquí para ver exactamente qué campo falla y por qué. La mayoría de los fallos reales vienen de un proxy o un pipeline de logs que trunca la cabecera, mezcla hexadecimal en mayúsculas, o reenvía por error un valor de plantilla como todo ceros en lugar de un identificador realmente generado.

¿Encontraste una cabecera que este analizador evalúa mal?

Usa ya el analizador de traceparent

Analiza una cabecera traceparent, valida varias por lotes, o genera una nueva de prueba — todo en tu navegador, sin subir nada.

Guárdalo en tus marcadores para la próxima vez que una traza desaparezca entre dos servicios.

Parte de la categoría Developer Tools & DevOps en HeyUtils.