¿Qué es OpenTelemetry?
Definición de OpenTelemetry
OpenTelemetry (OTel) es un marco de trabajo de observabilidad open source que permite a los equipos de desarrollo generar, procesar y transmitir datos de telemetría en un formato único y unificado. Lo desarrolló Cloud Native Computing Foundation (CNCF) a fin de proporcionar herramientas y protocolos estandarizados para recopilar y enrutar métricas, logs y rastreos a plataformas de monitoreo.
OpenTelemetry ofrece herramientas, API y SDK neutrales con respecto a los proveedores, de modo que tus datos pueden enviarse a cualquier backend de observabilidad para su análisis.
OpenTelemetry se está volviendo rápidamente en el estándar de telemetría de observabilidad dominante en las aplicaciones nativas del cloud. Adoptar OpenTelemetry se considera esencial para las organizaciones que desean estar preparadas para las demandas de datos del futuro sin estar atadas a un proveedor específico o a las limitaciones de sus tecnologías existentes.
Entonces, ¿qué son los datos de telemetría?
Los datos de telemetría consisten en logs, métricas y rastreos recopilados de un sistema distribuido. Conocidas como los "pilares de la observabilidad", estas tres categorías de datos ayudan a los equipos de desarrolladores, DevOps e IT a comprender el comportamiento y el rendimiento de sus sistemas.
Logs: un log es un registro de texto de un evento discreto que ocurrió en un sistema en un momento en particular. Las entradas de logs se generan cada vez que un bloque de código se ejecuta. Suelen incluir una marca de tiempo que muestra cuándo ocurrió el evento y una carga de contexto. Los datos de logs tienen varios formatos, entre ellos: texto sin formato, estructurados y no estructurados. Son especialmente útiles para solucionar problemas, depurar y verificar el código.
Métricas: las métricas son valores numéricos medidos en intervalos de tiempo, por lo general, conocidos como datos temporales. Incluyen atributos, como una marca de tiempo, el nombre de un evento y el valor de un evento. En sistemas modernos, las métricas nos permiten monitorear, analizar y responder a problemas, y facilitan alertas. Pueden brindarte información sobre tu infraestructura o aplicación, como la tasa de errores del sistema, el uso de CPU o la tasa de solicitudes de un servicio.
Rastreos: los rastreos representan el recorrido de una solicitud a través de un sistema distribuido. En OpenTelemetry, se definen según sus tramos. Un grupo de tramos constituye un rastreo. El rastreo ayuda a los equipos a comprender el recorrido completo y el comportamiento de las solicitudes a través de varios servicios y componentes. El rastreo distribuido te permite rastrear una ruta de ejecución completa e identificar qué código causa problemas. Los rastreos brindan visibilidad del estado general de una aplicación, pero tienen visibilidad limitada de su infraestructura subyacente. Para obtener un panorama completo del entorno, necesitas los otros dos pilares de la observabilidad: logs y métricas.
Breve historia de OpenTelemetry
OpenTracing y OpenCensus eran proyectos de rastreo distribuido que se superponían y que se desarrollaron de forma independiente para abordar la falta de un formato de datos estandarizado. OpenTelemetry se creó para combinar las bases de código de los proyectos OpenTracing y OpenCensus, y así unir sus fortalezas en un único proyecto hospedado por la Cloud Native Computing Foundation.
OpenTracing proporciona API neutrales con respecto a los proveedores para enviar datos a un backend. OpenCensus fue una recopilación de bibliotecas específicas según el lenguaje que los desarrolladores usaron para instrumentar su código y enviar datos a los backends. Ambas eran open source, lo que significa que el código fuente del software se desarrolló de forma colaborativa y está disponible para que todos lo usen, modifiquen y distribuyan.
Con OpenTelemetry, los desarrolladores ya no tienen que elegir entre OpenTracing y OpenCensus. OpenTelemetry brinda un conjunto unificado de bibliotecas, API, agentes y servicios de recopilador para recopilar y transferir datos.
¿Cómo funciona OpenTelemetry?
OpenTelemetry proporciona un marco de trabajo común para recopilar datos de telemetría y exportarlos al backend de Observability que prefieras. Usa un conjunto de herramientas, SDK y API independientes del proveedor para ingestar, transformar y transportar datos.
Las API de OpenTelemetry específicas según el lenguaje coordinan la recopilación de datos de telemetría en todo el sistema e instrumentan el código. Los SDK de OpenTelemetry implementan y brindan soporte a las API a través de bibliotecas que ayudan con la recopilación, el procesamiento y la exportación de datos. OpenTelemetry también proporciona la instrumentación automática de servicios y brinda soporte para la instrumentación personalizada. Puedes exportar tus datos de telemetría usando un exportador proporcionado por el proveedor o el protocolo de OpenTelemetry (OTLP).
Componentes básicos de OpenTelemetry
Los componentes básicos de OpenTelemetry incluyen los siguientes:
Recopilador
El recopilador de OpenTelemetry es un proxy independiente del proveedor que recibe, procesa y exporta datos de telemetría. Ofrece soporte para recibir datos de telemetría en varios formatos y para procesar y filtrar los datos de telemetría antes de que se exporten.
SDK de lenguaje
Los SDK de lenguaje de OpenTelemetry te permiten usar la API de OpenTelemetry para generar datos de telemetría con un lenguaje y exportar los datos a un backend.
Bibliotecas de instrumentación
OpenTelemetry brinda soporte a una gran cantidad de componentes que generan datos de telemetría relevantes a partir de bibliotecas populares y marcos de trabajo para los lenguajes compatibles.
Instrumentación automática
Una implementación específica según el lenguaje de OpenTelemetry puede brindar una forma de instrumentar tu aplicación sin tener que cambiar el código fuente.
Exportadores
Al desacoplar la instrumentación de la configuración del backend, los exportadores facilitan cambiar de backend sin modificar la instrumentación. También te permiten cargar la telemetría a más de un backend.
Beneficios de OpenTelemetry
Los beneficios de OpenTelemetry son la estandarización de datos y la flexibilidad a prueba del futuro, lo que ese traduce en mejor observabilidad, mayor eficiencia y menos costos.
Estandarización en la recopilación de datos
OpenTelemetry proporciona una solución para los equipos de DevOps que buscan una forma continua de recopilar y exportar datos de telemetría a los backends, como Splunk, New Relic, Dynatrace y Datadog, sin tener que cambiar la instrumentación. Con los estándares abiertos y la recopilación de datos estandarizada, OpenTelemetry crea mayor visibilidad y observabilidad simplificada. Gracias a una observabilidad más fácil de configurar, los equipos pueden comprender mejor el estado del sistema, identificar problemas de rendimiento y reducir el tiempo necesario para solucionar las causas raíz antes de que ocurran interrupciones en el servicio. Las organizaciones que usan OpenTelemetry no necesitan desperdiciar tiempo en desarrollar soluciones internas o investigar herramientas individuales para varias aplicaciones. Mediante la reducción del ruido, los costos y la necesidad de cambios de configuración, OpenTelemetry permite a las organizaciones enfocarse en aprovechar sus datos, en lugar de en cómo recopilarlos. Y la información puede entregarse a los equipos a través de las herramientas o formatos que tengan más sentido, lo que dará como resultado una mejor colaboración.
Evitar el bloqueo de proveedores
OpenTelemetry libera a los equipos para que elijan cualquier backend que deseen, sin estar atados a un proveedor en particular, lo cual prepara sus inversiones para el futuro. Puede adaptarse a cambios en los sistemas, backends y procesos, de modo que nunca estés bloqueado en una sola plataforma, solución o contrato, lo que permitirá a las organizaciones ampliarse y adaptarse a medida que evolucionen sus necesidades tecnológicas. Esa independencia y flexibilidad significa que puedes basar tus decisiones comerciales en lo que sea mejor para los resultados y los clientes; y no en las limitaciones de tu tecnología.
Con OpenTelemetry, obtienes escalabilidad para el crecimiento, compatibilidad entre plataformas e integración fácil a tus herramientas existentes de monitoreo y observabilidad.
OpenTelemetry con Elastic
OpenTelemetry proporciona una forma estándar de instrumentar aplicaciones con un formato de telemetría unificado, pero no proporciona componentes de analíticas o backend. Elastic Observability integra los datos de OpenTelemetry sin problemas en una plataforma de Elasticsearch abierta y extensible.
Elastic soporta el protocolo de OpenTelemetry de forma nativa, y esto nos permite incorporar logs, métricas y rastreos en muchos lenguajes. Hace mucho más fácil aprovechar las capacidades de visualización y analíticas poderosas de Elastic a escala.
En abril de 2023, Elastic aportó su Elastic Common Schema (ECS) a OpenTelemetry con el objetivo a largo plazo de converger las convenciones semánticas con ECS para un esquema de datos de telemetría común. Elastic planea estandarizar con OpenTelemetry su arquitectura de datos, y aumentará su inversión y colaboración con el proyecto de OpenTelemetry en el futuro.
Elastic también es un gran colaborador en el proyecto de OpenTelemetry. Para ayudar a los administradores a monitorear y resolver los problemas de su plataforma de CI/CD, y ayudar a los desarrolladores a aumentar la velocidad y confiabilidad de sus pipelines de CI/CD, Elastic Observability proporciona visibilidad de los procesos de CI/CD. Con el objetivo de proporcionar dashboards de monitoreo, alertas y análisis de causa raíz en los pipeline, Elastic trabaja con las comunidades de las plataformas de CI/CD más populares, entre las que se encuentran Jenkins, Ansible y Maven, para instrumentar las herramientas con OpenTelemetry.
Elastic Observability es una solución de nivel empresarial que brinda a las organizaciones la posibilidad de enviar directamente los datos recopilados a través de la instrumentación con OpenTelemetry a los despliegues de Elastic. Ofrece visibilidad completa de tus aplicaciones cloud híbridas y la capacidad de almacenar, analizar y visualizar todo. También puedes usar las capacidades poderosas de machine learning para reducir el tiempo de análisis y recuperación.
Preguntas frecuentes de OpenTelemetry
¿Es OpenTelemetry un estándar?
Sí. OpenTelemetry es un proyecto open source y un estándar unificado para logs, rastreos y métricas.
¿Cuáles son ejemplos de telemetría?
Los ejemplos de datos de telemetría incluyen logs, métricas y rastreos que se usan en la observabilidad y el monitoreo de sistemas.
¿Cuál es la diferencia entre OpenTelemetry y Jaeger?
OpenTelemetry te ayuda a procesar y exportar datos a una variedad de backends comerciales y open source, pero no es un backend de observabilidad como Jaeger. Mientras que OpenTelemetry brinda un conjunto de herramientas, SDK y API para ayudar a generar y gestionar datos de telemetría, Jaeger es una herramienta de rastreo distribuida open source. Los equipos de IT usan Jaeger para monitorear aplicaciones y solucionar problemas en ellas con base en la arquitectura de microservicios. Jaeger no soporta logs y métricas.
¿Cuál es la diferencia entre API y SDK de OpenTelemetry?
Las API, o interfaces de programación de aplicaciones, de OpenTelemetry coordinan la recopilación de datos de telemetría en todo el sistema e instrumentan el código. Como las API son específicas según el lenguaje, deben coincidir con el lenguaje de tu código. Los SDK, o kits de desarrollo de software, de OpenTelemetry implementan y brindan soporte a las API a través de bibliotecas que ayudan con la recopilación, el procesamiento y la exportación de datos a un backend de observabilidad.