OpenTelemetry, u OTel, es un marco de observabilidad de código abierto que incluye una colección de kits de desarrollo de software (SDK), API independientes del proveedor y otras herramientas para la instrumentación de aplicaciones, sistemas y dispositivos.
OTel simplifica la recogida de datos telemétricos, independientemente del lenguaje de programación, la infraestructura o el entorno de tiempo de ejecución, y permite a los desarrolladores generar, recoger y exportar datos telemétricos normalizados para cualquier backend de observabilidad. Este marco estandarizado refuerza y amplía las capacidades de observabilidad, y proporciona a los equipos de TI y DevOps una mayor flexibilidad.
OTel se implementa entre aplicaciones, sistemas y dispositivos, y soluciones de back-end: el almacenamiento y la visualización se dejan intencionalmente en manos de otras herramientas, lo que otorga a las organizaciones la libertad de elegir las herramientas que mejor se adapten a ellas.
La observabilidad es la capacidad de obtener conocimientos sobre el funcionamiento interno de un sistema mediante el análisis de sus resultados. En las operaciones de TI (ITOps) y el cloud computing, los datos de telemetría (como registros, métricas y rastreos) se utilizan para evaluar el rendimiento y el estado del sistema. Los profesionales de DevOps confían en la instrumentación (añadir código a las aplicaciones y los sistemas para producir y capturar datos de telemetría) para crear sistemas observables.
Esta instrumentación suele ser una tarea compleja cuando se trabaja en entornos modernos, con entornos de cloud híbrido y multinube, aplicaciones basadas en microservicios, contenedores Kubernetes y otras características de los entornos informáticos actuales. Estos sistemas distribuidos, y los diversos lenguajes de programación y tiempos de ejecución que incorporan, presentan una matriz complicada de instrumentar, recopilar y exportar para el almacenamiento, la visualización y el análisis de back-end.
Para obtener una comprensión completa del rendimiento de los servicios y aplicaciones de red, los ingenieros deben configurar instrumentación personalizada para aplicaciones y sistemas en toda la infraestructura. OpenTelemetry ayuda a resolver este problema.
OTel proporciona un método estándar para recopilar y transmitir datos de observabilidad, lo que ayuda a simplificar la supervisión en sistemas distribuidos. Utiliza bibliotecas y API unificadas e independientes del proveedor para recopilar y enviar datos telemétricos a las plataformas backend. Al adoptar OpenTelemetry, los equipos pueden recopilar y procesar de manera uniforme la telemetría en sistemas complejos, independientemente de las aplicaciones que gestionen o de las herramientas de observabilidad que utilicen.
El código de instrumentación solía variar mucho. Y como ningún proveedor comercial ofrecía una herramienta capaz de recopilar datos de todas las aplicaciones y servicios de una red, a las empresas les resultaba difícil recopilar datos en diferentes idiomas y formatos o cambiar los backends.
Si, por ejemplo, un equipo de desarrollo quisiera cambiar las herramientas de backend, tendría que volver a instrumentar completamente su código y configurar nuevos agentes para enviar datos de telemetría a los nuevos servidores. Además, este enfoque fragmentado creaba silos de datos y confusión, lo que dificultaba la resolución de problemas de rendimiento de forma eficaz.
OpenTelemetry representó un avance significativo en las herramientas de observabilidad porque estandarizó la forma en que se recopilan, analizan y transmiten los datos de telemetría a las plataformas de back-end. Proporciona una solución de código abierto, basada en estándares impulsados por la comunidad, para recopilar datos sobre el comportamiento y la seguridad del sistema, ayudando a los equipos a optimizar la monitorización y la observabilidad en ecosistemas distribuidos. Como tal, OTel ofrece a las empresas un enfoque abierto y coherente para recopilar datos críticos de aplicaciones y servicios de red.
OpenTelemetry se creó combinando las capacidades de rastreo distribuido de OpenTracing y OpenCensus en una sola herramienta. OpenTracing fue un proyecto de código abierto diseñado por la Cloud Native Computing Foundation (CNCF) para proporcionar a los ingenieros una API independiente del proveedor para agregar instrumentación de rastreo distribuido a las aplicaciones. Estableció un conjunto de convenciones semánticas para ayudar a garantizar la coherencia en los datos de telemetría.
Sin embargo, a diferencia de OpenTelemetry, OpenTracing no era en sí una implementación de rastreo. Más bien, proporcionó interfaces que los sistemas de rastreo podían implementar para maximizar la compatibilidad entre plataformas. OpenTracing es un proyecto extinto (que ahora alienta a los usuarios a migrar a OpenTelemetry), pero varias soluciones de software y rastreo aún dependen de sus API.
OpenCensus es un conjunto de bibliotecas de instrumentación, desarrolladas por Google, para recopilar métricas de aplicaciones y rastreos distribuidos, que pueden exportar datos a diferentes backends en tiempo real. Recopila datos utilizando etiquetas de propagación y metadatos coherentes, un concepto que ahora existe en OpenTelemetry como "recursos".
Con OpenCensus, las aplicaciones pueden importar y exportar datos en función de sus requisitos específicos, lo que garantiza la flexibilidad en la forma en que se envían las métricas y las trazas a los backends de observabilidad. OpenCensus no se ha descatalogado formalmente como OpenTracing; sigue recibiendo mantenimiento regular y actualizaciones de seguridad. Sin embargo, el desarrollo activo se ha desplazado en gran medida a OpenTelemetry.
Ambos proyectos pretendían abordar la misma cuestión. En aquel momento, los equipos de desarrollo no disponían de una forma estándar de instrumentar el código y transmitir los datos de telemetría a las herramientas de observabilidad backend.
Sin embargo, ninguno de los proyectos podría resolver este problema por sí solo. Así que, la CNCF patrocinó el proyecto OpenTelemetry, que combinaba las mejores características de cada solución. OpenTelemetry reúne las capacidades de estandarización de API de OpenTracing y de recopilación de datos de OpenCensus para proporcionar una plataforma única y unificada de envío, recopilación y transferencia de datos de telemetría a las plataformas de observabilidad de fondo.
Una parte clave del funcionamiento de redes y aplicaciones rápidas y de alta disponibilidad es lograr una observabilidad full stack, lo que requiere acceso a datos de telemetría. Las soluciones de observabilidad recopilan, monitorizan y analizan datos de telemetría para determinar el estado del sistema y luego brindan a los equipos de TI conocimientos ejecutables para reparaciones y optimizaciones.
Para obtener una comprensión más profunda de OpenTelemetry, profundicemos en qué son los datos de telemetría y cómo los utilizan las organizaciones. OpenTelemetry admite tipos de datos específicos, a saber, los resultados recopilados de registros, métricas y rastreos (a menudo denominados los "tres pilares de la observabilidad").
Las métricas son evaluaciones numéricas del rendimiento del sistema y del uso de los recursos. Proporcionan una visión general de alto nivel del estado de la red mediante la captura de indicadores clave de rendimiento (KPI) como la latencia, la pérdida de paquetes, la utilización del ancho de banda y el uso de la CPU del dispositivo.
Las métricas suelen resumirse mediante paneles de control y otras visualizaciones. A menudo proporcionan a los equipos los primeros indicios de un problema de rendimiento del sistema o de la aplicación.
Los registros son registros detallados de cada evento o acción que ocurre dentro del entorno. Proporcionan información granular sobre lo que ocurrió, cuándo ocurrió y en qué lugar de la red ocurrió, brindando a los equipos un contexto valioso para la resolución de problemas, la depuración y el análisis forense.
Los registros revelan las causas subyacentes de los problemas al detallar los eventos del sistema, como los cambios en la configuración del dispositivo, las autenticaciones fallidas y las conexiones caídas.
Los rastreos capturan el flujo de datos a través de la red, proporcionando información sobre la ruta y el comportamiento de los paquetes a medida que atraviesan múltiples dispositivos y sistemas. Son esenciales para comprender los sistemas distribuidos y diagnosticar problemas de latencia.
Los datos de rastreo permiten a los equipos de TI ver el recorrido completo de una transacción, de extremo a extremo, lo que ayuda a identificar los retrasos y fallos que se producen en entornos complejos y de múltiples capas.
OpenTelemetry se basa en varios componentes y procesos para que la recopilación de datos sea exitosa, entre ellos:
Una API es un conjunto de reglas o protocolos que permite que las aplicaciones de software se comuniquen entre sí para intercambiar datos, características y funciones.
OpenTelemetry proporciona API específicas del lenguaje (para Java, Ruby, JavaScript, Python y otros lenguajes) que los desarrolladores pueden utilizar para instrumentar sus aplicaciones para la recopilación de datos de telemetría. Las API de OpenTelemetry desacoplan las aplicaciones de la infraestructura de red, dando a los equipos la flexibilidad de utilizar cualquier endpoint que coincida con su código de instrumentación.
Los SDK de OpenTelemetry permiten a los ingenieros configurar y personalizar el comportamiento de la API. Los SDK constituyen el puente entre las API y los colectores y permiten conectar la instrumentación manual de las bibliotecas comunes con la instrumentación manual de las aplicaciones.
OTel ofrece SDK para una variedad de lenguajes de programación, por lo que los desarrolladores pueden usar las API de OTel para generar y exportar datos de telemetría específicos para su lenguaje y backend elegidos. Los SDK de Otel también admiten instrumentación personalizada para marcos internos que aún no están cubiertos por la comunidad de OpenTelemetry.
Un recopilador es un agente que recopila datos de telemetría de aplicaciones instrumentadas con OpenTelemetry. Compuesto por receptores, procesadores, agregados y exportadores, el recopilador actúa como un intermediario neutral con respecto al proveedor, recibe los datos de las aplicaciones y los envía a plataformas de observabilidad u otros destinos para su análisis.
El recopilador OpenTelemetry admite paquetes contrib que le permiten consumir datos en múltiples formatos, incluidos OpenTelemetry Protocol (OTLP), Prometheus y Jaeger, y exportarlos a varios backends, a veces simultáneamente (por redundancia). Los paquetes Contrib son extensiones de terceros que proporcionan a los equipos de desarrollo instrumentación, muestreadores, propagadores y detectores de recursos en formato de submódulo.
Los recopiladores también pueden procesar y filtrar los datos de telemetría antes de exportarlos para priorizar la entrega de los datos más vitales y acelerar los procesos de resolución de problemas y depuración.
Los exportadores forman parte del recopilador y son responsables de enviar los datos de telemetría de la aplicación a uno o más backends de observabilidad especificados. Mientras que los recopiladores administran el flujo general de datos, los exportadores priorizan la transmisión de datos hacia su destino.
Los exportadores de datos de OpenTelemetry desacoplan la instrumentación de las configuraciones de backend y convierten los datos al formato apropiado para cada plataforma de observabilidad (convirtiendo los rastros al protocolo Zipkin, por ejemplo). Esta dinámica permite al recolector enviar los mismos datos de telemetría a múltiples backends, lo que facilita el cambio de destinos sin alterar la lógica de instrumentación del código.
La instrumentación automática proporciona bibliotecas y marcos listos para usar que permiten a las aplicaciones generar automáticamente datos de telemetría con cambios mínimos o nulos en el código. Este proceso simplifica la instrumentación para los desarrolladores, reduciendo (y a veces eliminando) las tareas de codificación manual.
Sin embargo, la autoinstrumentación podría ofrecer menos control sobre tipos específicos de recogida de datos en comparación con la instrumentación manual. La amplitud de la instrumentación automática también puede variar en función de los tiempos de ejecución de los lenguajes, los entornos informáticos y los niveles de apoyo de la comunidad a los marcos de observabilidad.
OpenTelemetry funciona combinando API, SDK, recopiladores y procesos de instrumentación automática para extraer datos y enviarlos al sistema de destino.
Primero, el equipo de DevOps instrumenta el código de la aplicación con las API de OTel, especificando qué métricas, rastreos y registros recopilar y cómo recopilarlos. El recopilador del SDK de OTel recopila los datos y los prepara para su procesamiento y exportación y, a continuación, muestrea, filtra y correlaciona los datos con dependencias y otras fuentes de datos.
Cuando los datos procesados están formateados correctamente, el SDK los agrupa en lotes basados en el tiempo (donde se someten a un mayor filtrado, si es necesario) y los envía al sistema back-end designado.
El objetivo principal de OpenTelemetry es recopilar y exportar datos de telemetría y mejorar la observabilidad, proporcionando a las organizaciones una herramienta que facilite la neutralidad del proveedor y la integración de plataformas y herramientas. Ayuda a los equipos de DevOps y a los ingenieros de fiabilidad del sitio (SRE) a gestionar y depurar aplicaciones y sistemas, para que puedan tomar decisiones más informadas y seguir siendo ágiles a medida que cambian las necesidades empresariales.
Los beneficios de OTel incluyen:
1 "Elastic contributes its continuous profiling agent to OpenTelemetry". OpenTelemetry.io. 7 de julio de 2024.