OpenTelemetry (OTel) es un proyecto de código abierto que proporciona un estándar neutral respecto del proveedor para recopilar, procesar y exportar datos de telemetría desde sistemas distribuidos (como una arquitectura de microservicios ). Este enfoque simplificado y universal de la observabilidad facilita que los desarrolladores analicen el rendimiento y el comportamiento del software para que puedan diagnosticar y depurar problemas en sus aplicações más fácilmente. 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 ni un producto de programación. 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:

Tipos de datos generados por OTel

Trazas

Un seguimiento registra los eventos que ocurren durante una operación, como el manejo de una sola 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:

  • Aceptar la solicitud
  • Consultar la base de datos
  • Enviar una respuesta

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:

  • Todos los pasos que ocurrieron en cada pedazo.
  • El orden de ejecución de los pedazos.
  • Cuánto duró cada paso.
  • Metadatos sobre cada paso.

Una vez que OTel ha generado los rastros, el siguiente paso es exportarlos a un backend o herramienta de rastreo para su análisis. OTel proporciona un conjunto de exportadores para backends populares como Jaeger , Zipkin y AWS X‑Ray . Estos servicios proporcionan herramientas para analizar y visualizar datos de seguimiento.

Parámetros

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 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 final y el método HTTP. Todas las métricas también tienen una marca de tiempo, nuevamente para permitir el ordenamiento cronológico.

Registros

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 nuestros arquitectos de soluciones descubrieron cuando compararon los conjuntos de características de observabilidad en OTel con otras herramientas de observabilidad, consulte Integración de OpenTelemetry en la arquitectura de referencia de aplicaciones modernas: un informe de progreso en nuestro blog.

Instrumentación OTel

OTel se integra con muchos lenguajes de programación, bibliotecas y marcos populares . El soporte en algunos idiomas es más completo que en otros. Por ejemplo, las bibliotecas de instrumentación de JavaScript tienen implementaciones autodenominadas “estables” tanto para el seguimiento como para las métricas y algunos de los soportes más estables para los registros. También proporcionan una opción de instrumentación automática que le permite comenzar a recibir seguimientos sin agregar 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 funciones de instrumentación automática.

Objetivos de telemetría

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:

  • Quiero saber cuándo mi servicio está bajo presión y necesita escalarse.
  • Quiero saber si mi servicio se reinicia a menudo.

Pero también pueden ser preocupaciones relacionadas con el producto y la experiencia del usuario, como:

  • Quiero que los usuarios vean los mensajes nuevos en el sistema en menos de cinco segundos.
  • Quiero que las notificaciones se envíen en el minuto siguiente al envío de un mensaje.

Como ejemplo de nuestro tutorial Cómo usar el seguimiento de OpenTelemetry para comprender sus microservicios , puede definir los siguientes como objetivos clave:

  • Comprender todos los pasos que sigue una solicitud para realizar el nuevo flujo de mensajes.
  • Comprobar que el flujo de usuarios se ha completado correctamente.
  • Cerciorarse de que el flujo de usuario se ejecuta en menos de cinco segundos de extremo a extremo (en circunstancias «normales»).
  • Averiguar si el servicio de notificación está procesando el evento (enviado por el servicio de mensajería) a tiempo.
Implantación de OTel

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.

Debido a que el formato de los datos producidos por OTel se considera un estándar de la industria, múltiples soluciones de visualización y agregació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.

¿Qué es una API en el contexto de OTel?

Las API definen los métodos, funciones y 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 aplicações 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 aplicação que facilitan a los desarrolladores la creación de aplicações que se ajusten al estándar o interactúen con la aplicación. Los SDK suelen incluir bibliotecas, ejemplos de código, documentación y herramientas para pruebas, depuración y optimización del rendimiento. OTel proporciona SDK para seguimiento , métricas y gestión de recursos .