- Prometheus recopila y almacena métricas en tiempo real para sistemas distribuidos, ideal para cloud y microservicios
- Su arquitectura modular y modelo de extracción lo hacen eficiente, escalable y fácil de integrar en entornos como Kubernetes
- Herramientas como PromQL y Grafana potencian su uso, facilitando consultas avanzadas y visualización de métricas
- Dispone de múltiples componentes como el servidor, exporters, Alertmanager y Pushgateway para cobertura completa en monitoreo
Si alguna vez has trabajado en entornos IT modernos, seguramente te habrás topado con conceptos como microservicios, Kubernetes o sistemas distribuidos. Todo este ecosistema viene acompañado de un nuevo reto: ¿cómo saber si todo está funcionando bien? Ahí entra en escena una herramienta poderosa, ágil y muy popular: Prometheus.
Prometheus ha emergido como una solución referente en el mundo del monitoreo gracias a su diseño orientado a recolectar, almacenar y consultar métricas de manera eficiente. Su integración con herramientas como Grafana y su apoyo de la Cloud Native Computing Foundation lo han convertido en esencial para muchos equipos DevOps. Acompáñanos en este recorrido donde profundizamos en detalle qué es Prometheus, cómo funciona, qué arquitectura tiene, qué ventajas ofrece y cómo empezar a usarlo.
¿Qué es Prometheus?
Prometheus es una herramienta open source de monitorización y generación de alertas, orientada a métricas numéricas en series temporales. Desarrollado inicialmente por SoundCloud y ahora mantenido por la Cloud Native Computing Foundation, se ha consolidado como uno de los pilares del stack de observabilidad moderna junto a Grafana y otros sistemas de logs y trazas.
Registrado en lenguaje Go, Prometheus funciona bajo un modelo pull, lo que significa que realiza consultas o scrapes periódicos a los servicios para extraer la información que estos exponen, en lugar de esperar a que esos servicios se la envíen. Así, el servidor de Prometheus permanece en el control del proceso de recolección.
Su estructura está diseñada para recopilar métricas detalladas de fuentes como servidores, contenedores, aplicaciones web o microservicios, y almacenarlas como series temporales con etiquetas clave-valor. Esto permite obtener una visión precisa de cómo se comporta un componente en particular a través del tiempo.
Componentes principales de Prometheus
El sistema Prometheus está compuesto por varios bloques que, en conjunto, ofrecen una supervisión completa y escalable. Estos son los principales:
- Servidor de Prometheus: el corazón del sistema. Hace scraping a los endpoints, guarda las métricas y permite hacer consultas con PromQL.
- Exporters: son servicios que exponen métricas en el formato que Prometheus espera. Existen para sistemas como Node (Linux), MySQL, NGINX, Docker, etc.
- Alertmanager: gestiona las alertas generadas a partir de reglas definidas. Permite agrupar, silenciar, reintentar notificaciones y enviarlas por correo, Slack, etc.
- Pushgateway: diseñado para trabajos efímeros que no pueden ser escrapeados, este componente empuja métricas temporalmente al servidor.
- Client libraries: bibliotecas para lenguajes como Python, Go, Java o Ruby que permiten instrumentar aplicaciones y generar métricas propias.
- Consolas y Web UI: interfaz web propia con visualización básica y entorno para ejecutar consultas PromQL.
Funcionamiento: el modelo de extracción de Prometheus
Una de las características más diferenciadoras de Prometheus frente a otras soluciones es su modelo de extracción (pull). En lugar de recibir métricas desde los servicios mediante push, Prometheus las solicita periódicamente. Esto proporciona claras ventajas como la facilidad para detectar servicios caídos (si un objetivo no responde, Prometheus lo reporta como down), y la independencia de los servicios instrumentados.
Este modelo consta de tres pasos esenciales:
- Exposición de métricas: las aplicaciones o sus exporters deben ofrecer un endpoint HTTP con datos en formato de Prometheus.
- Scraping del servidor: Prometheus realiza peticiones regulares a estos endpoints, y recopila todos los datos que se exponen.
- Almacenamiento y consulta: se guardan las métricas en una base de datos de series temporales, listas para ser consultadas vía PromQL.
Esta metodología es eficiente, poco intrusiva y muy fácil de escalar, ya que no obliga a los microservicios o apps a tener lógica de reintentos o control de errores para el envío de métricas.
Series temporales y PromQL
Las métricas en Prometheus se almacenan como series temporales, que registran valores asociados a una etiqueta y un timestamp concreto. Cada métrica puede llevar etiquetas adicionales como el nombre del host, el entorno o la instancia del servicio, facilitando filtrado y agregaciones.
Para consultar estas métricas, Prometheus dispone de su propio lenguaje: PromQL (Prometheus Query Language). Es robusto, expresivo y diseñado para explorar datos temporales. Algunas operaciones típicas que permite realizar son:
- Filtrado de métricas específicas
- Aplicación de funciones matemáticas
- Agregaciones por etiquetas
- Predicción y análisis de tendencias
- Usos combinados para crear alertas
Algunos ejemplos de sintaxis serían:
up == 1: muestra las instancias activasrate(http_requests_total[5m]): muestra la tasa de crecimiento de las peticiones HTTP en 5 minutos.sum by(job) (http_requests_total): agrega las peticiones por tipo de trabajo
Visualización con Grafana
Por sí solo, Prometheus ofrece una interfaz básica. Pero cuando se combina con Grafana, se convierte en una solución de monitoreo visual realmente potente. Grafana permite conectar Prometheus como fuente de datos y crear dashboards personalizables con gráficos, KPIs, alertas visuales y mucho más.
Con Grafana, es posible crear paneles para:
- Consultar métricas en tiempo real
- Comparar parámetros entre distintos servicios
- Supervisar entornos completos como Kubernetes
- Detectar errores críticos y recibir alertas
Descubrimiento de servicios
Para facilitar la monitorización en entornos dinámicos como contenedores o clústeres, Prometheus cuenta con mecanismos automáticos de descubrimiento. Así no es necesario definir manualmente cada endpoint, especialmente útil en Kubernetes.
Las formas de descubrimiento incluyen:
- API de Kubernetes: detecta nodos, pods y servicios Exporters en tiempo real.
- Configuración estática: permite definir direcciones manualmente al principio.
- Archivos Prometheus: revisa archivos en busca de objetivos configurados.
Alertas con Alertmanager
Con Prometheus es posible establecer reglas de alerta basadas en consultas PromQL. Estas reglas permiten definir umbrales o condiciones de falla, por ejemplo: si el uso de CPU supera un valor durante un tiempo determinado.
Las alertas se pasan a Alertmanager, que:
- Clasifica y agrupa las alertas
- Define políticas de reintento
- Envía notificaciones vía correo, Slack, webhooks u otros destinos
- Permite silencio programado (p. ej. en tareas de mantenimiento)
Además, ofrece alta disponibilidad gracias a la replicación entre instancias.
Pushgateway para tareas efímeras
En ocasiones, algunos procesos de corta duración no están activos durante el scraping, por lo que no pueden ser monitorizados de forma tradicional. Pushgateway resuelve ese problema permitiendo a esos trabajos empujar sus propias métricas a un endpoint temporal, que es scrappeado luego por el servidor principal.
Federación de Prometheus
Cuando un entorno cuenta con múltiples instancias de Prometheus, como en arquitecturas distribuidas a nivel global, se pueden unificar todas las métricas mediante la federación. Esto permite que una instancia central consolide, consulte o almacene datos agregados de varias Prometheus remotas, creando así una fuente única con información centralizada.
Integración con Kubernetes
Prometheus tiene integración nativa con Kubernetes, lo que lo convierte en una de las herramientas estrella para la monitorización de clústeres de contenedores. Detecta automáticamente pods y exportadores dentro del clúster, y permite crear paneles en Grafana muy detallados sobre el estado de los contenedores, nodos, redes y volumen de carga.
Además, Azure Monitor ofrece un servicio administrado para Prometheus que facilita el despliegue sin necesidad de mantener tu propio servidor.
Primeros pasos para usar Prometheus
Para comenzar con Prometheus, los pasos generales serían:
- Instalar Prometheus: descargar el binario desde la web oficial y extraerlo en un directorio en tu sistema.
- Editar el archivo prometheus.yml: aquí se definen los endpoints a monitorizar (targets), las reglas y otras configuraciones básicas.
- Iniciar el servidor: ejecuta
./prometheusy accede a la interfaz navegando ahttp://localhost:9090. - Agregar Exporters: instala y configura los exporters necesarios según los sistemas a monitorear.
- Visualiza métricas: puedes consultar las métricas en la interfaz o en Grafana si decides integrarlo.
Prometheus y su integración con la nube
Además de su implementación tradicional, Prometheus puede integrarse con soluciones cloud como Azure Monitor o Google Cloud. Por ejemplo:
- Azure: mediante el servicio administrado Azure Monitor para Prometheus, que permite recopilar métricas desde Kubernetes (AKS) o Prometheus autogestionado usando remote_write.
- Google Cloud: también ofrece soporte completo para Prometheus, incluyendo dashboards automáticos para Kubernetes engine.
Estas integraciones permiten extender las capacidades de Prometheus y reducir la necesidad de mantener la infraestructura completa por parte del usuario.
Prometheus es mucho más que una simple herramienta de métricas. Su capacidad para adaptarse a cualquier entorno, su modelo open source, su potencia de consulta a través de PromQL y su ecosistema con herramientas como Grafana, lo convierten en una solución de primera línea para la monitorización de aplicaciones, servidores y contenedores. Gracias a sus componentes modulares y su sencilla puesta en marcha, es ideal tanto para quienes están dando sus primeros pasos como para grandes empresas que requieren soluciones de observabilidad robustas y escalables.

Expertos en software, desarrollo y aplicación en industria y hogar. Nos encanta sacar todo el potencial de cualquier software, programa, app, herramienta y sistema operativo del mercado.
