OpenTelemetry vs.Prometheus: no se puede corregir lo que no se ve

29 de marzo de 2024

Tiempo de lectura: 7 minutos

Supervisar y optimizar el rendimiento de las aplicaciones es importante para los desarrolladores de software y las empresas en general. Cuantas más aplicaciones implemente una empresa, más datos existirán para recopilar y analizar. Sin embargo, estos datos no valen mucho sin las herramientas adecuadas para monitorear, optimizar, almacenar y, lo que es más importante, poner los datos en contexto.

Las organizaciones pueden aprovechar al máximo los datos de las aplicaciones implementando soluciones de supervisión y observabilidad que ayudan a mejorar el estado de las aplicaciones identificando problemas antes de que surjan, identificando cuellos de botella, distribuyendo tráfico de red y otros. Estas características contribuyen a reducir el tiempo de inactividad de las aplicaciones, proporcionan un rendimiento más fiable y mejoran la experiencia del usuario.

OpenTelemetry y Prometheus son proyectos de código abierto de Cloud Native Computing Foundation (CNCF) que ofrecen herramientas de observabilidad para la supervisión de aplicaciones. Los diferentes tipos de datos y operaciones requieren soluciones distintas que dependen de los objetivos de una organización y las especificaciones de las aplicaciones. Es importante comprender las diferencias clave entre plataformas como OpenTelemetry y Prometheus y lo que ofrece cada solución antes de elegir una para la implementación.

También es valioso tener en cuenta que OpenTelemetry y Prometheus se integran y pueden trabajar juntos como un potente dúo para monitorear aplicaciones. OpenTelemetry y Prometheus facilitan la recopilación y transformación de métricas, lo que permite a los equipos de DevOps y TI generar y actuar en función de la información sobre el rendimiento.

¿Qué es OpenTelemetry?

OpenTelemetry o OTel es una plataforma diseñada para crear una ubicación centralizada para generar, recopilar, exportar y gestionar datos de telemetría, incluidos registros, métricas y seguimientos. OTel nace de la fusión de OpenCensus y OpenTracing con el objetivo de proporcionar APIs, SDKs, librerías e integraciones que estandaricen la recopilación de datos dispares. Con OTel, las salidas de monitorización deseadas se pueden integrar en su código para simplificar el procesamiento de datos y asegurarse de que los datos se exporten al back-end apropiado.

El análisis de los datos de telemetría es clave para comprender el rendimiento y la salud del sistema. Este tipo de observabilidad optimizada permite a las organizaciones solucionar los problemas con mayor rapidez, aumentar la fiabilidad del sistema, solucionar los problemas de latencia y reducir el tiempo de inactividad de las aplicaciones.

He aquí un resumen rápido de los aspectos clave del ecosistema de OpenTelemetry:

API: API de OpenTelemetry (interfaces de programación de aplicaciones) traduce universalmente lenguajes de programación. Esta funcionalidad permite que las API recopilen datos de telemetría. Estas API desempeñan un papel clave en la estandarización de la recopilación de métricas de OpenTelemetry.

SDKs: Los kits de desarrollo de software son herramientas para crear software. Incluyen el marco, las bibliotecas de código y los depuradores que son los componentes básicos del desarrollo de software. Los SDK de OTel implementan las API de OpenTelemetry y ofrecen las herramientas necesarias para generar y recopilar datos de telemetría.

Recopilador de OpenTelemetry: el recopilador de OTel recibe, procesa y exporta datos de telemetría. Los colectores OTel se pueden configurar para filtrar tipos de datos específicos en el back-end designado.

Biblioteca de instrumentación: OTel proporciona un modelo de instrumentación que se ejecuta en todas las plataformas. Las librerías de instrumentación hacen posible que OTel se integre con cualquier lenguaje de programación.

Ventajas de OpenTelemetry

El protocolo OpenTelemetry (OTLP) simplifica la observabilidad al recopilar datos de telemetría, como métricas, registros y seguimientos, sin cambiar el código ni los metadatos.

Métricas: las métricas definen una descripción general de alto nivel del rendimiento y el estado del sistema. Los desarrolladores, los equipos de TI y de gestión empresarial determinan qué métricas son más útiles de rastrear para mantener un nivel de rendimiento de las aplicaciones que cumpla con los objetivos empresariales. Las métricas varían en función de los datos que un equipo considere importantes y pueden incluir el tráfico de red, la latencia y el almacenamiento de la CPU. Las métricas también se pueden utilizar para realizar un seguimiento de patrones y tendencias en el rendimiento de las aplicaciones.

Registros: los registros almacenan eventos que ocurren dentro de un componente de software o aplicación. Los registros se pueden crear en torno a aspectos específicos de un componente que los equipos de DevOps desean supervisar. Sirven como datos históricos que pueden presentar información general de rendimiento, mostrar cuándo se superan los umbrales establecidos o mostrar errores. Los registros ayudan a supervisar el estado general de un ecosistema de aplicaciones.

Rastreos: los rastreos ofrecen una vista más alejada del rendimiento de la aplicación que los registros y ayudan con la optimización. También están más centrados que los registros y siguen el recorrido de extremo a extremo de una sola solicitud a medida que se mueve por la pila de aplicaciones. Los rastreos permiten a los desarrolladores encontrar el momento exacto en que se producen errores o cuellos de botella, cuánto duran y cómo afectan al proceso del usuario. Esta información ayuda a administrar los microservicios y a mejorar el rendimiento general de las aplicaciones.

OTel puede tomar estos tres tipos diferentes de datos de telemetría y exportarlos a varios back-ends, incluido Prometheus. Esta capacidad evita la dependencia del proveedor o del back-end y permite a los desarrolladores elegir sus herramientas de análisis preferidas. OpenTelemetry admite una serie de integraciones con otras plataformas, incluida Prometheus, que proporcionan mayores oportunidades de observabilidad. OTel es compatible con Java, Python, JavaScript y Go, lo que lo convierte en una solución cada vez más flexible. También permite a los desarrolladores y equipos de TI monitorear el rendimiento desde cualquier navegador web o ubicación.

Las mayores fortalezas de OpenTelemetry provienen de su capacidad para recopilar y exportar datos de manera consistente en muchas aplicaciones y su estandarización del proceso de recopilación. OTel es una potente herramienta para la observabilidad en sistemas distribuidos y microservicios.

¿Qué es Prometheus?

Prometheus es un kit de herramientas para la supervisión y las alertas que se creó para recopilar y organizar las métricas de las aplicaciones. El servidor Prometheus se desarrolló originalmente en SoundCloud antes de que se convirtiera en una herramienta de código abierto.

Prometheus es una base de datos de series temporales para la supervisión integral de datos de series temporales. Las métricas de series temporales son una colección de datos que se toman a intervalos regulares, como los datos de ventas mensuales o el tráfico diario de aplicaciones. La visibilidad clara de este tipo de datos ofrece información sobre patrones, tendencias y predicciones para la planificación empresarial. Una vez integrado con un host, Prometheus recopila métricas de aplicaciones relacionadas con funciones dedicadas que los equipos de DevOps desean supervisar.

Las métricas de Prometheus proporcionan puntos de datos que constan del nombre de la métrica, la etiqueta, la marca de tiempo y el valor mediante un lenguaje de consulta denominado PromQL. PromQL permite a los desarrolladores y a los departamentos de TI agregar métricas de datos y convertirlas en histogramas, gráficos y paneles para una mayor visualización. Prometheus puede acceder a los datos de las bases de datos empresariales o de los exportadores. Los exportadores son software relacionados con las aplicaciones que trabajan para extraer métricas de varias aplicaciones y endpoints.

Prometheus recopila cuatro tipos de métricas:

Contadores: contramedir valores numéricos acumulativos que solo aumentan. Los contadores se utilizan para medir las tareas completadas, el número de errores que se produjeron durante un período definido o el número de procesos o microservicios en ejecución.

Calibradores: los medidores monitorean los valores numéricos que suben y bajan dependiendo de factores externos. Pueden supervisar el uso de la CPU y la memoria, la temperatura o el tamaño de una cola.

Histogramas: los histogramas miden la duración de los eventos especificados, como la duración de la solicitud o el tamaño de la respuesta. A continuación, dividen el rango de estas mediciones en intervalos que se denominan cubos y determinan cuántas de estas mediciones caen en cada cubo respectivo.

Resúmenes: al igual que los histogramas, los resúmenes también miden la duración de las solicitudes y el tamaño de las respuestas, pero además proporcionan un recuento total de todas las observaciones y un total de todos los valores observados.

Otro aspecto valioso de Prometheus es que puede crear paneles de control y gráficos accesibles basados en los datos recopilados.

Beneficios de Prometeo

Prometheus permite la supervisión de aplicaciones en tiempo real que le proporciona información precisa y facilita la resolución rápida de problemas. También permite la creación de umbrales relacionados con funciones específicas. Cuando se alcanzan o superan estos umbrales, se activan alertas que pueden reducir el tiempo que se tarda en resolver los problemas. Prometheus puede manejar y almacenar grandes volúmenes de datos de métricas y hacer que los datos estén disponibles para los equipos de análisis según sea necesario. No pretende ser una solución de almacenamiento a largo plazo, sino una herramienta para almacenar datos que se necesitan para un análisis inmediato. La ventana estándar para el almacenamiento de datos con Prometheus es de entre dos horas y quince días.

Prometheus se integra a la perfección con Kubernetes, una plataforma de orquestación de contenedores de código abierto para programar y automatizar la implementación, la gestión y el escalado de aplicaciones en contenedores. Kubernetes permite a las empresas crear entornos híbridos y multinube complejos que implementan una variedad de servicios y microservicios. La integración de Prometheus con Kubernetes aporta Full Stack Observability y supervisión a estos sistemas complejos.

Prometheus también es compatible con Grafana, una potente herramienta de visualización que ayuda a transformar los datos en paneles de control, tablas, gráficos y alertas. Cuando se combina con Prometheus, Grafana puede tomar métricas y crear visualizaciones claras. La compatibilidad entre estas dos plataformas hace que los datos complejos sean más accesibles y compartibles entre diferentes equipos.

Diferencias clave entre OpenTelemetry y Prometheus

Prometheus ofrece herramientas para la supervisión, el almacenamiento y la visualización de métricas, pero no rastrea los registros ni los rastreos de soporte, que se utilizan para el análisis de la causa raíz. En general, Prometheus tiene casos de uso más limitados que OpenTelemetry.

OpenTelemetry puede procesar y rastrear métricas más complejas que Prometheus a través de integraciones agnósticas del lenguaje de programación. OTel es altamente escalable y tiene mayor extensibilidad que Prometheus al ofrecer modelos de instrumentación automatizados. A diferencia de Prometheus, OpenTelemetry no ofrece una solución de almacenamiento y debe emparejarse con un sistema back-end independiente.

Un breve resumen:

  • Prometheus puede medir las métricas acumuladas, lo que le da una suma, mientras que OpenTelemetry puede representar las métricas como deltas.
  • Prometheus proporciona almacenamiento de datos y métricas a corto plazo, mientras que OTel no admite el almacenamiento de forma nativa, pero se puede asociar con una solución de almacenamiento independiente.
  • OpenTelemetry recopila métricas, registros y seguimientos mediante una API consolidada a través de inserción o extracción, y los traduce a un lenguaje común, lo que Prometheus no puede lograr. Prometheus recopila métricas extrayendo datos de los hosts y se ocupa principalmente de recopilar y almacenar métricas de series temporales.
  • OTel funciona con cualquier lenguaje y puede traducir métricas, lo que brinda a los desarrolladores más flexibilidad. Prometheus utiliza PromQL para agregar datos y métricas.
  • Prometheus proporciona visualización web para monitorear métricas junto con alertas personalizables. OpenTelemetry debe integrarse con herramientas independientes para la visualización.
  • OTel permite que los valores métricos se expresen como números enteros en lugar de números de punto flotante, lo que proporciona representaciones de valor más precisas y es más fácil de entender. Prometheus no puede expresar métricas como números enteros.

Las necesidades de su organización determinarán cuál de estas soluciones es la adecuada para usted. Si necesita una comprensión más holística de sus datos, trabaja en entornos complejos con sistemas distribuidos y desea más flexibilidad, OpenTelemetry podría ser una solución más adecuada. Lo mismo se puede decir si necesita supervisar registros y rastreos.

Si necesita supervisar sistemas u operaciones individuales y busca modelos de alerta, almacenamiento y visualización, Prometheus podría ser la opción adecuada.

Integración de OpenTelemetry y Prometheus

La buena noticia es que no necesariamente tienes que elegir uno u otro; OpenTelemetry y Prometheus son plataformas compatibles. Los SDK de OTel pueden recopilar métricas de los modelos de datos de Prometheus y Prometheus admite métricas de OpenTelemetry. El uso conjunto de estas plataformas le brinda lo mejor de ambos mundos y opciones de monitoreo avanzadas. Por ejemplo:

  • Cuando se asocian, OTel y Prometheus proporcionan monitorización en sistemas complejos con información en tiempo real sobre los entornos de sus aplicaciones.
  • Puede combinar las herramientas de monitorización y vigilancia de Otel con las capacidades de alerta de Prometheus.
  • Prometheus puede manejar grandes volúmenes de datos. Esta característica, junto con la capacidad de OTel para consolidar métricas, rastreos y registros en una sola interfaz, crea una mayor eficiencia al escalar sistemas y aplicaciones.
  • PromQL puede analizar los datos que se recopilan de las capturas de datos de OpenTelemetry y usarlos para crear modelos de visualización.

Además, OpenTelemetry y Prometheus se integran con IBM Instana e IBM Turbonomic para ofrecer herramientas de monitorización adicionales. Con el potente mapa de dependencias de Instana, la correlación de servicios ascendentes y descendentes y la visibilidad de pila completa, las capacidades de OTel están optimizadas para garantizar que todos los servicios estén instrumentados. Instana ofrece la misma gran experiencia con los datos de OTel que proporciona para cualquier otra fuente de datos, lo que le brinda el contexto que necesita para encontrar y solucionar rápidamente los problemas de las aplicaciones. Con Turbonomic, puede utilizar las herramientas de supervisión de datos de Prometheus para automatizar las decisiones de asignación de recursos basadas en la recopilación de datos en tiempo real. Estas integraciones son formas optimizadas de promover la salud de su ecosistema de aplicaciones y mejorar el rendimiento general.

 

Autor

Camilo Quiroz-Vázquez

IBM Staff Writer