Cómo Construir un SDK de Open Telemetry en 7 Minutos

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

En esta charla, proporcionaré una visión general de los bloques de construcción fundamentales necesarios para desarrollar un SDK de observabilidad fullstack con mínima fricción para los usuarios. Examinaremos técnicas de instrumentación compatibles con OpenTelemetry para monitoreo de errores, trazado y registro. Basándome en nuestras experiencias de desarrollo de código abierto en Sentry, compartiré valiosos conocimientos y aprendizajes, mientras me enfoco principalmente en los desafíos de alto nivel encontrados al crear un SDK de JavaScript.

This talk has been presented at JSNation 2025, check out the latest edition of this JavaScript Conference.

Charly Gomez
Charly Gomez
6 min
12 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Demostración de cómo agregar observabilidad con OpenTelemetry. Beneficios de los datos extensos de telemetría para obtener información. Contraste entre aplicaciones no instrumentadas, manuales y automáticamente instrumentadas. Ejemplo de instrumentación de llamadas fetch para señales de telemetría. Técnica para modificar funciones sin actualizaciones de núcleo. Uso de JS proxy como un enfoque moderno para parchear. OpenTelemetry estandariza la instrumentación con APIs y herramientas. Ejemplo de configuración de OpenTelemetry con instrumentaciones.

1. Adding Observability with OpenTelemetry

Short description:

Mostrando cómo agregar observabilidad con OpenTelemetry. Beneficios de datos de telemetría extensos para obtener información. Contrastando aplicaciones no instrumentadas, instrumentadas manualmente y automáticamente. Ejemplo de instrumentación de llamadas fetch para señales de telemetría.

Quiero mostrarte cómo puedes agregar observabilidad a tu aplicación con solo una línea de código. ¿Quién ha trabajado con OpenTelemetry antes? ¿Quizás una rápida muestra de manos? Oh, sí, no demasiados, pero aún así bastantes. OpenTelemetry es un marco de código abierto que proporciona un conjunto estandarizado de herramientas y APIs para recopilar, procesar y exportar datos de telemetría.

¿Por qué necesitamos eso? Existe la noción de que cuanta más información tienes, más cerca estás de la verdad y más sabiduría y poder obtienes de ella. Mapeado a OpenTelemetry o a la observabilidad, esto significaría que cuantas más señales tu aplicación esté emitiendo, más datos de telemetría agregados tienes y más información y acciones puedes tomar de ello. Veamos tres ejemplos. El primero sería una aplicación no instrumentada. Básicamente una caja negra porque no emite nada. El segundo sería una aplicación instrumentada manualmente donde tú, el desarrollador, decides qué señales quieres enviar al backend de observabilidad.

Y el tercero es como el punto ideal donde tenemos una aplicación instrumentada automáticamente, lo que significa que solo escribes el código de la aplicación y alguna biblioteca o SDK está mágicamente recopilando los datos de telemetría detrás de escena y enviándolos a tu backend. Veamos esto un poco más en detalle con el ejemplo de fetch. Una llamada fetch no instrumentada sería una llamada fetch básica. Recupera datos y luego la vida continúa. Una llamada fetch instrumentada manualmente en el caso de OpenTelemetry se vería algo así. Tienes un tracer que es un componente OTEL que inicia un span.

Un span es solo una palabra para una operación única que se mide en tiempo y que mide cosas. Así que aquí iniciamos el span, llamamos a fetch, y cuando la llamada fetch termina, terminamos el span y así es como lo medimos. Ves que hay bastante código para mantener. Así que veamos el punto ideal donde queremos llegar. Una aplicación instrumentada automáticamente donde solo importamos nuestro SDK, llamamos a init, y luego usamos fetch como siempre lo hemos hecho antes. Tal vez miremos detrás de escena de esta llamada init. ¿Cómo podemos detrás de escena hacer que fetch emita estas señales de telemetría? Hacemos esto usando una técnica llamada monkey patching de la cual muchos de ustedes probablemente estén al tanto.

2. Modifying Functions with OpenTelemetry

Short description:

Técnica para modificar funciones sin actualizaciones del núcleo. Usando JS proxy como un enfoque moderno para parchear. OpenTelemetry estandariza la instrumentación con APIs y herramientas. Ejemplo de configuración de open telemetry con instrumentaciones.

Es una técnica donde modificamos un módulo o una función y extendemos la funcionalidad sin actualizar la funcionalidad central de este durante el tiempo de ejecución. En el caso de fetch, esto podría verse algo así. Dado que todavía estamos en el mundo de JavaScript, básicamente podemos hacer lo que queramos. Así que simplemente tomamos el fetch global, lo almacenamos, y luego sobrescribimos el fetch global con el tracer que hemos visto antes. Así que cada vez que en el código del usuario llamamos a fetch ahora, será trazado automáticamente.

Una forma más moderna de hacer esto sería usar un JS proxy que puedes pensar básicamente como un intermediario entre la función o módulo que deseas parchear y el código que lo está llamando. ¿Cómo entra en juego OTL aquí? Como mencioné antes, open telemetry proporciona una forma estandarizada de hacer las cosas. Con esto, me refiero a herramientas y APIs como esta clase base de instrumentación que puedes ver arriba que simplemente extendemos para nuestra instrumentación personalizada.

Hay algo de andamiaje alrededor, así que queremos especificar qué módulo queremos parchear. Podemos especificar un rango de versiones. Pero luego la parte importante está marcada en rojo aquí, donde básicamente hacemos lo que acabamos de ver antes, monkey patching, una funcionalidad específica de un módulo que queremos trazar. Así que, volviendo a nuestra llamada init. Este sería un ejemplo muy básico de cómo podría verse la configuración de open telemetry. Incluye varios bloques de construcción. No es demasiado importante lo que estamos usando aquí en este momento, pero lo importante es la llamada register instrumentations que está marcada en rojo. Aquí ves que proporcionamos un array de instrumentaciones.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Registro Multihilo con Pino
JSNation Live 2021JSNation Live 2021
19 min
Registro Multihilo con Pino
Top Content
Today's Talk is about logging with Pino, one of the fastest loggers for Node.js. Pino's speed and performance are achieved by avoiding expensive logging and optimizing event loop processing. It offers advanced features like async mode and distributed logging. The use of Worker Threads and Threadstream allows for efficient data processing. Pino.Transport enables log processing in a worker thread with various options for log destinations. The Talk concludes with a demonstration of logging output and an invitation to reach out for job opportunities.
Observabilidad para Microfrontends
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
Observabilidad para Microfrontends
Premium
Microfrontends follow the microservices paradigm and observability is crucial for debugging runtime production issues. Error boundaries and tracking errors help identify and resolve issues. Automation of alerts improves incident response. Observability can help minimize the time it takes to understand and resolve production issues. Catching errors from the client and implementing boundaries can be done with tools like OpenTelemetry.
Observabilidad con diagnostics_channel y AsyncLocalStorage
Node Congress 2023Node Congress 2023
21 min
Observabilidad con diagnostics_channel y AsyncLocalStorage
Observability with Diagnostics Channel and async local storage allows for high-performance event tracking and propagation of values through calls, callbacks, and promise continuations. Tracing involves five events and separate channels for each event, capturing errors and return values. The span object in async local storage stores data about the current execution and is reported to the tracer when the end is triggered.
Cómo Grafana Utiliza React para Potenciar el Mundo de la Observabilidad
React Summit 2023React Summit 2023
7 min
Cómo Grafana Utiliza React para Potenciar el Mundo de la Observabilidad
Grafana uses React to power its open source platform, leveraging its vast ecosystem, improved performance, and community contributions. The choice of state management tool depends on the team's problem space. React Hooks have posed challenges but have also been a powerful tool for developers. The new Scenes library simplifies development and reduces the learning curve. Despite challenges, React remains a powerful tool for complex frontends, and Grafana will continue to use it.
Observabilidad en GraphQL
GraphQL Galaxy 2020GraphQL Galaxy 2020
8 min
Observabilidad en GraphQL
This Talk discusses how to tool Apollo server with open tracing for observability. OpenTracing is a vendor-agnostic format that works well with distributed systems in microservices. It allows for converting GraphQL tracing data to a vendor-agnostic format and enriching information from GraphQL servers. If providers support OpenTracing, it can be easily integrated.
Creando un motor de innovación con observabilidad
Node Congress 2023Node Congress 2023
27 min
Creando un motor de innovación con observabilidad
Baseline provides observability for serverless architectures and has created an innovation engine within their team. They measure team performance using Dora metrics and the Accelerate book. Baseline emphasizes the importance of foundations, streamlined testing, and fast deployment. They practice observability-driven development and incorporate observability as part of their development lifecycle. Baseline believes in building a culture that fosters ownership and democratizes production.

Workshops on related topic

Escalando Bases de Datos para Aplicaciones Globales sin Servidor
Node Congress 2022Node Congress 2022
83 min
Escalando Bases de Datos para Aplicaciones Globales sin Servidor
Workshop
Ben Hagan
Ben Hagan
Este masterclass discute los desafíos que enfrentan las empresas al escalar la capa de datos para admitir implementaciones multi-región y entornos sin servidor. Las funciones de borde sin servidor y la orquestación de contenedores livianos permiten que las aplicaciones y la lógica empresarial se implementen fácilmente a nivel mundial, dejando a menudo la base de datos como el cuello de botella de latencia y escalabilidad.
Únase a nosotros para comprender cómo PolyScale.ai resuelve estos desafíos de escalabilidad, almacenando en caché de manera inteligente los datos de la base de datos en el borde, sin sacrificar la transaccionalidad o la consistencia. Aprenda a implementar, observar consultas y realizar pruebas de latencia global con funciones de borde utilizando PolyScale.
Tabla de contenidos        - Introducción a PolyScale.ai        - Gravedad de los datos empresariales        - Por qué es difícil escalar los datos        - Opciones para escalar la capa de datos        - Observabilidad de la base de datos        - Gestión de caché con IA        - Aprenda a utilizar PolyScale.ai