GNU/Linux >> Tutoriales Linux >  >> Linux

Una introducción a las métricas y la supervisión del rendimiento de Prometheus

Enredaremos capullos y flores y vigas

Que centellean en el borde de la fuente y hacen

Extrañas combinaciones de cosas comunes

"Prometheus Unbound" de Percy Bysshe Shelley

Bienvenido al mundo de la recopilación de métricas y la supervisión del rendimiento. Como ocurre con la mayoría de las cosas de TI, se han creado sectores de mercado completos para vender estas herramientas. Y, por supuesto, varias utilidades de código abierto tienen el mismo propósito. Es una de estas herramientas de código abierto que vamos a examinar.

¿Qué es Prometeo?

Prometheus es una herramienta de recopilación de métricas y alertas desarrollada y lanzada en código abierto por SoundCloud. Prometheus tiene un diseño similar al sistema de monitoreo Borgmon de Google, y un sistema relativamente modesto puede gestionar la recopilación de cientos de miles de métricas por segundo. Si se ajusta e implementa correctamente, un clúster de Prometheus puede recopilar millones de métricas por segundo.

Prometeo se compone de aproximadamente cuatro partes:

  • La propia aplicación principal de Prometheus que es responsable de extraer métricas, almacenarlas en la base de datos y (opcionalmente) recuperarlas cuando se consulta.
    • El backend de la base de datos es una base de datos interna de series temporales. Esta base de datos siempre se usa, pero los datos también se pueden enviar a backends de almacenamiento remoto.
  • Los exportadores son programas externos opcionales que obtienen datos de una variedad de fuentes y los convierten en métricas que Prometheus puede recopilar.
    • Los exportadores están diseñados específicamente para trabajar con aplicaciones y hardware específicos.
  • AlertManager es un sistema de gestión de alertas que se envía con Prometheus.
  • Las bibliotecas de cliente se pueden usar para instrumentar aplicaciones personalizadas.

Digo "aproximadamente" cuatro partes porque a menudo se usan muchas aplicaciones adicionales con un clúster estándar de Prometheus. Si necesita o desea mejores capacidades gráficas, se pueden implementar aplicaciones como Grafana. Si necesita almacenar métricas durante largos períodos de tiempo, vale la pena considerar los backends de almacenamiento remoto. Y la lista continúa. Para este artículo, sin embargo, nos vamos a centrar en Prometheus con un pequeño desvío hacia los exportadores.

[ También te puede interesar:6 habilidades de administrador de sistemas que los desarrolladores web necesitan ]

¿Qué es una métrica?

Antes de llegar allí, debemos entender por qué existe algo como Prometheus. Entonces, comencemos con una pregunta:¿Qué son las métricas? En pocas palabras, las métricas miden algo. Por ejemplo, el tiempo que le toma leer este artículo es una métrica. El número de palabras es una métrica. El número promedio de letras en las palabras de este artículo es una métrica.

Sin embargo, esas métricas son bastante estáticas y no es algo para lo que necesariamente necesite un sistema como Prometheus. Prometheus se destaca en las métricas que cambian con el tiempo. Por ejemplo, ¿qué pasaría si quisiera saber cuántas "vistas" tiene este artículo? ¿O si quisiera saber cuánto tráfico entra y sale de su red? ¿O cuántos ciclos de compilación e implementación ocurren cada hora? Todas estas son métricas que se pueden introducir en Prometheus.

Ahora que entendemos qué es una métrica, veamos cómo Prometheus obtiene las métricas que necesita almacenar. Lo primero que necesita Prometheus es un objetivo . Los objetivos son los puntos finales que suministran las métricas que almacena Prometheus. Estos puntos finales pueden ser el punto final real que se está supervisando o pueden ser una pieza de software intermedio conocida como exportador. Los puntos finales se pueden proporcionar a través de una configuración estática o se pueden "encontrar" a través de un proceso llamado detección de servicios. El descubrimiento de servicios es un tema más avanzado para un artículo futuro.

Una vez que Prometheus tiene una lista de puntos finales, puede comenzar a recuperar métricas de ellos. Prometheus recupera métricas de una manera muy sencilla; una simple solicitud HTTP. La configuración apunta a una ubicación específica en el extremo que proporciona un flujo de texto que identifica la métrica y su valor actual. Prometheus lee este flujo de texto, ignora las líneas que comienzan con un # como comentarios y almacena las métricas que recibe en una base de datos local.

Un pequeño desvío hacia Exportadores

Prometheus solo puede usar HTTP para hablar con los puntos finales para la recopilación de métricas. ¿Qué sucede cuando intenta monitorear un enrutador o conmutador que solo se comunica mediante SNMP? ¿O tal vez desea monitorear un servicio en la nube que no tiene un extremo de métricas nativo de Prometheus? Afortunadamente, hay una solución:exportadores.

Los exportadores vienen en muchas formas y tamaños. Estos son pequeños programas especialmente diseñados para interponerse entre Prometheus y cualquier cosa que desee supervisar que no sea compatible de forma nativa con Prometheus. Algunos exportadores permanecen inactivos hasta que Prometheus les pide datos. Cuando esto sucede, el exportador se acerca al dispositivo que está monitoreando, obtiene los datos relevantes y los convierte a un formato que Prometheus puede ingerir. Otros exportadores sondean los dispositivos automáticamente y almacenan en caché los resultados localmente para que Prometheus los recoja más tarde.

Independientemente del diseño, los exportadores actúan como traductores entre Prometheus y los puntos finales que desea monitorear. Lo más probable es que si está tratando de monitorear un dispositivo o aplicación común, hay un exportador disponible para ello.

Almacenamiento de datos

Prometheus utiliza un tipo especial de base de datos en el back-end conocido como base de datos de series temporales. En pocas palabras, esta base de datos está optimizada para almacenar y recuperar datos organizados como valores durante un período de tiempo. Las métricas son un excelente ejemplo del tipo de datos que almacenaría en una base de datos de este tipo.

El almacenamiento externo también es una opción. Hay muchas opciones, como Thanos, Cortex y VictoriaMetrics, que brindan una variedad de beneficios. Uno de los principales beneficios es la centralización de las métricas recopiladas y el almacenamiento a largo plazo. Herramientas como Grafana pueden consultar estas soluciones de almacenamiento de terceros directamente.

Así que tienes un montón de métricas...

Ahora que eres un experto en Prometheus y lo tienes almacenando métricas, ¿cómo usas estos datos? Al igual que una base de datos SQL, Prometheus tiene un lenguaje de consulta personalizado conocido como PromQL. PromQL es bastante sencillo para métricas simples pero tiene mucha complejidad cuando es necesario. Al proporcionar el nombre de una métrica, se mostrarán todas las "instancias" de esa métrica:

También puede usar algunos métodos de PromQL para generar un gráfico que represente los datos que busca.

Por supuesto, si te tomas en serio la creación de gráficos, vale la pena buscar un paquete como Grafana. Grafana le permite crear paneles de métricas, enviar alertas y más.

Alerta

Si bien los gráficos son bonitos a la vista, las métricas pueden tener otro propósito importante. Se pueden utilizar para enviar alertas. Prometheus incluye una aplicación separada, llamada AlertManager, que sirve para este propósito. AlertManager recibe notificaciones de Prometheus y maneja toda la lógica necesaria para deduplicar y entregar las alertas.

Las alertas se crean escribiendo reglas de alerta. Estas reglas son simplemente consultas de PromQL que se activan cuando la consulta es verdadera. Es decir, si tiene una consulta que comprueba si la temperatura de la CPU supera los 80 °C, la consulta se activa para cada métrica que cumpla esa condición.

Las reglas de alerta también pueden incluir un período de tiempo durante el cual una regla debe evaluarse como verdadera. Ampliando nuestro ejemplo de temperatura, exceder los 80 °C está bien si es un período breve de tiempo, pero si dura más de cinco minutos, envíe una alerta. Las alertas se pueden enviar por correo electrónico, Slack, Twitter, SMS y casi cualquier otra cosa para la que pueda escribir una interfaz.

[ ¿Busca más información sobre la automatización de sistemas? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ] 

Resumir

El seguimiento es importante. Ayuda a identificar cuándo las cosas han salido mal y puede mostrar cuándo van bien. El monitoreo adecuado se puede utilizar en varias disciplinas para exprimir todo lo que pueda del objeto que se está monitoreando.

Prometheus es un poderoso paquete de métricas de código abierto. Es altamente escalable, robusto y extremadamente rápido. Se puede usar un solo servidor moderno para monitorear un millón de métricas o más por segundo. La distribución de servidores Prometheus permite monitorear muchas decenas e incluso cientos de millones de métricas cada segundo.

PromQL proporciona un lenguaje de consulta sólido que se puede utilizar para generar gráficos y alertas. El sistema de gráficos incorporado es ideal para visualizaciones rápidas, pero los tableros a más largo plazo deben manejarse en aplicaciones externas como Grafana.


Linux
  1. MySQL:ajuste y optimización del rendimiento

  2. Instale y use la herramienta de monitoreo de rendimiento de Collectl en Ubuntu 18.04 LTS

  3. Configurar la supervisión del rendimiento de Active Directory

  4. Supervisión y gestión de la memoria

  5. 24 ejemplos de iostat, vmstat y mpstat para la supervisión del rendimiento de Linux

4 herramientas de monitoreo de rendimiento de Linux basadas en CLI:top, htop, ps y vmstat

Instale la herramienta de monitoreo de rendimiento de NetData en Linux

Una introducción al hashing y las sumas de verificación en Linux

Una introducción a las reglas y escenarios de firewalld

Utilizando Grafana y Prometheus Kubernetes Cluster Monitoring

Introducción a la supervisión y el ajuste del rendimiento de Linux