Correlación de trazas del frontend y el backend
Propague el contexto de traza mediante solicitudes fetch para que los spans del backend aparezcan en la misma traza que la acción de UI que los desencadenó.
Correlación de trazas del frontend y el backend es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
El objetivo de las trazas distribuidas
El objetivo último de la observabilidad del frontend es obtener una única traza que conecte el clic de un usuario en React con la red, los controladores de API, las llamadas entre servicios y, finalmente, la consulta a la base de datos que causó una respuesta lenta. Esta traza de extremo a extremo hace que el análisis de la causa raíz sea inmediato.
Estándar W3C TraceContext
La especificación W3C TraceContext define el formato del encabezado traceparent: version-traceId-parentSpanId-flags. Un valor de ejemplo es: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. El ID de traza se comparte en toda la traza distribuida; el ID del span principal cambia en cada salto.
Inyección automática de encabezados
La instrumentación de fetch de OTel inyecta automáticamente el encabezado traceparent en cada solicitud fetch saliente. El encabezado contiene el ID de traza actual y el ID del span de fetch del frontend como principal, lo que permite al backend crear un span secundario vinculado al span del frontend.
Continuación de la traza en el backend
En el servidor, la instrumentación HTTP de OTel para Node.js/Express lee el encabezado traceparent entrante y crea spans que son secundarios del span de fetch del frontend. El ID de traza se conserva, por lo que Jaeger o Grafana Tempo muestran toda la cadena —span del navegador → span de Express → span de la base de datos— en una única vista de cascada.
Visualización de trazas en Jaeger o Grafana Tempo
Con el frontend y el backend instrumentados, abra Jaeger o Grafana Tempo y busque un ID de traza. Verá la cascada completa: el span del componente React en la parte superior, el span de fetch debajo, después el span del controlador de rutas de Express y, por último, el span de la consulta a la base de datos, todos con sus duraciones y atributos.
Correlación por usuario
Establezca user.id como atributo en todos los spans de su aplicación de React mediante span.setAttribute('user.id', userId). Haga lo mismo en el backend. Ahora puede filtrar su backend de observabilidad para mostrar todas las trazas correspondientes a un ID de usuario específico, lo que le permite diagnosticar problemas informados por un cliente concreto.
Correlación por sesión
Genere un ID de sesión único al cargar la página y establézcalo como session.id en todos los spans del frontend. Inclúyalo en los encabezados de las solicitudes para que el backend también lo adjunte a sus spans. La correlación por sesión permite reconstruir la secuencia completa de acciones que realizó un usuario durante una sesión.
Vinculación de sesiones de RUM con trazas
Las herramientas comerciales como Datadog integran de forma nativa las sesiones de RUM con las trazas de APM. El SDK de RUM de Datadog inyecta un encabezado específico (X-Datadog-Trace-Id) en las solicitudes fetch, y el SDK de APM de Datadog en el backend lo lee para vincular la reproducción de la sesión de RUM con la traza distribuida; puede ver la reproducción de la sesión y la traza simultáneamente.
El beneficio de la correlación
Considere el caso de un usuario que se queja de que el proceso de pago es lento. Con las trazas correlacionadas, busca por user.id en su backend de observabilidad, encuentra la traza del proceso de pago y ve inmediatamente que la ralentización se debió a una consulta de 900 ms a la base de datos que unía dos tablas grandes, algo invisible para las métricas del frontend por sí solas.
OpenTelemetry Collector como proxy
Los navegadores no pueden enviar trazas directamente a Jaeger u otros backends debido a las restricciones de CORS y a la exposición de credenciales. En su lugar, ejecute un OTel Collector como proxy: configure OTLPTraceExporter para que envíe los datos a su endpoint del Collector, que después los distribuirá a Jaeger, Grafana Tempo o cualquier otro backend.
Consideraciones de privacidad
Las trazas del frontend pueden capturar datos sensibles de forma involuntaria: valores de campos de formularios en las URL, PII en los atributos de los spans o tokens de sesión en los encabezados. Revise su instrumentación para asegurarse de que no se incluyan datos sensibles en los atributos de los spans. Use span.setAttribute con moderación y sanee los parámetros de consulta de las URL antes de registrarlos.
Formato del encabezado traceparent
¿Cuál es el formato del encabezado traceparent de W3C TraceContext?
Resumen de la lección
Correlacionar las trazas del frontend y del backend proporciona visibilidad de extremo a extremo en todo el recorrido de una solicitud del usuario. Los encabezados traceparent de W3C TraceContext conectan automáticamente los spans de fetch del navegador con los spans del backend mediante la instrumentación de OTel. Enriquezca todos los spans con user.id y session.id para realizar una depuración específica. Use un OTel Collector como proxy entre el navegador y el backend para evitar problemas de CORS y la exposición de credenciales.
Preguntas frecuentes
¿La lección «Correlación de trazas del frontend y el backend» es gratis?
Sí — el texto completo de «Correlación de trazas del frontend y el backend» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Correlación de trazas del frontend y el backend»?
Propague el contexto de traza mediante solicitudes fetch para que los spans del backend aparezcan en la misma traza que la acción de UI que los desencadenó. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Correlación de trazas del frontend y el backend»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Observabilidad del frontend: qué es y por qué importa
- Trazas de OpenTelemetry desde el navegador
- Monitorización de usuarios reales y Web Vitals
- Correlación de trazas del frontend y el backend