eco Principiante Tutorial/Cómo hacer

Monitorización de VPS: Prometheus

calendar_month Jan 26, 2026 schedule 15 min de lectura visibility 70 vistas
Мониторинг VPS: Prometheus, Grafana и Alertmanager на практике
info

Esta guía puede contener enlaces de afiliados. Ganamos una comisión sin costo adicional para ti si realizas una compra a través de nuestros enlaces.

¿Necesitas un VPS para esta guía?

Recomendamos Vultr para principiantes. Obtén $100 de crédito gratis.

Prueba Vultr Gratis arrow_forward

Monitorización de VPS: Prometheus, Grafana y Alertmanager en la práctica en 2026

TL;DR

  • La monitorización integral de VPS utilizando la combinación de Prometheus, Grafana y Alertmanager es el estándar de la industria en 2026, proporcionando una comprensión profunda del estado del servidor y una respuesta automatizada.
  • Prometheus recopila métricas utilizando un modelo pull y el potente lenguaje de consulta PromQL, permitiendo agregar y analizar datos con gran detalle.
  • Grafana transforma las métricas en bruto en paneles visuales claros, haciendo que la información sea accesible y comprensible para todos los miembros del equipo, desde ingenieros hasta fundadores.
  • Alertmanager gestiona centralizadamente las alertas, asegurando su agrupación, deduplicación, supresión y enrutamiento a través de varios canales (Slack, Telegram, correo electrónico, PagerDuty).
  • Para una monitorización eficaz de VPS, es fundamental rastrear la CPU, la RAM, la E/S del disco, la actividad de la red y las métricas específicas de las aplicaciones, utilizando Node Exporter y otros exportadores.
  • La optimización de costos se logra mediante la elección del hosting adecuado, el almacenamiento eficiente de datos de Prometheus y la automatización del despliegue, sin escatimar en la tolerancia a fallos del sistema de monitorización.
  • La prueba regular de alertas, la actualización de paneles y una comprensión profunda de PromQL son factores clave para el éxito en el funcionamiento estable de los sistemas de producción.

1. Introducción: Por qué la monitorización de VPS es crítica en 2026

Esquema: 1. Introducción: Por qué la monitorización de VPS es crítica en 2026
Esquema: 1. Introducción: Por qué la monitorización de VPS es crítica en 2026

En el mundo de la tecnología de la información en rápida evolución, donde el tiempo de inactividad del servidor se mide no solo en dinero perdido, sino también en riesgos para la reputación, la monitorización de calidad de un Servidor Privado Virtual (VPS) se convierte no solo en una herramienta deseable, sino absolutamente necesaria. Para 2026, cuando la arquitectura de microservicios y la computación en la nube se han convertido en un estándar omnipresente, y las expectativas de los usuarios sobre la disponibilidad del servicio se han acercado al 100%, ignorar la monitorización es equivalente a pilotar un avión a ciegas. Esto es especialmente relevante para startups y proyectos SaaS, donde cada hora de funcionamiento del servicio afecta directamente las métricas de negocio y la lealtad del cliente.

Este artículo está dirigido a una amplia gama de especialistas técnicos: ingenieros DevOps que construyen y mantienen la infraestructura; desarrolladores Backend en Python, Node.js, Go, PHP, que buscan comprender el comportamiento de sus aplicaciones en producción; fundadores de proyectos SaaS, para quienes la estabilidad del servicio es clave para la supervivencia; administradores de sistemas, responsables del funcionamiento ininterrumpido de los servidores; y directores técnicos de startups, que toman decisiones estratégicas sobre la pila tecnológica. Analizaremos cómo la combinación de tres potentes herramientas de código abierto —Prometheus para la recopilación de métricas, Grafana para su visualización y Alertmanager para la gestión de alertas— permite crear un sistema de monitorización fiable, escalable y rentable para cualquier VPS.

No le venderemos "píldoras mágicas" ni "metodologías revolucionarias". En cambio, nos centraremos en los aspectos prácticos: cómo instalar, configurar, mantener y optimizar este sistema, evitando errores comunes y basándonos en la experiencia real. Aprenderá qué métricas son realmente importantes, cómo interpretarlas correctamente, cómo configurar alertas inteligentes que no generen spam y cómo utilizar los datos de monitorización para tomar decisiones informadas, ya sea para escalar la infraestructura u optimizar el código. Al final del artículo, tendrá una comprensión completa de cómo construir y mantener un sistema de monitorización que le servirá fielmente en las condiciones cambiantes de 2026.

2. Criterios clave para una monitorización eficaz de VPS

Esquema: 2. Criterios clave para una monitorización eficaz de VPS
Esquema: 2. Criterios clave para una monitorización eficaz de VPS

La monitorización eficaz de un VPS no es simplemente recopilar cualquier dato disponible. Es un proceso dirigido, centrado en métricas clave que afectan directamente el rendimiento, la estabilidad y la disponibilidad de sus servicios. En 2026, cuando los recursos de VPS se han vuelto más flexibles y potentes, pero también han aumentado las exigencias sobre su utilización, comprender estos criterios se vuelve aún más importante.

2.1. Utilización de la Unidad Central de Procesamiento (CPU Utilization)

Las métricas de CPU son lo primero que se observa al diagnosticar problemas. Una alta utilización de CPU puede indicar procesos que consumen muchos recursos, ciclos infinitos, código ineficiente o ataques DDoS. Es importante monitorear no solo la carga general (node_cpu_seconds_total con varios modos: idle, user, system, iowait, steal), sino también el Load Average (node_load1, node_load5, node_load15) — el número promedio de procesos esperando ejecución.

  • idle: Tiempo en que la CPU está inactiva. Un valor bajo indica una alta carga.
  • user: Tiempo en que la CPU ejecuta procesos de usuario.
  • system: Tiempo en que la CPU ejecuta procesos del sistema (kernel).
  • iowait: Tiempo en que la CPU espera la finalización de operaciones de entrada/salida. Un iowait alto a menudo señala problemas con el disco o la red, no con la propia CPU.
  • steal: (para máquinas virtuales) Tiempo en que la máquina virtual espera la asignación de CPU real por parte del hipervisor. Un steal alto puede indicar una sobrecarga de la máquina host.

Es necesario evaluar no solo los valores pico, sino también las tendencias. Por ejemplo, un load average en constante aumento con un user y system estables puede indicar un problema con bloqueos o falta de recursos.

2.2. Uso de la Memoria de Acceso Aleatorio (RAM Usage)

La falta de memoria RAM lleva al uso de swap, lo que ralentiza significativamente el servidor, ya que las operaciones de disco son mucho más lentas que las operaciones con RAM. La monitorización de RAM incluye: memoria total, memoria libre, memoria utilizada, búferes y caché (node_memory_MemTotal_bytes, node_memory_MemFree_bytes, node_memory_Buffers_bytes, node_memory_Cached_bytes, node_memory_SwapTotal_bytes, node_memory_SwapFree_bytes). Es importante recordar que Linux utiliza activamente la memoria libre para el almacenamiento en caché, por lo que un valor bajo de MemFree no siempre significa un problema si Buffers y Cached son altos.

Indicadores clave: porcentaje de RAM utilizada sin contar la caché, porcentaje de swap utilizado. El uso constante de swap es una señal clara de que el VPS necesita más RAM o una optimización del consumo de memoria por parte de las aplicaciones.

2.3. Entrada/Salida de Disco (Disk I/O)

El subsistema de disco a menudo se convierte en un cuello de botella, especialmente para bases de datos, almacenamientos de archivos o aplicaciones con escritura/lectura intensiva. Métricas a seguir: velocidad de lectura/escritura (node_disk_read_bytes_total, node_disk_written_bytes_total), número de operaciones de lectura/escritura por segundo (IOPS), tiempo de espera (latency), utilización del disco (node_disk_io_time_seconds_total). Un iowait alto de CPU, como ya se mencionó, a menudo se correlaciona con problemas de E/S de disco.

Es importante distinguir entre velocidad (MB/s) y número de operaciones (IOPS), ya que para diferentes tareas son importantes diferentes indicadores. Por ejemplo, para una base de datos son críticos los IOPS, para un servidor de archivos, la velocidad.

2.4. Actividad de Red (Network Activity)

La monitorización de red incluye el seguimiento del tráfico entrante y saliente (node_network_receive_bytes_total, node_network_transmit_bytes_total), el número de paquetes por segundo (PPS), errores y paquetes descartados (node_network_receive_errs_total, node_network_drop_total). Los picos de tráfico pueden ser normales (por ejemplo, durante copias de seguridad o grandes descargas), pero un tráfico saliente anormalmente alto sin razones visibles puede indicar un compromiso del servidor o un ataque DDoS desde su VPS.

Un bajo ancho de banda o un alto porcentaje de errores pueden señalar problemas a nivel de la interfaz de red, el cable, el conmutador o incluso por parte del proveedor de VPS. En 2026, cuando la mayoría de los VPS se suministran con interfaces de red de alta velocidad (10 Gbit/s o superior), es importante asegurarse de que su aplicación utilice este recurso de manera eficiente.

2.5. Procesos en ejecución y su estado (Processes and State)

El número de procesos en ejecución (node_procs_running, node_procs_total) y su estado (sleeping, zombie, uninterruptible) también son indicadores importantes. Un número anormalmente grande de procesos, especialmente procesos zombie (node_procs_zombie), puede indicar problemas con la aplicación o el sistema operativo. La monitorización de procesos específicos, como su servidor web (Nginx, Apache), base de datos (PostgreSQL, MySQL) o aplicación backend, en cuanto a su disponibilidad y consumo de recursos (CPU, RAM) es críticamente importante.

Para un análisis más profundo de los procesos, se pueden utilizar herramientas como cAdvisor para contenedores o exportadores especializados que proporcionan métricas por cada proceso o grupo de procesos.

2.6. Disponibilidad y rendimiento de las aplicaciones (Application Performance)

La monitorización de la infraestructura sin la monitorización de las aplicaciones es una medida a medias. Sus aplicaciones son lo que aporta valor a los usuarios. Las métricas de las aplicaciones pueden incluir: número de solicitudes por segundo (RPS), tiempo de respuesta (latency), número de errores (HTTP 5xx), número de usuarios activos, estado de las colas de mensajes, número de conexiones abiertas a la base de datos. Estas métricas a menudo se recopilan utilizando exportadores especiales (por ejemplo, Nginx exporter, MySQL exporter, Redis exporter) o directamente desde el código de la aplicación utilizando bibliotecas cliente de Prometheus.

En 2026, cuando los enfoques basados en API y los microservicios dominan, el seguimiento de las transacciones de extremo a extremo y los retrasos entre servicios se vuelve clave para identificar rápidamente la fuente del problema.

2.7. Espacio libre en disco (Disk Space)

El desbordamiento del disco es una de las causas más frecuentes de fallos de servicio. La monitorización del espacio libre (node_filesystem_avail_bytes, node_filesystem_size_bytes) en todos los sistemas de archivos críticos (/, /var, /var/log, /home, /opt) debe configurarse con alertas en varios niveles (por ejemplo, advertencia al 80% de ocupación, crítica al 95%). Esto permite reaccionar con antelación, eliminando registros antiguos, cachés o escalando el espacio en disco.

2.8. Estado de los servicios de red y puertos (Network Services Status)

La verificación de la disponibilidad de los servicios de red clave (HTTP, HTTPS, SSH, PostgreSQL, Redis, etc.) mediante Blackbox Exporter permite asegurar que no solo el VPS funciona, sino que las aplicaciones en él responden. Esta es una vista externa de su servicio, que simula una solicitud de un usuario u otro servicio. Es importante monitorear no solo la disponibilidad (arriba/abajo), sino también el tiempo de respuesta (latencia) de estos servicios.

Cada uno de estos criterios es importante, y su análisis integral permite formar una imagen completa de la salud de su VPS y las aplicaciones que se ejecutan en él. El uso de Prometheus y sus exportadores hace que la recopilación de estas métricas sea un proceso relativamente simple y unificado.

3. Tabla comparativa de soluciones de monitorización

Esquema: 3. Tabla comparativa de soluciones de monitorización
Esquema: 3. Tabla comparativa de soluciones de monitorización

La elección de un sistema de monitorización es una decisión estratégica que depende de muchos factores: el tamaño del equipo, el presupuesto, la complejidad de la infraestructura, los requisitos de escalabilidad y flexibilidad. En 2026, el mercado ofrece una multitud de soluciones, desde plataformas SaaS totalmente gestionadas hasta potentes herramientas de código abierto. Veamos cómo Prometheus, Grafana y Alertmanager (pila PGA) se comparan con alternativas populares como Zabbix y Datadog.

Criterio Prometheus + Grafana + Alertmanager (pila PGA) Zabbix Datadog (SaaS) Netdata (ligero)
Tipo de solución Autoalojado, Código Abierto Autoalojado, Código Abierto SaaS (en la nube) Autoalojado, Código Abierto
Modelo de recopilación de métricas Modelo pull (Prometheus consulta a los exportadores) Basado en agente (el agente Zabbix envía datos) Basado en agente (el agente Datadog envía datos) Basado en agente (el agente local recopila y entrega métricas por HTTP)
Flexibilidad de configuración Alta. Amplia selección de exportadores, potente PromQL, configuración flexible de alertas en Alertmanager. Media. Muchos plantillas, pero las métricas personalizadas requieren una configuración más compleja. Alta. Muchas integraciones "listas para usar", UI conveniente para la configuración. Media. Muchos colectores integrados, pero las métricas personalizadas requieren escribir plugins.
Escalabilidad Buena. Escalado horizontal a través de Prometheus federado, Thanos/Cortex para almacenamiento a largo plazo. Buena. Arquitectura distribuida, proxies. Excelente. Plataforma en la nube, escalabilidad prácticamente ilimitada. Limitada. Diseñado para monitorizar un solo host, no un clúster.
Complejidad de despliegue Media. Requiere comprensión de los componentes, Docker Compose o Kubernetes lo simplifica. Media. Requiere configuración de servidor, base de datos, agentes. Baja. Instalación del agente y configuración en la UI. Muy baja. Instalación con un solo comando.
Costo (2026, ejemplo) Bajo (costo de VPS para hosting, desde $10-30/mes por un servidor pequeño + tiempo de ingeniería). Bajo (costo de VPS para hosting, desde $10-30/mes por un servidor pequeño + tiempo de ingeniería). Alto (desde $15-20/host/mes + métricas, logs, APM. Para 10 VPS puede ser $300-500+/mes). Bajo (costo de VPS para hosting, requisitos mínimos de recursos).
Almacenamiento a largo plazo Limitado por defecto (almacenamiento local). Requiere integración con Thanos/Cortex/VictoriaMetrics para escalabilidad y almacenamiento a largo plazo. Integrado. Depende del volumen de la base de datos. Integrado, en la nube, configurable. Local, período muy corto (horas/días) en RAM, opcionalmente en disco.
Visualización Excelente (Grafana). Potentes paneles, muchos tipos de gráficos, consultas personalizadas. Buena. Gráficos integrados, mapas de red, pero menos flexible que Grafana. Excelente. UI rica, muchos widgets, paneles convenientes. Buena. Interfaz web integrada con muchos gráficos en tiempo real.
Alertas Excelente (Alertmanager). Reglas flexibles, agrupación, supresión, muchos canales. Buena. Disparadores flexibles, acciones, pero gestión de grupos menos avanzada que Alertmanager. Excelente. Alertas inteligentes, aprendizaje automático, muchos canales. Básica. Correo electrónico, Slack, pero sin lógica de agrupación avanzada.
Comunidad y soporte Comunidad Open Source activa, documentación rica, muchas soluciones listas para usar. Comunidad Open Source activa, soporte comercial. Soporte comercial, documentación extensa. Comunidad Open Source activa.
Aplicabilidad Desde pequeños VPS hasta grandes clústeres de Kubernetes. Ideal para equipos orientados a DevOps. Desde pequeños VPS hasta grandes infraestructuras corporativas. Elección tradicional para administradores de sistemas. Desde startups hasta grandes empresas. Excelente para equipos que valoran la velocidad de despliegue y la gestionabilidad. Monitorización local rápida de un solo servidor. Excelente para diagnóstico in situ.

Como se desprende de la tabla, la pila PGA ofrece una solución potente, flexible y económicamente ventajosa, especialmente para equipos dispuestos a invertir tiempo en la configuración y el mantenimiento. Su naturaleza de Código Abierto proporciona un control total sobre los datos y la infraestructura, lo cual es crítico para muchos fundadores de SaaS y CTO. Datadog gana en velocidad de despliegue y gestionabilidad, pero su costo aumenta rápidamente con la escala. Zabbix es una solución probada con el tiempo, pero su enfoque de métricas y visualización puede parecer menos moderno en comparación con Prometheus/Grafana. Netdata es una excelente herramienta para el análisis local rápido, pero no está diseñada para la monitorización centralizada de clústeres.

En el contexto de la monitorización de VPS, donde a menudo se requiere un control profundo y la optimización de recursos, la pila PGA es un equilibrio ideal entre funcionalidad, costo y flexibilidad. Permite empezar con poco y escalar a medida que el proyecto crece, manteniendo al mismo tiempo una transparencia y un control completos sobre su sistema de monitorización.

4. Revisión detallada de los componentes: Prometheus, Grafana, Alertmanager y exportadores

Esquema: 4. Revisión detallada de los componentes: Prometheus, Grafana, Alertmanager y exportadores
Esquema: 4. Revisión detallada de los componentes: Prometheus, Grafana, Alertmanager y exportadores

Para crear un sistema de monitorización de VPS completo, necesitaremos no solo el trío principal, sino también una serie de componentes auxiliares, llamados "exportadores". Cada uno de ellos cumple un papel único, recopilando y proporcionando métricas en un formato que Prometheus entiende.

4.1. Prometheus: El corazón del sistema de recopilación de métricas

Prometheus es un potente sistema de monitorización y alertas, desarrollado en SoundCloud y que se ha convertido en el estándar de facto para la monitorización de entornos en contenedores y en la nube. Su característica clave es el modelo pull: Prometheus mismo consulta (scrapes) los objetivos (exportadores) a través de HTTP, obteniendo métricas de ellos. Esto simplifica el descubrimiento de nuevos objetivos y su gestión.

Arquitectura y principio de funcionamiento: Prometheus consta de varios componentes: el servidor principal de Prometheus (recopila, almacena y consulta métricas), Pushgateway (para trabajos efímeros/por lotes), Service Discovery (para el descubrimiento automático de objetivos) y Alertmanager (para el procesamiento de alertas). Las métricas se almacenan en formato de series temporales (time series) con etiquetas (labels), lo que las hace increíblemente flexibles para consultas y agregaciones.

PromQL: El lenguaje de consulta de Prometheus (PromQL) es su ventaja más potente. Permite no solo seleccionar métricas, sino también realizar agregaciones complejas, operaciones matemáticas, filtrado por etiquetas, cálculos de tasas de cambio (rate), pronósticos (predict_linear) y mucho más. Por ejemplo, la consulta sum(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) mostrará la carga promedio de CPU durante los últimos 5 minutos por cada instancia de VPS. Una comprensión profunda de PromQL es fundamental para crear paneles y reglas de alerta eficaces.

Pros: Excelente escalabilidad (a través de federated, Thanos, Cortex), lenguaje de consulta flexible, comunidad activa, gran cantidad de exportadores listos para usar, bajos gastos generales para la recopilación de métricas. Ideal para entornos dinámicos.

Contras: Almacenamiento local de métricas por defecto (requiere soluciones adicionales para el almacenamiento a largo plazo), falta de UI integrada para una visualización compleja (para esto se necesita Grafana), el modelo pull puede no ser óptimo para algunos escenarios (pero Pushgateway resuelve este problema).

Para quién es adecuado: Para ingenieros DevOps y administradores de sistemas que necesitan un control total sobre la monitorización, así como para desarrolladores backend que desean integrar métricas de sus aplicaciones. Excelente para microservicios e infraestructuras en la nube.

4.2. Grafana: Visualización de datos y creación de paneles

Grafana es una plataforma de código abierto para el análisis y la visualización interactiva de datos. Permite crear paneles hermosos e informativos utilizando datos de diversas fuentes, incluido Prometheus. Grafana no recopila métricas por sí misma, sino que solo las solicita a las fuentes de datos configuradas y las muestra de una manera fácil de usar.

Capacidades: Soporte para múltiples fuentes de datos (Prometheus, InfluxDB, PostgreSQL, Elasticsearch, Zabbix y otros), una amplia gama de paneles (gráficos, tablas, histogramas, texto, indicadores de estado), variables de plantilla (templating) para cambiar dinámicamente los paneles, la capacidad de configurar alertas (aunque para la pila de Prometheus es mejor usar Alertmanager). En 2026, Grafana continúa evolucionando activamente, ofreciendo nuevos tipos de visualizaciones, rendimiento mejorado y capacidades de colaboración.

Pros: Flexibilidad de visualización excepcional, soporte PromQL, amplia comunidad, muchos paneles listos para usar (Grafana Labs Dashboard Library), capacidad de compartir y gestionar permisos de acceso.

Contras: No es un sistema de recopilación de métricas, requiere una configuración separada de las fuentes de datos. Puede ser excesivo para tareas muy simples donde una línea de comandos es suficiente.

Para quién es adecuado: Para cualquiera que quiera ver visualmente el estado de su infraestructura y aplicaciones. Desde CTOs que necesitan métricas de alto nivel hasta desarrolladores que valoran los detalles de rendimiento. Los fundadores de SaaS pueden usar Grafana para rastrear métricas clave de negocio.

4.3. Alertmanager: Gestión inteligente de alertas

Alertmanager es un componente de la pila de Prometheus que procesa las alertas enviadas por el servidor de Prometheus. Su tarea principal es la deduplicación, agrupación, enrutamiento y supresión de alertas, para que su equipo reciba solo notificaciones significativas, y no una avalancha de mensajes repetitivos.

Funciones clave:

  • Agrupación: Combina alertas similares en una sola notificación para evitar el spam. Por ejemplo, si 10 VPS superan simultáneamente el umbral de CPU, Alertmanager enviará un solo mensaje sobre el problema del clúster, en lugar de 10 individuales.
  • Supresión (Inhibition): Permite suprimir alertas si ya hay una alerta más "pesada" activa. Por ejemplo, si todo el servidor se ha caído, no tiene sentido recibir alertas sobre una alta carga de CPU en ese servidor.
  • Silenciamiento (Silences): Desactivación temporal de alertas para objetivos específicos o conjuntos de etiquetas, útil durante trabajos planificados o para ignorar problemas temporales conocidos.
  • Enrutamiento: Envía alertas a diferentes canales según sus etiquetas. Por ejemplo, alertas críticas a PagerDuty, advertencias a un canal de Slack de DevOps, e informativas a un correo electrónico.

Pros: Flexibilidad excepcional en la configuración de reglas de alerta, prevención de la "fatiga de alertas", soporte para múltiples integraciones (Slack, Telegram, correo electrónico, PagerDuty, VictorOps, etc.), capacidad de crear cadenas de alertas complejas.

Contras: Requiere una configuración cuidadosa de las reglas para un funcionamiento óptimo, puede ser complejo para principiantes.

Para quién es adecuado: Para cualquiera que no quiera ser inundado con alertas innecesarias. Es especialmente crítico para equipos que mantienen sistemas grandes y complejos, donde una alerta oportuna y relevante afecta directamente el tiempo de recuperación del servicio (MTTR).

4.4. Exportadores: Puentes a las métricas

Los exportadores son pequeñas aplicaciones que recopilan métricas de diversas fuentes (sistema operativo, bases de datos, servidores web, aplicaciones) y las proporcionan en formato Prometheus (a través de HTTP en el puerto /metrics). Sin los exportadores, Prometheus no podría recopilar datos.

  • Node Exporter: El exportador más importante para la monitorización de VPS. Recopila métricas del sistema operativo Linux: CPU, RAM, E/S de disco, actividad de red, Load Average, sistemas de archivos, estadísticas de procesos y mucho más. Se instala en cada VPS monitorizado.
  • cAdvisor: Para la monitorización de contenedores Docker. Recopila métricas de uso de recursos (CPU, RAM, red, disco) para cada contenedor que se ejecuta en el host.
  • Blackbox Exporter: Para la monitorización externa de la disponibilidad de servicios. Puede verificar puntos finales HTTP/HTTPS, puertos TCP, realizar pings ICMP y consultas DNS. Permite monitorizar la disponibilidad de su VPS y las aplicaciones en él desde la perspectiva del mundo exterior.
  • Pushgateway: No es exactamente un exportador, pero es un componente importante para recopilar métricas de tareas de corta duración (efímeras) o por lotes que no pueden ser consultadas por Prometheus. Las tareas envían sus métricas a Pushgateway, y Prometheus luego consulta a Pushgateway.
  • Exportadores especializados: Existe una gran cantidad de exportadores para aplicaciones y servicios específicos: Nginx exporter, MySQL exporter, PostgreSQL exporter, Redis exporter, MongoDB exporter, RabbitMQ exporter y muchos otros. Permiten obtener información profunda sobre el funcionamiento de sus aplicaciones.

La elección y la configuración correcta de los exportadores determinan la exhaustividad y el detalle de las métricas recopiladas, lo que afecta directamente la eficacia de todo el sistema de monitorización.

5. Consejos prácticos e instrucciones paso a paso para el despliegue

Esquema: 5. Consejos prácticos e instrucciones paso a paso para el despliegue
Esquema: 5. Consejos prácticos e instrucciones paso a paso para el despliegue

El despliegue de la pila de Prometheus, Grafana y Alertmanager en un VPS puede parecer complejo, pero con el enfoque correcto y el uso de Docker Compose, este proceso se simplifica significativamente. Consideraremos la instalación de todos los componentes en un solo VPS, lo cual es un escenario típico para proyectos pequeños y medianos.

5.1. Preparación del VPS

Antes de comenzar la instalación, asegúrese de que su VPS cumpla con los requisitos mínimos: 2 núcleos de CPU, 4 GB de RAM y 50-100 GB de SSD para Prometheus (dependiendo del volumen de métricas almacenadas). Instale Docker y Docker Compose.


# Обновляем систему
sudo apt update && sudo apt upgrade -y

# Устанавливаем Docker
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Добавляем текущего пользователя в группу docker для работы без sudo
sudo usermod -aG docker $USER
# Выйдите и войдите заново или выполните: newgrp docker

# Устанавливаем Docker Compose (актуальная версия на 2026 год, проверьте на сайте Docker)
# Замените 'v2.x.x' на актуальную версию
sudo mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
sudo chmod +x ~/.docker/cli-plugins/docker-compose
# Или для более старых версий (v1.x):
# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose

# Проверяем установки
docker --version
docker compose version
    

5.2. Estructura del proyecto y archivos de configuración

Crearemos un directorio para el proyecto y los subdirectorios necesarios:


mkdir -p monitoring/{prometheus,grafana,alertmanager}
cd monitoring
    

5.2.1. Configuración de Prometheus (prometheus/prometheus.yml)

Este archivo define qué objetivos debe consultar Prometheus, cuánto tiempo debe almacenar los datos y qué reglas de alerta debe usar.


# prometheus/prometheus.yml
global:
  scrape_interval:     15s # Как часто Prometheus будет опрашивать цели
  evaluation_interval: 15s # Как часто Prometheus будет проверять правила оповещений

# Настройка Alertmanager
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - alertmanager:9093 # Имя сервиса и порт Alertmanager в Docker Compose

# Правила оповещений
rule_files:
  - "/etc/prometheus/alert.rules.yml" # Путь к файлу с правилами оповещений

# Цели для сбора метрик
scrape_configs:
  # Мониторинг самого Prometheus
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  # Мониторинг Node Exporter (на этом же VPS)
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100'] # Порт Node Exporter

  # Мониторинг других VPS (пример)
  # - job_name: 'remote_vps_node_exporter'
  #   static_configs:
  #     - targets: ['your_remote_vps_ip:9100'] # Замените на IP удаленного VPS
  #       labels:
  #         environment: production
  #         datacenter: fra1
    

5.2.2. Reglas de alerta de Prometheus (prometheus/alert.rules.yml)

Aquí se definen las condiciones bajo las cuales Prometheus debe generar una alerta y enviarla a Alertmanager.


# prometheus/alert.rules.yml
groups:
- name: node_alerts
  rules:
  - alert: HighCPUUsage
    expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Высокая загрузка CPU на {{ $labels.instance }}"
      description: "Загрузка CPU на {{ $labels.instance }} превышает 85% более 5 минут. Текущее значение: {{ $value | humanize }}%."

  - alert: LowDiskSpace
    expr: node_filesystem_avail_bytes{fstype="ext4",mountpoint="/"} / node_filesystem_size_bytes{fstype="ext4",mountpoint="/"} * 100 < 10
    for: 2m
    labels:
      severity: critical
    annotations:
      summary: "Мало места на диске на {{ $labels.instance }}"
      description: "Осталось менее 10% свободного места на диске {{ $labels.mountpoint }} на {{ $labels.instance }}. Текущее значение: {{ $value | humanize }}%."

  - alert: HighMemoryUsage
    expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 > 90
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Высокое потребление памяти на {{ $labels.instance }}"
      description: "Использование RAM на {{ $labels.instance }} превышает 90% более 5 минут. Текущее значение: {{ $value | humanize }}%."

  - alert: ServerDown
    expr: up == 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "Сервер {{ $labels.instance }} недоступен"
      description: "Цель {{ $labels.instance }} недоступна для Prometheus более 1 минуты."
    

5.2.3. Configuración de Alertmanager (alertmanager/alertmanager.yml)

Este archivo define dónde y cómo Alertmanager debe enviar las alertas.


# alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m # Время, в течение которого алерт считается "активным" после исчезновения

route:
  group_by: ['alertname', 'instance'] # Группируем оповещения по имени алерта и инстанции
  group_wait: 30s # Ждем 30 секунд, прежде чем отправить первое оповещение из группы
  group_interval: 5m # Интервал между повторными оповещениями для той же группы
  repeat_interval: 4h # Интервал повтора оповещений, если проблема не решена

  # Дефолтный ресивер для всех алертов
  receiver: 'default-receiver'

  routes:
  # Пример маршрутизации для критических алертов в PagerDuty
  - match:
      severity: 'critical'
    receiver: 'pagerduty-receiver'
    continue: true # Продолжаем обработку другими роутами

  # Пример маршрутизации для warning алертов в Slack
  - match:
      severity: 'warning'
    receiver: 'slack-receiver'

receivers:
  - name: 'default-receiver'
    # Fallback, если ни один другой роут не сработал. Можно настроить на почту.
    email_configs:
      - to: 'your_email@example.com' # Замените на ваш email
        from: 'alertmanager@yourdomain.com'
        smarthost: 'smtp.yourdomain.com:587' # Пример SMTP-сервера
        auth_username: 'your_smtp_username'
        auth_password: 'your_smtp_password'
        require_tls: true

  - name: 'slack-receiver'
    slack_configs:
      - channel: '#devops-alerts' # Замените на ваш Slack-канал
        api_url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX' # Замените на ваш Webhook URL
        send_resolved: true
        title: '{{ .CommonLabels.alertname }} on {{ .CommonLabels.instance }} ({{ .Status | toUpper }})'
        text: '{{ range .Alerts }}*Summary:* {{ .Annotations.summary }}\n*Description:* {{ .Annotations.description }}\n*Severity:* {{ .Labels.severity }}\n*Starts At:* {{ .StartsAt.Format "2006-01-02 15:04:05 MST" }}\n{{ end }}'

  - name: 'pagerduty-receiver'
    pagerduty_configs:
      - service_key: 'YOUR_PAGERDUTY_SERVICE_INTEGRATION_KEY' # Замените на ваш ключ PagerDuty
        severity: '{{ .CommonLabels.severity }}'
        description: '{{ .CommonLabels.alertname }} on {{ .CommonLabels.instance }} ({{ .Status | toUpper }})'
    

5.2.4. Configuración de Grafana

Para Grafana, se puede usar el archivo estándar grafana/grafana.ini, pero la mayoría de las veces las configuraciones predeterminadas o las variables de entorno en Docker Compose son suficientes. Las configuraciones principales que pueden ser necesarias son el nombre de usuario/contraseña del administrador y la fuente de datos de Prometheus.

Para guardar los datos de Grafana (paneles, usuarios), crearemos un directorio vacío grafana/data.

5.3. Archivo Docker Compose (docker-compose.yml)

Unimos todos los componentes en un solo archivo docker-compose.yml en el directorio raíz monitoring:


# docker-compose.yml
version: '3.8'

volumes:
  prometheus_data: {}
  grafana_data: {}
  alertmanager_data: {}

services:
  prometheus:
    image: prom/prometheus:v2.49.1 # Актуальная версия на 2026 год
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/alert.rules.yml:/etc/prometheus/alert.rules.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
      - '--storage.tsdb.retention.time=30d' # Хранить данные 30 дней
    restart: unless-stopped
    depends_on:
      - alertmanager

  grafana:
    image: grafana/grafana:10.3.3 # Актуальная версия на 2026 год
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=your_strong_password # ОБЯЗАТЕЛЬНО СМЕНИТЕ!
      - GF_SERVER_ROOT_URL=http://localhost:3000 # Или ваш домен/IP
    restart: unless-stopped
    depends_on:
      - prometheus

  alertmanager:
    image: prom/alertmanager:v0.27.0 # Актуальная версия на 2026 год
    container_name: alertmanager
    ports:
      - "9093:9093"
      - "9094:9094" # Для UDP
    volumes:
      - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
      - alertmanager_data:/alertmanager
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yml'
      - '--storage.path=/alertmanager'
    restart: unless-stopped

  node_exporter:
    image: prom/node-exporter:v1.7.0 # Актуальная версия на 2026 год
    container_name: node_exporter
    ports:
      - "9100:9100"
    command:
      - '--path.rootfs=/host'
    volumes:
      - /:/host:ro,rslave # Монтируем корневую ФС хоста
    network_mode: host # Используем сетевой стек хоста для доступа к метрикам
    restart: unless-stopped
    

5.4. Inicio del sistema de monitorización

Después de crear todos los archivos, inicie Docker Compose en el directorio monitoring:


docker compose up -d
    

Verifique el estado de los contenedores:


docker compose ps
    

5.5. Configuración de Grafana

1. Abra Grafana en el navegador: http://your_vps_ip:3000. Inicie sesión con el usuario admin y la contraseña your_strong_password.

2. Agregue Prometheus como fuente de datos:

  • Vaya a Configuración (engranaje a la izquierda) -> Fuentes de datos.
  • Haga clic en "Agregar fuente de datos" -> "Prometheus".
  • En el campo "URL", ingrese http://prometheus:9090 (ya que Prometheus y Grafana están en la misma red Docker, se ven entre sí por los nombres de los servicios).
  • Haga clic en "Guardar y probar". Debería aparecer un mensaje "La fuente de datos funciona".

3. Importe un panel preconfigurado para Node Exporter:

  • Vaya a Paneles (cuadrado con gráficos) -> Importar.
  • En el campo "Importar a través de grafana.com", ingrese el ID: 1860 (u otro ID actual para Node Exporter Full).
  • Seleccione Prometheus como fuente de datos y haga clic en "Importar".

Ahora debería tener un panel completo que muestre las métricas de su VPS.

5.6. Monitorización avanzada: Blackbox Exporter

Para monitorizar la disponibilidad de servicios externos o del propio VPS desde el exterior, agregue Blackbox Exporter en docker-compose.yml:


  blackbox_exporter:
    image: prom/blackbox-exporter:v0.25.0 # Актуальная версия на 2026 год
    container_name: blackbox_exporter
    ports:
      - "9115:9115"
    volumes:
      - ./blackbox/blackbox.yml:/etc/blackbox_exporter/config.yml
    command:
      - '--config.file=/etc/blackbox_exporter/config.yml'
    restart: unless-stopped
    

Cree el archivo blackbox/blackbox.yml:


# blackbox/blackbox.yml
modules:
  http_2xx:
    prober: http
    http:
      preferred_ip_protocol: "ipv4"
      no_follow_redirects: false
      tls_config:
        insecure_skip_verify: true # В продакшене лучше использовать валидные сертификаты
  icmp:
    prober: icmp
    icmp:
      preferred_ip_protocol: "ipv4"
    

Y agregue un nuevo objetivo para Blackbox Exporter en prometheus/prometheus.yml. Por ejemplo, para verificar la disponibilidad de su sitio web:


  - job_name: 'blackbox_http'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
        - 'https://your_website.com' # Замените на URL вашего сайта
        - 'http://your_vps_ip:80' # Или IP вашего VPS
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: blackbox_exporter:9115 # Адрес Blackbox Exporter
    

Después de modificar docker-compose.yml y prometheus.yml, reinicie los servicios:


docker compose up -d --no-deps prometheus blackbox_exporter
docker compose restart prometheus
    

Ahora Prometheus consultará a Blackbox Exporter, que a su vez verificará la disponibilidad de su sitio web u otros servicios. Se puede agregar una alerta, por ejemplo, alert: WebsiteDown, si probe_success == 0.

Estos pasos sientan las bases para un sistema de monitorización potente y flexible. Recuerde que este es solo un punto de partida. La configuración adicional incluirá la creación de paneles personalizados, reglas de alerta más complejas y la integración con las métricas de sus aplicaciones.

6. Errores comunes en la configuración y operación de la monitorización

Esquema: 6. Errores comunes en la configuración y operación de la monitorización
Esquema: 6. Errores comunes en la configuración y operación de la monitorización

Incluso con herramientas potentes como Prometheus, Grafana y Alertmanager, los errores en su configuración y operación pueden anular todas las ventajas. Conocer las trampas más comunes puede aumentar significativamente la eficacia de su sistema de monitorización.

6.1. Falta de monitorización del propio sistema de monitorización (Self-monitoring)

Paradójicamente, uno de los errores más frecuentes y críticos es no monitorizar la propia pila de Prometheus. Si el servidor de Prometheus cae, no se enterará del estado de sus VPS ni de la caída del propio Prometheus. Es importante configurar la monitorización de la disponibilidad de Prometheus, Grafana y Alertmanager. Prometheus, por defecto, recopila métricas sobre sí mismo (job_name: 'prometheus'). Para Alertmanager y Grafana, también se puede usar Blackbox Exporter para verificar sus puntos finales HTTP, y para Alertmanager, sus propias métricas.

Cómo evitarlo: Incluya en prometheus.yml objetivos para el propio Prometheus, Alertmanager y Blackbox Exporter. Configure alertas básicas en up == 0 para estos componentes. Considere la posibilidad de desplegar un Prometheus "vigilante" mínimo en un VPS separado o utilizar un servicio de monitorización de ping externo para alertar si el Prometheus principal no está disponible.

6.2. "Fatiga de alertas" — sobrecarga de notificaciones

Si su equipo recibe cientos de alertas al día, la mayoría de las cuales no requieren atención inmediata o son falsos positivos, esto lleva a la "fatiga de alertas". Los ingenieros comienzan a ignorar las alertas, lo que puede llevar a pasar por alto problemas realmente críticos. Esta es una de las principales razones por las que Alertmanager es tan importante.

Cómo evitarlo:

  • Configure los umbrales con cuidado: Comience con umbrales altos y redúzcalos gradualmente, basándose en el rendimiento real de sus sistemas.
  • Utilice for en Prometheus: Especifique for: 5m (u otro tiempo) para que la alerta se active solo después de que la condición se mantenga durante el período especificado. Esto filtra los picos de corta duración.
  • Utilice la agrupación y supresión en Alertmanager: Combine alertas similares, suprima las menos importantes si hay otras más críticas.
  • Separe la gravedad (severity): Defina niveles (info, warning, critical) y enrútelos a diferentes canales. "Info" puede ir a un canal de Slack, "warning" a Telegram, "critical" a PagerDuty.
  • Revise las reglas regularmente: Elimine las alertas que se activan constantemente sin un problema real.

6.3. Uso incorrecto de PromQL y consultas ineficientes

PromQL es un lenguaje potente pero complejo. Las consultas incorrectas pueden llevar a métricas inexactas, alta carga en Prometheus o incluso a su caída. Por ejemplo, usar sum() sin by() puede agregar demasiados datos, y rate() en un intervalo demasiado corto puede ser demasiado "ruidoso".

Cómo evitarlo:

  • Estudie PromQL: Dedique tiempo a comprender las funciones rate(), irate(), increase(), los operadores de agregación (sum, avg, max, min) y los operadores de coincidencia (on, group_left, group_right).
  • Pruebe las consultas: Utilice la UI de Prometheus para verificar las consultas antes de agregarlas a Grafana o a las reglas de alerta.
  • Tenga cuidado con las etiquetas: Una alta cardinalidad (demasiadas combinaciones únicas de etiquetas) puede provocar problemas de rendimiento y almacenamiento. Evite el uso de etiquetas con valores únicos, como ID de sesión o direcciones IP de clientes.

6.4. Falta de almacenamiento a largo plazo de métricas

Por defecto, Prometheus almacena las métricas localmente durante un tiempo limitado (normalmente 15-30 días). Esto puede no ser suficiente para analizar tendencias a largo plazo, análisis retrospectivos de incidentes o auditorías. Intentar almacenar datos localmente en un solo VPS durante un año o más puede provocar la falta de espacio en disco y la degradación del rendimiento.

Cómo evitarlo:

  • Utilice almacenamiento remoto: Integre Prometheus con soluciones de almacenamiento a largo plazo, como Thanos, Cortex o VictoriaMetrics. Estos sistemas permiten almacenar métricas en almacenamientos compatibles con S3 (por ejemplo, MinIO, AWS S3, Yandex Object Storage), escalar consultas y garantizar una alta disponibilidad.
  • Gestione las políticas de retención: Determine qué métricas y durante cuánto tiempo deben almacenarse. Quizás para algunas métricas sean suficientes 30 días, para otras, un año.

6.5. Documentación insuficiente y falta de Runbooks

Incluso el sistema de monitorización más perfecto es inútil si el equipo no sabe cómo usarlo o qué hacer cuando se activan las alertas. La falta de documentación sobre paneles, alertas y procedimientos de respuesta (runbooks) conduce al pánico y a una recuperación prolongada.

Cómo evitarlo:

  • Documente los paneles: Agregue descripciones a los paneles y tableros en Grafana, explicando qué muestran las métricas y qué significan los diferentes valores.
  • Cree Runbooks: Para cada alerta importante, cree un "Runbook" — una instrucción paso a paso sobre qué verificar, qué comandos ejecutar y a quién contactar cuando se active la alerta. Esto se puede integrar directamente en la descripción de la alerta en Prometheus.
  • Realice capacitaciones: Capacite regularmente a los nuevos miembros del equipo sobre cómo trabajar con el sistema de monitorización.

6.6. Ignorar la seguridad

Abrir los puertos de Prometheus, Grafana y Alertmanager a Internet sin la debida protección es una vulnerabilidad grave. A través de Grafana se puede acceder a sus métricas, y a través de Prometheus, a los datos de su infraestructura. Un Alertmanager desprotegido puede ser utilizado para spam o falsificación de alertas.

Cómo evitarlo:

  • Utilice un firewall: Restrinja el acceso a los puertos 9090 (Prometheus), 3000 (Grafana), 9093 (Alertmanager) solo a direcciones IP de confianza o a su red interna.
  • Configure un proxy inverso: Utilice Nginx o Caddy con HTTPS y autenticación básica (Basic Auth) o OAuth para acceder a Grafana y Alertmanager.
  • Utilice contraseñas seguras: Para Grafana, utilice una contraseña de administrador compleja y cámbiela regularmente.
  • Habilite TLS: Configure TLS para todos los componentes si son accesibles desde el exterior.

Al evitar estos errores comunes, podrá construir un sistema de monitorización verdaderamente fiable, útil y gestionable que ayudará a su equipo a mantener la estabilidad y el rendimiento de sus VPS y aplicaciones en 2026 y más allá.

7. Lista de verificación para la aplicación práctica del sistema de monitorización

Esta lista de verificación le ayudará a asegurarse de que su sistema de monitorización basado en Prometheus, Grafana y Alertmanager está configurado correctamente y funciona de manera eficiente. Revísela regularmente, especialmente después de cambios importantes en la infraestructura o el despliegue de nuevos servicios.

  1. Preparación del VPS:
    • [ ] Se ha asignado suficiente CPU, RAM y SSD para todos los componentes de monitorización.
    • [ ] Docker y Docker Compose (versiones actuales para 2026) están instalados.
    • [ ] Los puertos necesarios están abiertos en el firewall (9090 para Prometheus, 3000 para Grafana, 9093 para Alertmanager) o se ha configurado un proxy inverso.
  2. Instalación básica de componentes (Docker Compose):
    • [ ] Se han creado directorios para configuraciones y datos (prometheus, grafana, alertmanager).
    • [ ] El archivo docker-compose.yml está configurado con imágenes actualizadas de Prometheus, Grafana, Alertmanager, Node Exporter.
    • [ ] Los volúmenes de Docker están configurados para el almacenamiento persistente de datos (prometheus_data, grafana_data, alertmanager_data).
    • [ ] Se ha establecido una contraseña segura para el administrador de Grafana.
  3. Configuración de Prometheus (prometheus.yml):
    • [ ] scrape_interval y evaluation_interval están configurados de manera óptima (15-30 segundos).
    • [ ] alerting está configurado y la dirección de Alertmanager está especificada.
    • [ ] Se ha especificado la ruta a rule_files.
    • [ ] Se ha añadido job_name: 'prometheus' para la automonitorización.
    • [ ] Se ha añadido job_name: 'node_exporter' para la monitorización del VPS local.
    • [ ] Se ha establecido un --storage.tsdb.retention.time razonable (por ejemplo, 30-90 días).
  4. Reglas de alerta de Prometheus (alert.rules.yml):
    • [ ] Se han creado alertas básicas para CPU (HighCPUUsage), RAM (HighMemoryUsage), disco (LowDiskSpace).
    • [ ] Se ha configurado una alerta para la inaccesibilidad del servidor (ServerDown).
    • [ ] Para cada alerta, se ha especificado for (por ejemplo, 5m) para evitar falsos positivos.
    • [ ] Se ha añadido severity (critical, warning, info) para cada alerta.
    • [ ] Se han creado summary y description informativos para cada alerta.
  5. Configuración de Alertmanager (alertmanager.yml):
    • [ ] Se ha configurado route con group_by, group_wait, group_interval, repeat_interval.
    • [ ] Se han definido receiver para todos los canales necesarios (Slack, Telegram, Email, PagerDuty).
    • [ ] Se han configurado routes específicos para diferentes niveles de severity.
    • [ ] Se han verificado y probado todas las integraciones con mensajeros/servicios de alerta.
  6. Configuración de Grafana:
    • [ ] Prometheus se ha añadido como fuente de datos con la URL http://prometheus:9090.
    • [ ] Se ha importado un panel preconfigurado para Node Exporter (por ejemplo, ID 1860).
    • [ ] Se han creado o importado paneles para la monitorización de aplicaciones y otros exportadores.
    • [ ] Se han configurado los permisos de acceso para los usuarios de Grafana.
  7. Exportadores adicionales:
    • [ ] Node Exporter está instalado y configurado en cada VPS monitorizado.
    • [ ] Blackbox Exporter está instalado y configurado para la monitorización externa de la disponibilidad de servicios.
    • [ ] Se han instalado y configurado exportadores especializados para sus aplicaciones (Nginx, MySQL, Redis, etc.).
    • [ ] Todos los nuevos exportadores se han añadido a prometheus.yml.
  8. Pruebas y validación:
    • [ ] Se ha verificado la disponibilidad de todas las interfaces web (Prometheus:9090, Grafana:3000, Alertmanager:9093).
    • [ ] En la UI de Prometheus (Estado -> Objetivos), todos los objetivos están marcados como UP.
    • [ ] En la UI de Prometheus (Alertas), se han verificado las alertas activas.
    • [ ] Se ha verificado el envío de alertas de prueba a través de Alertmanager.
    • [ ] Se ha verificado la correcta visualización de las métricas en los paneles de Grafana.
    • [ ] Se han iniciado situaciones de prueba (por ejemplo, carga artificial de CPU) para verificar el disparo de alertas.
  9. Seguridad:
    • [ ] Los puertos de monitorización están cerrados al mundo exterior o protegidos por un proxy inverso con autenticación.
    • [ ] Se utilizan contraseñas complejas para Grafana y cualquier otro dato de autenticación.
    • [ ] HTTPS está configurado para acceder a Grafana y Alertmanager si están disponibles desde Internet.
  10. Optimización y escalabilidad:
    • [ ] Se han considerado soluciones para el almacenamiento a largo plazo de métricas (Thanos, Cortex, VictoriaMetrics).
    • [ ] Se ha realizado un análisis de la cardinalidad de las métricas para prevenir problemas de rendimiento de Prometheus.
    • [ ] Las reglas de alerta se revisan y optimizan regularmente.

Siguiendo esta lista de verificación, aumentará significativamente la fiabilidad y eficacia de su sistema de monitorización, lo que le permitirá reaccionar rápidamente a los incidentes y tomar decisiones informadas para el desarrollo de sus proyectos.

8. Cálculo de costos y economía de la propiedad del sistema de monitorización

Esquema: 8. Cálculo de costos y economía de la propiedad del sistema de monitorización
Esquema: 8. Cálculo de costos y economía de la propiedad del sistema de monitorización

Al elegir e implementar un sistema de monitorización, especialmente para startups y proyectos SaaS, el aspecto económico juega un papel tan importante como las capacidades técnicas. Aunque Prometheus, Grafana y Alertmanager son de código abierto, su implementación y soporte no son gratuitos. Analicemos los principales elementos de gasto y las formas de optimizarlos para 2026.

8.1. Principales elementos de gasto

8.1.1. Costo del VPS para el sistema de monitorización

Este es quizás el elemento de gasto más obvio. Para alojar Prometheus, Grafana y Alertmanager se requiere un VPS separado. Los requisitos para este dependen del volumen de métricas recopiladas (número de objetivos, frecuencia de recopilación, duración del almacenamiento).

  • Proyecto pequeño (1-5 VPS, 1000-5000 métricas): 2 CPU, 4 GB de RAM, 50-100 GB de SSD. El costo con proveedores como Hetzner, DigitalOcean, Vultr puede oscilar entre $10 y $30 al mes en 2026.
  • Proyecto mediano (10-30 VPS, 10 000-50 000 métricas): 4 CPU, 8-16 GB de RAM, 200-500 GB de SSD. Costo: $40 a $100 al mes.
  • Proyecto grande (50+ VPS, 100 000+ métricas): Requiere una arquitectura distribuida (Thanos/Cortex/VictoriaMetrics), lo que aumenta la complejidad y el costo, pero permite ahorrar en el servidor central de Prometheus. El costo puede ser de $150+ al mes solo por la infraestructura de monitorización, sin contar el almacenamiento S3.

8.1.2. Costo de almacenamiento de métricas (almacenamientos compatibles con S3)

Si planea un almacenamiento a largo plazo de métricas (más de 30-90 días), necesitará un almacenamiento remoto, generalmente compatible con S3. Esto puede ser AWS S3, Google Cloud Storage, Yandex Object Storage o su propio clúster MinIO.

  • AWS S3 (Almacenamiento Estándar): ~$0.023 por GB al mes.
  • Yandex Object Storage: ~$0.019 por GB al mes.
  • MinIO (autoalojado): Costo de los discos y el VPS para MinIO.

Para un proyecto que genera 100 000 métricas por segundo (lo cual es mucho), el volumen de almacenamiento puede alcanzar 100-200 GB al día, lo que en un año sumaría 36-72 TB. Esto es muy caro. Por lo tanto, es importante agregar métricas para el almacenamiento a largo plazo o almacenar solo las más importantes.

8.1.3. Tiempo de ingeniería (el costo oculto más grande)

Este es el elemento de gasto más significativo y a menudo subestimado. La implementación, configuración, soporte, actualización y depuración del sistema de monitorización requieren tiempo de ingeniería cualificado.

  • Configuración inicial: De 1-2 días para una pila básica en un VPS a varias semanas para un sistema distribuido complejo.
  • Soporte y optimización: Desde unas pocas horas a la semana para un proyecto pequeño hasta un ingeniero DevOps a tiempo completo para uno grande.
  • Desarrollo de exportadores y paneles personalizados: Depende de la complejidad de sus aplicaciones.

La tarifa promedio de un ingeniero DevOps en 2026 es de $60-100+ por hora. Incluso 10 horas al mes para soporte son $600-1000. Esto es significativamente más que el costo del VPS.

8.1.4. Costo de las alertas (SMS, PagerDuty)

Si utiliza canales de alerta de pago, como pasarelas SMS o servicios como PagerDuty, VictorOps, esto también aumenta los gastos.

  • PagerDuty: Desde $10-20 por usuario al mes.
  • Pasarelas SMS: Desde $0.01 hasta $0.05 por SMS, dependiendo de la región y el proveedor.

Para equipos pequeños, los canales gratuitos como Slack, Telegram, correo electrónico suelen ser suficientes.

8.2. Tabla comparativa de costos (aproximadamente para 2026)

Cálculos aproximados para un proyecto SaaS con 10 VPS, 20 000 métricas, 1 año de almacenamiento de datos, 2 ingenieros DevOps.

Elemento de gasto Prometheus + Grafana + Alertmanager (Autoalojado) Datadog (SaaS)
VPS para monitorización (1 ud.) $50/mes * 12 = $600/año Incluido en el costo de SaaS
Almacenamiento de métricas (Thanos/S3, 1TB/año) $20/mes * 12 = $240/año Incluido en el costo de SaaS (depende del volumen)
Costo de agentes en 10 VPS Gratis (Node Exporter) $15/host/mes * 10 hosts * 12 = $1800/año
APM/Logs/Perfilado (análogo) Gratis (OpenTelemetry, Loki, Pyroscope) + VPS adicional $30/host/mes * 10 hosts * 12 = $3600/año
Tiempo de ingeniería (configuración/soporte, 20 h/mes) $80/hora * 20 h/mes * 12 = $19200/año $80/hora * 10 h/mes * 12 = $9600/año (menos debido a la gestionabilidad)
Alertas (PagerDuty) $20/mes * 2 ingenieros * 12 = $480/año $20/mes * 2 ingenieros * 12 = $480/año
TOTAL (aproximado) ~$20720/año ~$15480/año

Nota: Estas cifras son muy aproximadas y pueden variar mucho. Para Datadog, el precio puede ser significativamente mayor si se utilizan todas las funciones (APM, Seguridad, Sintéticos). Para soluciones autoalojadas, el costo del tiempo de ingeniería es dominante.

8.3. Cómo optimizar los costos

Aunque el tiempo de ingeniería es el mayor elemento de gasto, la inversión en él se amortiza a largo plazo gracias a una comprensión profunda del sistema y la posibilidad de personalización.

  • Elija el hosting óptimo: Para un VPS de monitorización, no siempre es necesario un proveedor de nube caro. A menudo, basta con VDS económicos de proveedores con buena reputación.
  • Optimice el almacenamiento de métricas:
    • Reduzca el retention.time en Prometheus si no necesita datos antiguos.
    • Utilice el submuestreo (downsampling) para métricas antiguas en el almacenamiento a largo plazo (por ejemplo, en Thanos/Cortex).
    • Evite la alta cardinalidad de las métricas, que infla el tamaño de la base de datos de Prometheus.
  • Automatice el despliegue: Utilice Ansible, Terraform, Puppet o Chef para la instalación y configuración automática de la pila de Prometheus. Esto reducirá el tiempo de configuración inicial y las actualizaciones posteriores.
  • Utilice soluciones listas para usar: No reinvente la rueda. Utilice exportadores, paneles de Grafana y reglas de alerta listos para usar de la comunidad.
  • Capacite al equipo: Cuantos más miembros del equipo sepan trabajar con el sistema de monitorización, menor será la carga para un solo ingeniero y más rápido se resolverán los problemas.
  • Evalúe SaaS vs. Autoalojado: Para proyectos muy pequeños con recursos de ingeniería limitados, las soluciones SaaS pueden ser más rentables al principio. Pero a medida que crece y aumenta el número de hosts, la pila de Prometheus autoalojada se vuelve significativamente más económica, especialmente si tiene experiencia interna.

En 2026, la tendencia hacia las soluciones de código abierto para la monitorización sigue siendo fuerte, ya que brindan un control total sobre los datos y evitan la "dependencia del proveedor". Una gestión adecuada de los costos de infraestructura y el tiempo de ingeniería le permitirá crear un sistema de monitorización potente y rentable.

9. Casos de estudio y ejemplos de aplicación real

Esquema: 9. Casos de estudio y ejemplos de aplicación real
Esquema: 9. Casos de estudio y ejemplos de aplicación real

La teoría es importante, pero en la práctica, el valor de un sistema de monitorización se revela en escenarios reales. Consideremos algunos casos que demuestran cómo Prometheus, Grafana y Alertmanager ayudan a resolver problemas típicos de ingenieros DevOps y desarrolladores.

9.1. Caso 1: Proyecto SaaS pequeño — prevención de la sobrecarga de la base de datos

Situación: Un pequeño proyecto SaaS que proporciona análisis para comercio electrónico, se ejecuta en un VPS con PostgreSQL, Nginx y un backend Node.js. De repente, los usuarios comienzan a quejarse de la lentitud del servicio y, a veces, de errores 500. El proyecto recién comienza a crecer, y cada cliente cuenta.

Solución con la pila PGA:

  1. Instalación de exportadores: Se instalaron Node Exporter (para métricas generales del SO), PostgreSQL Exporter (para métricas de la base de datos) y Nginx Exporter en el VPS.
  2. Configuración de Prometheus: Prometheus se configuró para recopilar métricas de todos los exportadores.
  3. Paneles de Grafana: Se crearon paneles:
    • "VPS Overview" (CPU, RAM, E/S de disco, Red con Node Exporter).
    • "PostgreSQL Health" (conexiones activas, bloqueos, consultas lentas, aciertos de caché de PostgreSQL Exporter).
    • "Nginx Performance" (número de solicitudes, tiempo de respuesta, errores 5xx de Nginx Exporter).
  4. Reglas de Alertmanager: Se configuraron las siguientes alertas:
    • PostgreSQLHighActiveConnections: Si el número de conexiones activas a PostgreSQL supera el 80% del límite durante 5 minutos (severidad: warning).
    • PostgreSQLSlowQueries: Si el tiempo promedio de ejecución de consultas aumenta un 20% durante 10 minutos (severidad: warning).
    • Nginx5xxErrors: Si el número de errores 5xx de Nginx supera el 5% del total de solicitudes durante 1 minuto (severidad: critical).

Resultado: Después de configurar el sistema de monitorización, durante un pico de carga, se activó la alerta PostgreSQLHighActiveConnections. El ingeniero, al recibir la notificación en Slack, abrió inmediatamente el panel "PostgreSQL Health" y vio que el número de conexiones realmente se acercaba al límite, y también se observaba un aumento en las consultas lentas. El análisis de los registros y las métricas mostró que uno de los informes analíticos, ejecutado según un cronograma, creaba una carga excesiva en la base de datos. Los desarrolladores optimizaron rápidamente la consulta y trasladaron su ejecución a un momento de menor carga. El problema se resolvió antes de que provocara una falla total del servicio, manteniendo la lealtad del cliente y evitando pérdidas de reputación.

9.2. Caso 2: Proyecto en desarrollo con microservicios — detección de un fallo "silencioso"

Situación: El proyecto ha crecido a varios VPS, en los que se despliegan microservicios (por ejemplo, en Node.js y Go) en contenedores Docker. Uno de los servicios, responsable del procesamiento de tareas en segundo plano (por ejemplo, envío de notificaciones), comenzó a funcionar incorrectamente: las tareas se ponen en cola, pero no se procesan, mientras que el propio contenedor está "vivo" y no emite errores evidentes.

Solución con la pila PGA:

  1. Integración de métricas de aplicación: Los desarrolladores integraron la biblioteca cliente de Prometheus en el código de los servicios Node.js y Go. Se agregaron métricas personalizadas:
    • app_queue_size: Número de tareas en la cola.
    • app_processed_tasks_total: Número total de tareas procesadas.
    • app_worker_status: Estado del worker (0 - inactivo, 1 - activo).
  2. cAdvisor para contenedores: Se instaló cAdvisor para recopilar métricas de uso de recursos de cada contenedor.
  3. Paneles y alertas:
    • Panel "Microservice Health" con gráficos de app_queue_size y rate(app_processed_tasks_total[1m]).
    • Alerta BackgroundTaskQueueStalled: Si app_queue_size > 100 y rate(app_processed_tasks_total[5m]) == 0 (es decir, la cola crece y no se procesan tareas) durante 5 minutos (severidad: critical).
    • Alerta WorkerInactive: Si app_worker_status == 0 durante 1 minuto (severidad: warning).

Resultado: Un día, cuando se actualizó una biblioteca de terceros, uno de los workers de tareas en segundo plano se bloqueó, pero no se cayó. Continuó consumiendo recursos mínimos, y Node Exporter no detectó problemas. Sin embargo, después de 5 minutos, se activó la alerta BackgroundTaskQueueStalled. Los desarrolladores vieron inmediatamente la cola creciente y la velocidad de procesamiento de tareas nula en el panel. Revisando rápidamente los registros, descubrieron que el worker se había atascado procesando un mensaje incorrecto. El servicio se reinició, el mensaje incorrecto se eliminó de la cola y el trabajo se reanudó. Este caso demuestra cómo la monitorización de métricas específicas de la aplicación permite detectar problemas que no son visibles a nivel del sistema operativo y prevenir la pérdida de datos o retrasos en el procesamiento.

9.3. Caso 3: Optimización de costos y recursos — identificación del uso ineficiente de RAM

Situación: El fundador de un proyecto SaaS está preocupado por el aumento de las facturas de VPS. La infraestructura consta de varios VPS idénticos, y existe la sospecha de que algunos de ellos están sobreaprovisionados.

Solución con la pila PGA:

  1. Recopilación de métricas: En todos los VPS se recopilan activamente métricas de Node Exporter (especialmente node_memory_MemTotal_bytes, node_memory_MemFree_bytes, node_memory_Buffers_bytes, node_memory_Cached_bytes).
  2. Panel analítico de Grafana: Se creó un panel "Resource Utilization Overview" que muestra gráficos agregados e individuales de uso de CPU, RAM, E/S de disco para todos los VPS. Se utilizaron consultas PromQL para calcular la memoria real utilizada (Total - Libre - Búferes - Caché).
  3. Almacenamiento a largo plazo: Se configuró el almacenamiento a largo plazo de métricas de RAM en Thanos para analizar tendencias de los últimos 6 meses.

Resultado: El análisis de los paneles de Grafana y las tendencias a largo plazo mostró que 3 de los 5 VPS utilizaban constantemente menos del 30% de la RAM asignada, incluso en horas pico. Después de consultar con los desarrolladores, se descubrió que estos VPS se habían aprovisionado con un margen "por si acaso". Basándose en estos datos, se decidió reducir la cantidad de RAM en estos tres VPS de 8 GB a 4 GB. Esto condujo a un ahorro inmediato de $60 al mes (aproximadamente $720 al año) sin ningún impacto negativo en el rendimiento del servicio. La monitorización permitió tomar una decisión informada sobre la optimización de la infraestructura, convirtiendo las "sospechas vagas" en cifras y acciones concretas.

Estos casos demuestran que la pila PGA no es solo un conjunto de herramientas, sino un sistema completo que permite no solo reaccionar a los problemas, sino también prevenirlos activamente, optimizar recursos y tomar decisiones estratégicas basadas en datos.

10. Herramientas y recursos para la monitorización avanzada

Esquema: 10. Herramientas y recursos para la monitorización avanzada
Esquema: 10. Herramientas y recursos para la monitorización avanzada

Además de los componentes principales Prometheus, Grafana y Alertmanager, existe un amplio ecosistema de herramientas y recursos que pueden ampliar significativamente las capacidades de su sistema de monitorización. En 2026, estas herramientas continúan evolucionando, ofreciendo nuevas formas de recopilar, analizar y visualizar datos.

10.1. Utilidades adicionales para trabajar con Prometheus

  • Promtool: Una utilidad de línea de comandos integrada para Prometheus, utilizada para verificar archivos de configuración (promtool check config) y reglas de alerta (promtool check rules). Una herramienta indispensable para la depuración.
  • PromLens / PromQL Editor: Editores avanzados de PromQL, que ofrecen autocompletado, resaltado de sintaxis, visualización del árbol de consultas y otras funciones que simplifican la escritura de consultas complejas. Algunos de ellos están integrados en Grafana.
  • Prometheus Operator: Para aquellos que usan Kubernetes, Prometheus Operator automatiza el despliegue, la configuración y la gestión de Prometheus y Alertmanager. Simplifica significativamente la vida en entornos de contenedores.

10.2. Herramientas para el almacenamiento a largo plazo y la escalabilidad

Como se mencionó anteriormente, Prometheus por defecto no está diseñado para un almacenamiento a largo plazo ilimitado. Para ello, existen soluciones especializadas:

  • Thanos: Un conjunto de componentes que convierte varias instancias de Prometheus en un sistema de monitorización globalmente escalable con almacenamiento a largo plazo en un almacén de objetos (S3). Permite consultar métricas de varios servidores de Prometheus, agregarlas y almacenar datos históricos.
  • Cortex: Otro proyecto para crear un almacén de métricas de Prometheus horizontalmente escalable, de alta disponibilidad y multi-inquilino. También utiliza S3 para el almacenamiento a largo plazo.
  • VictoriaMetrics: Una base de datos de series temporales de alto rendimiento, escalable y económica, compatible con Prometheus. Puede utilizarse como almacenamiento remoto para Prometheus, así como un servidor de recopilación de métricas compatible con Prometheus independiente.

La elección entre Thanos, Cortex y VictoriaMetrics depende de su infraestructura, los requisitos de escalabilidad y las preferencias del equipo. En 2026, las tres soluciones se están desarrollando activamente y ofrecen funciones maduras.

10.3. Monitorización de registros y rastreo

La monitorización de métricas es solo una parte del panorama. Para una comprensión completa del estado del sistema, también son necesarios los registros (logs) y el rastreo (tracing).

  • Loki (Agregación de registros): Un proyecto de Grafana Labs que se posiciona como "Prometheus para registros". Loki indexa solo las etiquetas de los registros, no su contenido, lo que lo hace muy eficiente y económico. Se integra con Grafana a través del plugin Loki. Para la recopilación de registros se utiliza el agente Promtail.
  • ELK Stack (Elasticsearch, Logstash, Kibana): Una solución tradicional para la recopilación, almacenamiento y análisis de registros. Potente, pero más intensiva en recursos y compleja de gestionar que Loki.
  • Grafana Tempo (Rastreo distribuido): Un sistema para la recopilación y almacenamiento de rastreos, que también se integra con Grafana. Permite rastrear la ruta de una solicitud a través de múltiples microservicios, identificando cuellos de botella y retrasos.
  • OpenTelemetry: Un estándar universal para la recopilación de telemetría (métricas, registros, rastreos) de aplicaciones. Permite instrumentar el código una vez y enviar datos a varios backends (Prometheus, Loki, Tempo, Jaeger, etc.). En 2026, OpenTelemetry se está convirtiendo en el estándar de facto para la instrumentación de aplicaciones.

10.4. Enlaces útiles y documentación

El uso activo de estos recursos y herramientas le permitirá construir no solo un sistema de monitorización, sino una plataforma completa de observabilidad que le brindará una comprensión profunda de sus sistemas y le ayudará a tomar decisiones más informadas.

11. Troubleshooting: Solución de problemas comunes

Esquema: 11. Troubleshooting: Solución de problemas comunes
Esquema: 11. Troubleshooting: Solución de problemas comunes

Incluso con la configuración más cuidadosa, pueden surgir problemas en el funcionamiento del sistema de monitorización. Conocer los escenarios comunes y los métodos para diagnosticarlos le ayudará a restaurar rápidamente la funcionalidad o a encontrar la raíz del problema.

11.1. Prometheus no recopila métricas (Targets DOWN)

Síntomas: En la interfaz web de Prometheus (http://your_vps_ip:9090/targets), uno o más objetivos se muestran como DOWN.

Posibles causas y soluciones:

  • Inaccesibilidad del exportador:
    • Verificación: Intente obtener las métricas directamente desde el navegador o usando curl: curl http://target_ip:exporter_port/metrics (por ejemplo, http://localhost:9100/metrics para Node Exporter). Si no se recibe respuesta o hay un error 404/500, el problema está en el propio exportador.
    • Solución: Verifique si el contenedor/proceso del exportador está en ejecución (docker ps o systemctl status node_exporter). Revise los logs del exportador (docker logs node_exporter). Asegúrese de que el exportador esté escuchando en el puerto correcto.
  • Problemas de red/firewall:
    • Verificación: Asegúrese de que Prometheus pueda alcanzar al exportador. Si Prometheus y el exportador están en diferentes hosts, verifique la conectividad de red (ping target_ip) y las reglas del firewall (sudo ufw status o las reglas del proveedor de la nube).
    • Solución: Abra el puerto necesario (por ejemplo, 9100 para Node Exporter) en el host con el exportador para la dirección IP del servidor de Prometheus.
  • Error en la configuración de Prometheus:
    • Verificación: Ejecute promtool check config /etc/prometheus/prometheus.yml. Verifique la sección scrape_configs en prometheus.yml en busca de errores tipográficos en las direcciones o puertos.
    • Solución: Corrija la configuración, reinicie Prometheus (docker compose restart prometheus).

11.2. Grafana no muestra datos o arroja errores

Síntomas: Los paneles están vacíos, los gráficos no se construyen, aparecen errores como "No se puede conectar a Prometheus" o "No hay puntos de datos".

Posibles causas y soluciones:

  • Prometheus no está disponible:
    • Verificación: Asegúrese de que Prometheus esté en ejecución y sea accesible en la dirección especificada en la configuración de la fuente de datos de Grafana (http://prometheus:9090, si está en Docker Compose). Intente navegar a esa dirección en un navegador.
    • Solución: Si Prometheus no está disponible, consulte la sección "Prometheus no recopila métricas".
  • Consulta PromQL incorrecta:
    • Verificación: Abra el panel de Grafana en modo de edición, copie la consulta PromQL y péguela en la interfaz web de Prometheus (http://your_vps_ip:9090/graph). Verifique si devuelve datos.
    • Solución: Corrija la consulta PromQL. Asegúrese de que las métricas con esas etiquetas existan (use el autocompletado en la UI de Prometheus).
  • Problemas con la fuente de datos de Grafana:
    • Verificación: En Grafana, vaya a Configuración -> Fuentes de datos -> Prometheus. Haga clic en "Guardar y probar". Si hay un error, se mostrará.
    • Solución: Corrija la URL, verifique la conectividad de red entre los contenedores de Grafana y Prometheus.

11.3. Alertmanager no envía alertas

Síntomas: Prometheus muestra alertas activas, pero las notificaciones no llegan a Slack, Telegram o al correo electrónico.

Posibles causas y soluciones:

  • Problema con la configuración de Alertmanager:
    • Verificación: Ejecute promtool check config /etc/alertmanager/alertmanager.yml. Verifique la interfaz web de Alertmanager (http://your_vps_ip:9093/#/alerts) para ver qué alertas ha recibido de Prometheus. Verifique las secciones receivers y routes.
    • Solución: Corrija la sintaxis, verifique la exactitud de la URL del Webhook, las claves API. Reinicie Alertmanager (docker compose restart alertmanager).
  • Problemas con la integración (Slack, Telegram, correo electrónico):
    • Verificación: Para la URL del Webhook de Slack/Telegram: intente enviar una solicitud de prueba con curl. Para el correo electrónico: verifique la configuración del servidor SMTP, los logs de Alertmanager en busca de errores de conexión SMTP.
    • Solución: Asegúrese de que la URL del Webhook o la configuración SMTP sean correctas y no hayan caducado. Verifique la carpeta de spam para el correo electrónico.
  • Las alertas se suprimen/agrupan:
    • Verificación: En la interfaz web de Alertmanager, verifique las pestañas "Silences" e "Inhibitions". Es posible que la alerta esté bajo una regla de supresión o haya sido silenciada manualmente.
    • Solución: Elimine los silences/inhibitions innecesarios. Revise las reglas group_by, group_wait, group_interval, repeat_interval en alertmanager.yml.

11.4. Alta carga en el servidor de Prometheus

Síntomas: Prometheus consume mucha CPU o RAM, el disco se llena rápidamente, las consultas PromQL se ejecutan lentamente.

Posibles causas y soluciones:

  • Alta cardinalidad de métricas:
    • Verificación: En la UI de Prometheus, vaya a Estado -> Estado de TSDb. Observe el número de series y su crecimiento. Si el número de series es muy alto (millones) y crece rápidamente, esto indica una alta cardinalidad.
    • Solución: Revise los exportadores para evitar etiquetas con valores únicos (UUID, ID de sesión, URL completas con parámetros). Utilice relabel_configs en prometheus.yml para filtrar o reescribir etiquetas.
  • Recopilación frecuente de métricas:
    • Verificación: Verifique scrape_interval en prometheus.yml.
    • Solución: Aumente el scrape_interval para objetivos menos críticos (por ejemplo, a 60 segundos).
  • Almacenamiento de datos demasiado prolongado:
    • Verificación: Verifique --storage.tsdb.retention.time en el comando de inicio de Prometheus.
    • Solución: Reduzca el tiempo de retención o considere implementar Thanos/Cortex/VictoriaMetrics para el almacenamiento a largo plazo.
  • Consultas ineficientes en Grafana:
    • Verificación: Si la carga aumenta al abrir ciertos paneles, el problema está en ellos.
    • Solución: Optimice las consultas PromQL en Grafana. Utilice sum by (...) en lugar de sum() si necesita agregar por etiquetas.

11.5. Cuándo contactar al soporte

Si ha agotado todas las posibilidades de diagnóstico por su cuenta y el problema no se resuelve, quizás sea el momento de buscar ayuda:

  • Al proveedor de VPS: Si hay sospechas de problemas con el hardware del VPS, la conectividad de red a nivel del centro de datos, o si su VPS no está disponible a nivel del sistema operativo.
  • A la comunidad de Prometheus/Grafana: Para preguntas generales sobre configuración, consultas PromQL complejas o soluciones arquitectónicas. Utilice foros, canales de Slack o Stack Overflow.
  • A expertos/consultores: Para tareas complejas y no estándar, auditorías de sistemas existentes, o si su equipo no tiene suficiente experiencia con la pila de Prometheus. Este puede ser un servicio de pago, pero a menudo se amortiza gracias a la rápida resolución del problema y la adquisición de experiencia.

Recuerde que los logs son su mejor amigo. Siempre comience el diagnóstico revisando los logs de los componentes correspondientes (Prometheus, Grafana, Alertmanager, exportadores) a través de docker logs o journalctl -u .

12. FAQ: Preguntas frecuentes sobre Prometheus, Grafana y Alertmanager

12.1. ¿Cuál es la principal diferencia entre Prometheus y Zabbix?

La principal diferencia radica en el modelo de recopilación de métricas y el enfoque hacia ellas. Prometheus utiliza un modelo pull (él mismo consulta los objetivos) y se centra en series temporales con etiquetas, lo que proporciona una gran flexibilidad de consulta con PromQL. Zabbix utiliza un modelo push (los agentes envían datos) y un enfoque de monitorización más tradicional, basado en elementos de datos y disparadores. Prometheus es más adecuado para entornos dinámicos en la nube y en contenedores, mientras que Zabbix es para infraestructuras corporativas más estáticas.

12.2. ¿Cuánto espacio en disco se necesita para Prometheus?

El consumo de espacio en disco de Prometheus depende en gran medida del número de métricas recopiladas (series), la frecuencia de su recopilación y la duración del almacenamiento. Aproximadamente, para 10 000 series de métricas activas, recopiladas cada 15 segundos, y almacenando datos durante 30 días, se necesitarán entre 50 y 100 GB. Para sistemas más grandes o almacenamiento a largo plazo, se necesitará significativamente más, por lo que se recomienda utilizar almacenamientos remotos como Thanos/Cortex/VictoriaMetrics con S3.

12.3. ¿Cómo monitorizar logs con la pila de Prometheus?

Prometheus no está diseñado para la recopilación de logs. Para ello, se utiliza una herramienta separada, como Loki de Grafana Labs (a menudo llamado "Prometheus para logs"). Loki recopila logs con la ayuda del agente Promtail, los indexa por etiquetas (similar a Prometheus) y permite consultarlos a través de Grafana. Las alternativas incluyen ELK Stack (Elasticsearch, Logstash, Kibana) u otros sistemas de registro centralizados.

12.4. ¿Se pueden monitorizar contenedores Docker?

Sí, Prometheus es excelente para monitorizar contenedores Docker. La forma más común es utilizar cAdvisor (Container Advisor), que recopila y exporta métricas de uso de recursos (CPU, RAM, red, disco) para cada contenedor que se ejecuta en el host. Estas métricas son luego recopiladas por Prometheus y visualizadas en Grafana.

12.5. ¿Cómo garantizar la alta disponibilidad del sistema de monitorización?

Para la alta disponibilidad de Prometheus se pueden utilizar varios enfoques:

  1. Dos instancias de Prometheus: Ejecutar dos instancias independientes de Prometheus, recopilando las mismas métricas.
  2. Thanos/Cortex/VictoriaMetrics: Estas soluciones están diseñadas originalmente para alta disponibilidad y escalabilidad horizontal, utilizando el almacenamiento de objetos como una única fuente de verdad.
  3. Alertmanager: Ejecutar Alertmanager en un clúster para evitar un único punto de fallo para las alertas.
  4. Grafana: Ejecutar Grafana en un clúster y utilizar una base de datos compartida para almacenar la configuración.

12.6. ¿Cuáles son las mejores prácticas para escribir consultas PromQL?

Las principales mejores prácticas de PromQL son:

  • Utilice rate() o irate() para contadores.
  • Evite la alta cardinalidad de las etiquetas.
  • Utilice by() para la agregación por etiquetas específicas.
  • Pruebe las consultas en la UI de Prometheus antes de agregarlas a Grafana/alertas.
  • Documente las consultas complejas.
  • Utilice sum(rate(...)) para agregar métricas de todas las instancias.

12.7. ¿Cómo monitorizar servicios externos (por ejemplo, la disponibilidad de un sitio web)?

Para la monitorización de servicios externos se utiliza Blackbox Exporter. Permite verificar puntos finales HTTP/HTTPS, puertos TCP, realizar pings ICMP y consultas DNS. Prometheus consulta a Blackbox Exporter, pasándole el objetivo a verificar, y Blackbox Exporter devuelve métricas sobre la disponibilidad y el tiempo de respuesta de ese objetivo.

12.8. ¿Se puede utilizar Prometheus para métricas de negocio?

Sí, Prometheus es excelente para recopilar y analizar métricas de negocio. Puede instrumentar sus aplicaciones, utilizando las bibliotecas cliente de Prometheus, para exportar métricas como el número de registros, usuarios activos, transacciones realizadas, ticket promedio, etc. Luego, estas métricas se pueden visualizar en Grafana y configurar alertas sobre ellas.

12.9. ¿Cómo actualizar los componentes de la pila de Prometheus?

Si utiliza Docker Compose, la actualización de los componentes es bastante sencilla:

  1. Cambie las etiquetas de las imágenes en docker-compose.yml a las nuevas versiones.
  2. Ejecute docker compose pull para descargar las nuevas imágenes.
  3. Ejecute docker compose up -d para reiniciar los contenedores con las nuevas imágenes.
Siempre haga copias de seguridad de los archivos de configuración y los datos antes de actualizar.

12.10. ¿Qué recursos se necesitan para la monitorización en 2026?

En 2026, los requisitos de recursos para la monitorización continúan creciendo debido al aumento del volumen de datos y la complejidad de los sistemas. Para un VPS mediano con 10-20 objetivos y 30 días de almacenamiento, se recomienda tener un mínimo de 4 CPU, 8 GB de RAM y 200 GB de SSD. Para sistemas más grandes o el uso de almacenamiento a largo plazo con Thanos/Cortex/VictoriaMetrics, se requieren recursos adicionales para estos componentes y el almacenamiento de objetos.

13. Conclusión: Sus próximos pasos hacia una monitorización fiable

En 2026, cuando la estabilidad y el rendimiento de los servicios son la piedra angular de cualquier proyecto exitoso, especialmente para negocios SaaS y startups en crecimiento, un sistema de monitorización fiable no es solo una opción, sino una necesidad absoluta. Hemos examinado en detalle cómo la combinación de Prometheus para la recopilación de métricas, Grafana para su visualización y Alertmanager para la gestión inteligente de alertas forma una solución potente, flexible y rentable para la monitorización de VPS y aplicaciones.

Hemos recorrido el camino desde la comprensión de las métricas críticas hasta la instalación y configuración paso a paso, hemos analizado errores comunes y métodos para prevenirlos, hemos estudiado la economía de la propiedad y hemos explorado casos reales. Ha comprobado que las soluciones de código abierto, como la pila PGA, permiten alcanzar un nivel de control y personalización que a menudo no está disponible en las soluciones SaaS propietarias, al tiempo que reducen significativamente los costos de licencia a largo plazo.

Recomendaciones finales:

  • Empiece poco a poco, pero correctamente: No intente monitorizar todo a la vez. Comience con las métricas básicas del SO (Node Exporter) y las métricas clave de sus aplicaciones. Amplíe gradualmente la cobertura.
  • Automatice: Utilice Docker Compose, Ansible o Terraform para el despliegue y la gestión de su sistema de monitorización. Esto le ahorrará tiempo y reducirá la cantidad de errores.
  • Sea proactivo: Configure alertas para los primeros signos de problemas, no solo para fallos críticos. Utilice for en las reglas de Prometheus y la agrupación inteligente en Alertmanager para evitar la "fatiga de alertas".
  • Visualice: Utilice Grafana para crear paneles informativos que le ayuden a comprender rápidamente el estado del sistema e identificar anomalías.
  • Documente: Cree Runbooks para cada alerta importante. Saber qué hacer cuando se activa una alerta reduce el tiempo de recuperación (MTTR).
  • Aprenda y evolucione: El ecosistema de Prometheus está en constante desarrollo. Estudie PromQL, nuevos exportadores, soluciones de almacenamiento a largo plazo (Thanos, Cortex, VictoriaMetrics) y herramientas para el registro y el rastreo (Loki, Tempo).
  • Monitorice la propia monitorización: Asegúrese de que su sistema de monitorización funciona correctamente y le avisa si algo sale mal con él mismo.

Sus próximos pasos:

  1. Despliegue la pila básica: Utilice los archivos docker-compose.yml y las configuraciones proporcionadas en este artículo para desplegar Prometheus, Grafana, Alertmanager y Node Exporter en su VPS.
  2. Configure sus primeras alertas: Adapte las reglas de alert.rules.yml a sus umbrales y canales de alerta.
  3. Importe paneles: Busque e importe paneles preconfigurados para Node Exporter y otras tecnologías que utilice en Grafana.
  4. Instrumente sus aplicaciones: Comience a añadir métricas personalizadas en el código de su backend para obtener información profunda sobre el funcionamiento de sus servicios.
  5. Amplíe gradualmente: Añada Blackbox Exporter para la monitorización externa, cAdvisor para contenedores, exportadores especializados para bases de datos y servidores web.

Recuerde que la monitorización es un proceso continuo. Requiere atención, iteraciones y adaptación constante a los requisitos cambiantes de su infraestructura y aplicaciones. Las inversiones en una monitorización de calidad hoy se amortizarán con creces, garantizando la estabilidad, fiabilidad y tranquilidad para su equipo y sus usuarios en el futuro.

¿Te fue útil esta guía?

Monitoreo VPS: Prometheus, Grafana y Alertmanager en la práctica