¿Qué es OpenTelemetry?
OpenTelemetry (OTel) es un proyecto de código abierto que proporciona un estándar independiente del proveedor para recopilar, procesar y exportar datos de telemetría de sistemas distribuidos (como una arquitectura de microservicios). Este enfoque simplificado y universal de la observabilidad facilita a los desarrolladores el análisis del rendimiento y el comportamiento del software, lo que les permite diagnosticar y depurar más fácilmente los problemas de sus aplicaciones. OTel recopila los siguientes datos:
- Trazas – «¿Dónde está el problema?»
- Métricas – «¿Hay algún problema?»
- Registros – «¿Cuál es el problema?»
OTel no es un lenguaje de programación ni un producto. Este proyecto de código abierto existe desde 2019 y actualmente está mantenido por la Cloud Native Computing Foundation (CNCF).
Mira este vídeo para saber cómo empezar:
Tipos de datos generados por OTel
Trazas
Una traza registra los eventos que se producen durante una operación, como el procesamiento de una única solicitud. La traza se divide en una serie de intervalos, cada uno de los cuales representa una unidad de trabajo.
Por ejemplo, la traza de una solicitud web podría incluir tres spans:
- Aceptar la solicitud
- Consultando la base de datos
- Enviar una respuesta
Una traza divide un flujo de datos, que puede incluir varios servicios, en una serie de fragmentos ordenados cronológicamente para ayudarte a comprender fácilmente:
- Todos los pasos que tuvieron lugar en cada segmento
- El orden en el que se ejecutaron los fragmentos
- Cuánto duró cada paso
- Metadatos de cada paso
Una vez que OTel ha generado las trazas, el siguiente paso es exportarlas a un backend de trazado o a una herramienta para su análisis. OTel ofrece un conjunto de exportadores para backends populares como Jaeger, Zipkin y AWS X‑Ray. Estos servicios proporcionan herramientas para analizar y visualizar los datos de las trazas.
Métricas
En OTel, las métricas son mediciones de aspectos específicos del comportamiento de un sistema operativo y se recopilan a lo largo del tiempo como pares clave-valor (conocidos como etiquetas de métricas). Los pares clave-valor aportan contexto sobre la medición a lo largo del tiempo. Por ejemplo, una métrica del tiempo de respuesta de un servicio web podría incluir etiquetas para el código de estado HTTP, el endpoint y el método HTTP. Todas las métricas también incluyen una marca de tiempo para permitir su ordenación cronológica.
Registros
Los registros son el método más antiguo y habitual para comprender qué ocurre en un servicio determinado. Por lo general, se generan como texto y deben analizarse para extraer información. La compatibilidad con los registros en OTel todavía es experimental.
Para obtener más información sobre lo que descubrieron nuestros arquitectos de soluciones al comparar las funcionalidades de observabilidad de OTel con las de otras herramientas de observabilidad, consulte Integración de OpenTelemetry en la arquitectura de referencia de aplicaciones modernas: informe de progreso en nuestro blog.
Instrumentación de OTel
OTel se integra con muchos lenguajes de programación populares, bibliotecas y frameworks. La compatibilidad es más completa en algunos lenguajes que en otros. Por ejemplo, las bibliotecas de instrumentación de JavaScript cuentan con implementaciones que se describen como «estables» tanto para las trazas como para las métricas, además de ofrecer una de las compatibilidades más estables con los registros. También proporcionan una opción de instrumentación automática que permite empezar a recibir trazas sin añadir código específico de instrumentación a la lógica del servicio. En cambio, lenguajes como Go ofrecen una compatibilidad menos madura con las métricas y los registros, y carecen de funciones de instrumentación automática.
Objetivos de telemetría
Al configurar la instrumentación de telemetría, es mejor comenzar con una serie de objetivos más concretos que «enviarlo todo y esperar obtener información útil». Si bien es cierto que no se puede conocer todo lo que es posible hacer hasta que se visualizan los datos, establecer unos requisitos mínimos ayuda a garantizar el correcto funcionamiento y mantenimiento de los servicios.
Pueden ser cuestiones técnicas como:
- Quiero saber cuándo mi servicio está sometido a una carga excesiva y necesita escalarse.
- Quiero saber si mi servicio se reinicia con frecuencia.
Pero también pueden ser cuestiones relacionadas con el producto y la experiencia de usuario, como:
- Quiero que los usuarios vean los mensajes nuevos en el sistema en un plazo de cinco segundos.
- Quiero que las notificaciones se envíen en el plazo de un minuto desde el envío de un mensaje.
Como ejemplo de nuestro tutorial Cómo usar el rastreo de OpenTelemetry para comprender tus microservicios, podrías definir los siguientes objetivos clave:
- Comprender todos los pasos que sigue una solicitud para completar el nuevo flujo de mensajes.
- Comprueba que el flujo de usuario se haya completado correctamente.
- Tenga la certeza de que el flujo de usuario se ejecuta de principio a fin en menos de cinco segundos (en circunstancias «normales»).
- Averigüe si el servicio de notificaciones está procesando a tiempo el evento (enviado por el servicio de mensajería).
Implementación de OTel
OTel proporciona a los desarrolladores un conjunto único de interfaces de programación de aplicaciones (API), kits de desarrollo de software (SDK) y bibliotecas de instrumentación que pueden utilizar para instrumentar sus aplicaciones de forma coherente y estandarizada.
Dado que el formato de los datos generados por OTel se considera un estándar del sector, numerosas soluciones de agregación y visualización de telemetría lo admiten. Puede elegir una solución local, como Jaeger (tal y como hicimos en este tutorial), u optar por una solución de software como servicio (SaaS), como SumoLogic o SigNoz.
Para gestionar los tres tipos de telemetría, la única alternativa a OTel es combinar varias herramientas. Esto añade aún más complejidad a la ya inherente a la gestión de una arquitectura y una infraestructura de microservicios.
¿Qué es una API en el contexto de OTel?
Las API definen los métodos, las funciones y los protocolos que utilizan los componentes de software para interactuar entre sí. Las API de OTel definen un conjunto estándar de métodos y protocolos que los desarrolladores pueden utilizar para instrumentar sus aplicaciones y recopilar datos de telemetría.
¿Qué es un SDK en el contexto de OTel?
Los SDK son herramientas de desarrollo de software proporcionadas por el autor de un estándar o una aplicación que facilitan a los desarrolladores la creación de aplicaciones que cumplen dicho estándar o interactúan con la aplicación. Los SDK suelen incluir bibliotecas, ejemplos de código, documentación y herramientas para realizar pruebas, depurar y optimizar el rendimiento. OTel proporciona SDK para trazas, métricas y gestión de recursos.
