Trazas de OpenTelemetry desde el navegador
Configure el SDK de JavaScript de OTel en React, cree spans para las interacciones del usuario y expórtelos a un collector de backend.
Trazas de OpenTelemetry desde el navegador es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 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 SDK de JavaScript de OpenTelemetry
El SDK de JavaScript de OpenTelemetry para navegadores consta de varios paquetes: @opentelemetry/sdk-trace-web proporciona la implementación principal de trazas, @opentelemetry/instrumentation-fetch crea automáticamente spans para todas las llamadas a la API fetch y @opentelemetry/exporter-trace-otlp-http envía los spans a un collector.
TracerProvider: la raíz de las trazas de OTel
TracerProvider es el objeto de configuración central de OpenTelemetry. Contiene la lista de SpanProcessors (que determinan qué ocurre con los spans completados), el recurso que describe su aplicación (nombre del servicio y versión) y cualquier configuración de muestreo.
BatchSpanProcessor: exportación eficiente
BatchSpanProcessor recopila los spans completados en memoria y los exporta en lotes, en lugar de enviar cada span individualmente. Esto reduce drásticamente el número de solicitudes HTTP al collector, mejora el rendimiento del navegador y reduce la carga del endpoint del collector de OTel.
OTLPTraceExporter: envío a un collector
OTLPTraceExporter envía spans agrupados a un collector compatible con OpenTelemetry mediante HTTP, en formato JSON o protobuf. Configure la URL del collector (por ejemplo, el endpoint proxy de su OTel Collector) y el exporter gestionará automáticamente la serialización y la lógica de reintento.
¿Qué es un span?
Un Span representa una unidad de trabajo individual dentro de una traza: el montaje de un componente, una llamada a una API o una interacción del usuario. Los spans tienen un nombre, una hora de inicio, una hora de finalización, un estado (OK o ERROR) y un conjunto de atributos clave-valor. Los spans relacionados se vinculan mediante un mismo ID de traza y relaciones padre-hijo.
Inicio y finalización manual de spans
Cree un tracer con provider.getTracer('react-app') e inicie spans con tracer.startSpan('component-mount'). Cuando termine el trabajo, llame a span.end() para registrar la hora de finalización. Finalice siempre los spans; los spans que quedan abiertos desperdician memoria y generan datos incompletos en su backend de observabilidad.
Adición de atributos a los spans
Los atributos enriquecen los spans con datos contextuales: span.setAttribute('user.id', userId) o span.setAttribute('route', location.pathname). Los atributos permiten realizar búsquedas en su backend de observabilidad, lo que habilita consultas como «mostrar todos los spans lentos del usuario 42» o «mostrar todos los errores de la ruta /checkout».
Instrumentación automática de fetch
@opentelemetry/instrumentation-fetch modifica la función fetch global mediante monkey patching para crear automáticamente spans para cada solicitud HTTP saliente. El span captura la URL, el método, el código de estado HTTP y la duración sin que tenga que modificar sus llamadas fetch existentes.
Propagación de contexto mediante W3C TraceContext
Cuando la instrumentación de fetch crea un span para una solicitud saliente, inyecta el encabezado traceparent de W3C TraceContext en la solicitud. El backend receptor lee este encabezado y continúa la misma traza, creando una traza conectada que abarca el navegador y el servidor.
Inicialización de OTel en su aplicación de React
La inicialización de OTel debe realizarse antes de montar cualquier componente, normalmente en el archivo de entrada de la aplicación (main.tsx), antes de la llamada a ReactDOM.createRoot. Cree el proveedor, registre los procesadores y exportadores, y llame a provider.register() para convertirlo en el TracerProvider global.
Muestreo: control del volumen de trazas
Registrar cada interacción del usuario en aplicaciones con mucho tráfico genera cantidades enormes de datos de trazas. Configure un muestreador TraceIdRatioBased (por ejemplo, para muestrear el 10 % de las trazas) en el TracerProvider con el fin de reducir el volumen. Muestree siempre el 100 % de las trazas con errores mediante un muestreador ParentBased para asegurarse de no omitir ningún error.
Propósito de OTel BatchSpanProcessor
¿Por qué se utiliza BatchSpanProcessor en lugar de SimpleSpanProcessor en aplicaciones de navegador?
Resumen de la lección
El SDK de OpenTelemetry para JavaScript instrumenta los navegadores con TracerProvider, BatchSpanProcessor y OTLPTraceExporter. Los spans representan unidades de trabajo enriquecidas con atributos. La instrumentación de fetch crea automáticamente spans para las llamadas a API e inyecta encabezados de W3C TraceContext para realizar un seguimiento distribuido de extremo a extremo. Inicialice pronto, configure el muestreo adecuadamente y finalice siempre los spans para mantener datos de trazas limpios.
Preguntas frecuentes
¿La lección «Trazas de OpenTelemetry desde el navegador» es gratis?
Sí — el texto completo de «Trazas de OpenTelemetry desde el navegador» 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 «Trazas de OpenTelemetry desde el navegador»?
Configure el SDK de JavaScript de OTel en React, cree spans para las interacciones del usuario y expórtelos a un collector de backend. 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 2 de 4.
¿Cuánto tiempo toma la lección «Trazas de OpenTelemetry desde el navegador»?
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