Introducción a OpenTelemetry para principiantes

Hablemos de OpenTelemetry: una forma estándar independiente del proveedor para recopilar datos de telemetría.

Ofrecer una mejor observabilidad en una aplicación es un gran desafío para cualquier desarrollador porque necesitan capturar datos de telemetría de la aplicación. El diccionario de Cambridge define la telemetría como la ciencia o el proceso de recopilar información sobre objetos que están lejos y enviar la información a algún lugar de forma electrónica.

Por ejemplo, el solo clic o la sesión de un usuario en un sitio web genera muchas solicitudes y un flujo de seguimiento entre redes, microservicios, bases de datos, etc.

OpenTelemetry es una plataforma de observabilidad, un conjunto de componentes bien factorizados que se pueden usar juntos o a la carta. Además, los desarrolladores de marcos y bibliotecas que todos usamos hoy en día ahora tienen una forma estándar de incorporar datos de telemetría en esas bibliotecas y marcos, brindando a los usuarios finales muchas ideas listas para usar sobre lo que esos marcos están haciendo debajo del capó. .

Para comprender OpenTelemetry, primero debe saber qué es el rastreo distribuido.

¿Qué es el rastreo distribuido?

A medida que nuestras aplicaciones se vuelven más complejas y más servicios están involucrados en atender el tráfico de usuarios y completar transacciones, se vuelve cada vez más crítico comprender cómo las solicitudes atraviesan nuestros servicios y cómo cada servicio contribuye a la latencia general. Esto es lo que hace el rastreo distribuido. Captura la latencia de las solicitudes de los usuarios y cuánto tarda cada microservicio en la ruta en devolver una respuesta.

Cuando llega una solicitud de usuario, queremos crear un seguimiento, es decir, la información total que describe cómo responde nuestro sistema a una solicitud de usuario. Los seguimientos se componen de tramos, y cada tramo significa un par específico de solicitud y respuesta involucrado en atender una solicitud de usuario. El intervalo principal describe la latencia observada por el usuario final. Y child span se usa para comprender cómo se llamó y respondió con su información de latencia a un servicio particular en el sistema distribuido.

¿Qué es OpenTelemetry?

OpenTelemetry es un proyecto de código abierto alojado por CNCF que proporciona una forma estándar de generar datos de telemetría. Fue creado por la fusión de Seguimiento abiertoun estándar para generar datos de rastreo, y censo abiertoque era un estándar para generar datos de métricas.

OpenTelemetry ofrece un conjunto único de API, agentes, servicios de recopilación y bibliotecas para capturar seguimientos y métricas distribuidas desde su aplicación. OpenTelemetry estandariza la forma en que recopilamos datos de telemetría y los enviamos a un back-end de su elección. Esto le proporciona una ruta de instrumentación independiente del proveedor y le brinda la flexibilidad de cambiar su back-end sin instrumentar su código nuevamente.

Por lo tanto, puede instrumentar sus aplicaciones utilizando un agente independiente del proveedor y al mismo tiempo enviar sus métricas y seguimientos a un proveedor de SaaS como Datadog. Luego, si desea cambiar de proveedor (por ejemplo, de Datadog a Dynatrace), puede hacerlo sin cambiar el código de su aplicación.

El proyecto OpenTelemetry tiene como objetivo proporcionar un conjunto único de bibliotecas y agentes de API para capturar métricas y seguimientos distribuidos de sus aplicaciones. Esto se aplica a muchos idiomas y plataformas. El proyecto OpenTelemetry también incluye un servicio de recopilador opcional y tiene un repositorio dedicado para las especificaciones. Para ser claros, OpenTelemetry no es Jaeger o Prometheus, que son back-ends observables. Pero ayuda a exportar datos a back-end comerciales y de código abierto.

A continuación se muestran las funciones que ofrece OpenTelemetry:

  • Estandarización en la recopilación de datos de telemetría que las organizaciones pueden seguir, lo que facilita el movimiento entre proveedores.
  • Una convención semántica de estándar abierto e independiente del proveedor para el proceso de recopilación de datos
  • Recopilador que se puede implementar como agente o puerta de enlace o de muchas maneras diferentes
  • Admite múltiples formatos de propagación de contexto para la migración
  • Una solución integral para generar, emitir, recopilar, procesar y exportar datos de telemetría
  • Facilidad para enviar datos a varios destinos en paralelo con control completo sobre ellos

Componentes de OpenTelemetry

A continuación se muestran los componentes principales de OpenTelemetry:

  • Proto: este componente se utiliza para definir recopiladores, bibliotecas de instrumentación, etc., que son tipos de interfaz independientes del idioma para OpenTelemetry.
  • Recopilador: los recopiladores se utilizan para recibir, procesar y exportar datos de telemetría. Esta implementación de recopiladores debe ser independiente del proveedor. De forma predeterminada, todos los datos de telemetría se exportan mediante bibliotecas de instrumentación en esta ubicación.
  • Especificación: este componente describe los requisitos y expectativas de la implementación en diferentes lenguajes que consisten en API, SDK y datos. La API genera las capacidades de exportación, procesamiento y datos de telemetría para implementar las API proporcionadas por los SDK. Los datos tienen las convenciones semánticas para admitir todo tipo de proveedores sin cambiar ningún código.
  • Bibliotecas de instrumentación: están disponibles en varios idiomas como parte del proyecto OpenTelemetry. Estas bibliotecas se utilizan para proporcionar observabilidad a otras bibliotecas para que todas las aplicaciones se observen mediante llamadas a la API de OpenTelemetry.

Arquitectura de telemetría abierta

Imagen de Nueva Reliquia

A alto nivel, OpenTelemetry consta de tres piezas principales:

  • Un conjunto de API para instrumentar aplicaciones, bibliotecas y marcos.
  • El SDK implementa las API.
  • Un recopilador opcional puede ingerir, agregar y exportar datos de telemetría donde los necesite.

El propósito de la API es permitir la creación de instrumentación para bibliotecas y el código de la aplicación. La API tiene cuatro secciones principales: rastreo, medidores, un contexto compartido y convenciones semánticas.

  • Tracer API admite la creación, la anotación y la finalización de tramos.
  • La API del medidor consta de múltiples instrumentos métricos. Ejemplos de estos instrumentos son observadores, registradores de valores, contadores.
  • Puede rastrear y ejecutar el contexto de extensión habilitando la API de contexto y propagar ese contexto tanto dentro como fuera de su sistema.
  • Todas las pautas y reglas para la denominación principal, como la denominación de tramos, atributos, etiquetas e instrumentos métricos, están presentes en las convenciones semánticas. Estas convenciones se implementan para garantizar la coherencia entre diferentes implementaciones de lenguaje y para instrumentaciones externas.

En un contexto compartido, la implementación del contexto se encuentra entre el trazador y el medidor y permite que todos los registros de métricas que no sean del observador ocurran en el contexto de un lapso de ejecución. Una característica que permite que los SDK capturen tramos ejemplares para valores métricos. Puede personalizar el contexto con propagadores, que permiten propagar el contexto de intervalo dentro y fuera del sistema, lo que permite un verdadero seguimiento distribuido.

El recopilador es una parte esencial de la arquitectura de OpenTelemetry. Es un servicio independiente que puede recibir, procesar y exportar datos de telemetría de varias fuentes, incluidos OpenCensus, Zipkin, Jaeger y el protocolo OpenTelemetry. Con recopiladores, puede exportar tramos y métricas a múltiples proveedores y sistemas de telemetría de código abierto.

La arquitectura OpenTelemetry ofrece una solución de telemetría completa lista para usar. También puede personalizar mediante el uso de múltiples puntos de extensión según la necesidad.

¿Cómo funciona OpenTelemetry?

Dentro de cada servicio en su implementación, instale el cliente OpenTelemetry. El cliente es el SDK; el SDK, a su vez, tiene una API. Los marcos de trabajo y las bibliotecas de sus aplicaciones utilizan esta API de instrumentación para describir el trabajo que están realizando. Luego, el SDK exporta las observaciones recopiladas a un servicio de canalización de datos llamado Collector.

OpenTelemetry tiene su propio protocolo de datos, OTLP, pero el recopilador puede traducir OTLP a varios formatos, incluidos Zipkin, Jaegery Prometeo. En particular, OpenTelemetry no proporciona su propio back-end o herramienta de análisis; esto se debe a que es un esfuerzo de estandarización en el corazón de OpenTelemetry. El objetivo es llegar a un lenguaje universal para describir las operaciones de las computadoras en un entorno de nube. El objetivo no es estandarizar cómo analizamos esos datos. En cambio, esperamos que OpenTelemetry ayude a impulsar el mundo de la observabilidad al permitir que las nuevas herramientas de análisis comiencen rápidamente sin tener que reconstruir todo este ecosistema de software de telemetría.

Cuando envía una gran cantidad de datos a través del sistema, hay mucho que considerar. Afortunadamente, OpenTelemetry ha pensado en todas las cosas y tiene soluciones para cada una de esas preguntas. En primer lugar, OpenTelemetry es flexible y maneja múltiples formatos de propagación de contexto. Esto significa que a pesar de que existe un estándar, todavía existe la opción de elegir dentro de ese estándar. Por lo tanto, si está utilizando algo como el formato de contexto de rastreo w3c o la propagación b3, estos son estándares diferentes dentro del estándar que permiten que sus servicios conecten los puntos.

Conclusión

OpenTelemetry recopila una variedad de observaciones, siendo las métricas de seguimiento distribuidas y los recursos del sistema las más importantes. En lugar de tratarlas como señales separadas, OpenTelemetry las entrelaza y proporciona indexación y contexto que le permite agregar e indexar todas estas señales en el back-end.

Además de la recopilación de datos, OpenTelemetry proporciona una instalación de canalización y procesamiento de datos que le permite cambiar formatos de datos, manipular sus datos y todas las herramientas que necesita para construir una canalización de telemetría robusta en un sistema moderno.

Entonces, eso fue todo sobre OpenTelemetry, siga adelante y pruebe esta herramienta.