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 para que puedan diagnosticar y depurar más fácilmente los problemas de sus aplicaciones. OTel recopila los siguientes datos:
OTel no es un lenguaje de programación ni un producto. Este proyecto de código abierto existe desde 2019 y actualmente lo mantiene la Cloud Native Computing Foundation (CNCF).
Vea este vídeo para saber cómo empezar:
Una traza registra los eventos que se producen durante una operación, como la gestión de una solicitud. La traza se divide en una serie de tramos, cada uno de los cuales representa una unidad de trabajo.
Por ejemplo, la traza de una petición web puede incluir tres tramos:
Una traza divide un flujo de datos que puede incluir múltiples servicios en una serie de pedazos ordenados cronológicamente para facilitar su comprensión:
Una vez que OTel ha generado trazas, el siguiente paso es exportarlas a un back-end de trazas o a una herramienta para su análisis. OTel proporciona un conjunto de exportadores para back-ends populares como Jaeger, Zipkin y AWS X-Ray. Estos servicios proporcionan herramientas para analizar y visualizar los datos de trazas.
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 métricas). Los pares clave-valor proporcionan contexto sobre la medición a lo largo del tiempo. Por ejemplo, una métrica para el tiempo de respuesta de un servicio web podría incluir etiquetas para el código de estado HTTP, el punto de conexión y el método HTTP. Todas las métricas también tienen marca de tiempo, de nuevo para permitir el orden cronológico.
Los registros son el método más antiguo y más común para obtener información sobre lo que está pasando con un servicio determinado. Por lo general, se producen como texto y deben ser analizados para generar información. El apoyo a los registros en OTel es todavía experimental.
Para obtener más información sobre lo que descubrieron nuestros arquitectos de soluciones cuando compararon los conjuntos de funciones de observabilidad de OTel con otras herramientas de observabilidad, consulte Integrating OpenTelemetry into the Modern Apps Reference Architecture – A Progress Report (Integración de OpenTelemetry en la arquitectura de referencia de aplicaciones modernas: informe de progreso) en nuestro blog.
OTel se integra con muchos lenguajes de programación, bibliotecas y marcos populares. El soporte en algunos lenguajes es más completo que en otros. Por ejemplo, las bibliotecas de instrumentación de JavaScript tienen implementaciones autodescritas como «estables» tanto para trazas como para métricas, y uno de los soportes más estables para registros. También proporcionan una opción de autoinstrumentación que le permite empezar a recibir trazas sin añadir ningún código específico de instrumentación a su lógica de servicio. Por otro lado, lenguajes como Go tienen un soporte menos maduro para métricas y registros y carecen de características de autoinstrumentación.
A la hora de configurar la instrumentación de telemetría, lo más recomendable es empezar con objetivos de instrumentación bien definidos, en lugar de adoptar el enfoque de «enviar todo y esperar a ver qué pasa». Aunque es cierto que no se pueden prever todas las posibilidades hasta que se analizan los datos, establecer requisitos mínimos desde el principio ayuda a asegurar el buen funcionamiento y mantenimiento de los servicios.
Pueden ser cuestiones técnicas como:
Pero también pueden ser preocupaciones relacionadas con el producto y la experiencia del usuario, como:
Como ejemplo de nuestro tutorial How to Use OpenTelemetry Tracing to Understand Your Microservices (Cómo utilizar OpenTelemetry Tracing para comprender sus microservicios), podría definir lo siguiente como los objetivos clave:
OTel proporciona a los desarrolladores un único conjunto 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 producidos por OTel se considera un estándar de la industria, múltiples soluciones de agregación y visualización de telemetría lo aceptan. Puede elegir una solución local, como Jaeger (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 una combinación de múltiples herramientas, lo que añade aún más complejidad a la inherente a la ejecución de una arquitectura e infraestructura de microservicios.
Las API definen los métodos, funciones y protocolos utilizados por 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.
Los SDK son herramientas de desarrollo de software proporcionadas por el autor de una norma o aplicación que facilitan a los desarrolladores la creación de aplicaciones conformes a la norma o que interactúan con la aplicación. Los SDK suelen incluir bibliotecas, ejemplos de código, documentación y herramientas para pruebas, depuración y ajuste del rendimiento. OTel proporciona SDK para trazas, métricas y gestión de recursos.
NGINX se enorgullece de presentar estos recursos adicionales para saber más sobre OTel: