Prometheus: Introducción a la Monitorización de Métricas

Última actualización: 04/04/2024 – Oscar Fernandez

En esta entrada vas a aprender qué es Prometheus, y cómo puedes usar esta herramienta de monitorización y alertas para supervisar tus sistemas y aplicaciones de una forma profesional. No te lo pierdas.

Prometheus Qué es

¿Qué es Prometheus?

Prometheus es un software especializado como sistema de monitorización y alertas escrito en el lenguaje de programación Go. Todos los datos y métricas se almacenan en la base de datos como series temporales (junto al instante de tiempo en el que el valor se ha registrado). También es posible añadir etiquetas de tipo clave-valor junto a estas métricas.

Las métricas que almacena Prometheus pueden ser de cualquier tipo, y dependerán de la naturaleza de la aplicación o del sistema que se quiera monitorizar. Por ejemplo, puede ser el uso de CPU o de memoria, número de conexiones, número de peticiones o cantidad de sesiones activas. Todas las mediciones y métricas recogidas ayudarán a diagnosticar errores o problemas de servicio en los sistemas y aplicaciones que se monitorizan.

Arquitectura

Prometheus tiene 3 componentes principales.

  • Servidor: Almacena los datos de las métricas.
  • Librería Cliente: Se usa para calcular y exponer las métricas al cliente.
  • Gestor de alertas: Genera alertas basadas en reglas.

Para monitorizar una aplicación deberemos configurar con código la librería de cliente de forma que exponga la métrica que queremos registrar. Ahora que la aplicación expone nuestra métrica, ejecutaremos el servidor de Prometheus y lo configuraremos para extraerla de la aplicación con unos intervalos de tiempo establecidos.

Arquitectura Prometheus
Arquitectura y componentes de Prometheus

También dispone de numerosos exporters para diferentes sistemas como bases de datos relacionales y no relacionales, sistemas de mensajería, sistemas de almacenamiento y aplicaciones. Puedes consultar el listado completo de exporters aquí.

Métricas en Prometheus

El tipo de métrica contador es un valor que solo se puede incrementar o bien resetear. Se puede usar para contar el número de peticiones o de errores en una aplicación, que son métricas que nunca se reducen.

Gauge o medidor es un valor numérico que puede incrementarse o decrementar. Un ejemplo puede ser el número de servidores en un sistema distribuido.

El histograma representa los valores en agrupaciones predefinidas y acumuladas en el tiempo. Por ejemplo, se puede usar un histograma para medir los tiempos de respuesta de nuestra aplicación en los intervalos de tiempo establecidos para cada petición de un cliente.

Prometheus y Grafana

Grafana es el componente que nos permitirá crear dashboards para comprender lo que está pasando en nuestro sistema monitorizado. Se integra perfectamente con el software de Prometheus que, aunque ya nos proporciona estos gráficos en su propia interfaz, están pensados como un mecanismo de testing o debug.

Para configurar Prometheus como fuente de datos en Grafana, debes indicar en Grafana la URL de tu servidor de Prometheus (por ejemplo, http://localhost:9090 si está en el mismo servidor).

Una vez que hayas configurado Prometheus como fuente de datos, puedes empezar a crear paneles y gráficos en Grafana. En la sección Explore en Grafana puedes construir tus consultas, y crear visualizaciones personalizadas como gráficos de barras o tablas.

Grafana también permite configurar alertas basadas en las métricas de Prometheus, definiendo las condiciones y acciones que necesites.

Prometheus en Cloud

Existen algunos servicios en la nube basados en Prometheus que ofrecen soluciones de monitoreo y métricas para entornos cloud:

Amazon Managed Service for Prometheus (AMP): Amazon Web Services (AWS) ofrece un servicio gestionado de Prometheus llamado AMP. AMP simplifica la implementación y el mantenimiento de Prometheus en AWS, lo que te permite recopilar, consultar y visualizar métricas de forma escalable y sin preocuparte por la infraestructura subyacente.

Prometheus en Azure Monitor: Microsoft Azure ofrece integración con Prometheus a través de Azure Monitor. Puedes configurar la recopilación de métricas de Prometheus en tus aplicaciones y servicios desplegados en Azure, lo que te permite visualizar y analizar los datos de forma centralizada en Azure Monitor.

Cómo Usar Prometheus

Puedes descargar la versión compilada para tu sistema operativo desde la página oficial de descargas.

Una vez descargado, lo descomprimimos con el comando de linux tar – xvzf.

Antes de ejecutarlo, podemos ver el fichero de configuración prometheus.yml:

# la configuración global
global:
  scrape_interval: 15s

# Una configuración que contiene solamente un endpoint para extraer métricas
# Aquí se configura como punto de extracción el propio Prometheus
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]

En esta configuración básica de pruebas, hemos establecido el intervalo de extracción en 15 segundos. También hemos configurado un endpoint para extraer métricas que se corresponde con el mismo Prometheus, que expone sus métricas en el puerto 9090.

Ahora, podemos ejecutarlo desde su directorio con el siguiente comando, al que le especificamos el fichero de configuración que acabamos de escribir:

./prometheus --config.file=prometheus.yml

Para acceder a la interfaz web en la que podremos realizar consultas y ver las gráficas entraremos en cualquier navegador y escribiremos:

http://localhost:9090/
Interfaz Gráfica Prometheus

Si navegamos a Status -> Targets podemos ver que tenemos un endpoint configurado hacia el propio Prometheus, la duración del último escaneado y su frecuencia. Si existiera algún error también podríamos ver aquí el mensaje.

Interfaz Gráfica Prometheus Targets

Siguientes Pasos y Formación

A continuación, te recomiendo dos cursos online para explorar y aprender a usar Prometheus en profundidad disponibles en la plataforma Udemy:

Curso de Monitorización y Alertas

Monitorización y Alertas con Prometheus

Aprende a monitorizar tus aplicaciones e infraestructura desde cero con este curso de devops. Te enseñará a instalar y configurar Prometheus en un entorno profesional, visualizar datos en Grafana y configurar alertas.

Curso práctico completo de Monitorización y Alertas

Prometheus | Curso práctico completo de Monitorización y Alertas

Este curso contiene más de 10 horas de vídeo y te permitirá aprender Prometheus y Grafana a un nivel avanzado con ejemplos prácticos. Es un buen complemento al curso anterior que incluye ejemplos en cloud y diferentes integraciones.

Preguntas Frecuentes Prometheus – FAQ

¿Qué se puede monitorizar con Prometheus?

Prometheus puede almacenar y monitorizar diversas métricas. Frecuentemente se almacenan el uso de CPU o de memoria, el número de conexiones, el número de peticiones o la cantidad de sesiones activas en un servidor.

¿Dónde almacena Prometheus las métricas y logs?

Prometheus usa una base de datos interna orientada a series temporales en la que almacena las métricas en tiempo real. Almacena los índices en LevelDB y organiza los datos en particiones de un tamaño fijo.

¿Cómo funciona el exporter de Prometheus?

Los exporters ayudan a exportar métricas de sistemas externos para usar en Prometheus. Estos sistemas pueden ser bases de datos o diferentes aplicaciones. Algunos de estos exporters son mantenidos en el repositorio oficial y otros los ofrecen organizaciones externas, a las que les interesa disponer de esta integración.


A continuación, el vídeo-resumen. ¡No te lo pierdas!


Deja una respuesta