🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Monitorización Avanzada con Prometheus y Grafana en Servidores

Actualizado el 8 de febrero de 2026

Introducción a la Monitorización Avanzada

En el ecosistema actual de infraestructura de servidores, la monitorización reactiva es insuficiente. Necesitamos anticiparnos a fallos, entender patrones de rendimiento y escalar con datos precisos. Aquí es donde la combinación de Prometheus y Grafana se convierte en el estándar de facto para la monitorización avanzada.

Prometheus, un sistema de recolección de métricas de código abierto, destaca por su modelo de datos multidimensional y su potente lenguaje de consultas (PromQL). Grafana, por su parte, es la capa de visualización que transforma esos datos en dashboards interactivos y alertas accionables. Juntos forman un stack que permite a los administradores de servidores tener un control granular sin precedentes.

Este artículo profundiza en la arquitectura, configuración y mejores prácticas para implementar este stack en entornos de producción. Cubriremos desde la instalación básica hasta la creación de alertas complejas y dashboards personalizados.

Arquitectura del Stack Prometheus + Grafana

Componentes Clave

Para entender el flujo de trabajo, debemos conocer los componentes:

  • Prometheus Server: El cerebro del sistema. Almacena métricas en una base de datos de series temporales (TSDB) y las expone mediante una API HTTP.
  • Exporters: Agentes que recolectan métricas de sistemas o aplicaciones y las exponen en un formato que Prometheus puede scrapear (ej: Node Exporter para métricas del sistema, Blackbox Exporter para disponibilidad HTTP).
  • Alertmanager: El gestor de alertas. Recibe notificaciones de Prometheus y las enruta a canales como Slack, PagerDuty o correo electrónico.
  • Grafana: La interfaz de visualización. Se conecta a Prometheus (u otras fuentes) para construir dashboards y configurar alertas visuales.

Flujo de Datos

  1. Exporters recolectan métricas (CPU, memoria, latencia, etc.) y las exponen en un endpoint /metrics.
  2. Prometheus scrapea periódicamente esos endpoints (configurable en prometheus.yml) y almacena los datos.
  3. Grafana consulta Prometheus mediante PromQL y renderiza gráficos en tiempo real.
  4. Alertmanager recibe eventos de Prometheus cuando se superan umbrales definidos en reglas de alerta.

[INFO] Prometheus utiliza un modelo "pull" (extracción), lo que significa que el servidor Prometheus debe poder alcanzar los endpoints de los exporters. En entornos con NAT o firewalls restrictivos, se puede usar Pushgateway como alternativa.

Instalación y Configuración Básica

Instalación de Prometheus

Asumiendo un servidor Linux (Ubuntu 22.04 LTS como ejemplo):

# Descargar la última versión estable
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

# Descomprimir
tar xvf prometheus-2.45.0.linux-amd64.tar.gz

# Mover a /opt
sudo mv prometheus-2.45.0.linux-amd64 /opt/prometheus

Crea un usuario para Prometheus:

sudo useradd --no-create-home --shell /bin/false prometheus
sudo chown -R prometheus:prometheus /opt/prometheus

Configura el archivo prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

Luego inícialo como servicio systemd.

Instalación de Node Exporter

Para recolectar métricas del sistema operativo:

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
tar xvf node_exporter-1.6.0.linux-amd64.tar.gz
sudo mv node_exporter-1.6.0.linux-amd64/node_exporter /usr/local/bin/

Crea un servicio systemd y ejecútalo.

Instalación de Grafana

Grafana se instala desde el repositorio oficial:

sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update
sudo apt-get install grafana

Inicia y habilita el servicio:

sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Accede a http://tu-servidor:3000 con usuario admin y contraseña admin.

Creación de Dashboards Efectivos

Principios de Diseño

Un buen dashboard no es un montón de gráficos. Debe responder preguntas clave:

  • ¿Qué está pasando ahora mismo?
  • ¿Hay alguna anomalía?
  • ¿Cómo ha evolucionado el rendimiento en las últimas 24 horas?

Recomendamos estructurar los dashboards en tres niveles:

  1. Vista general: Métricas agregadas de todos los servidores (CPU total, memoria usada, disco).
  2. Vista por servicio: Métricas específicas de bases de datos, aplicaciones web, etc.
  3. Vista detallada: Métricas de un solo servidor o instancia.

Query de ejemplo con PromQL

Para mostrar el uso de CPU promedio por servidor en los últimos 5 minutos:

100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Para la memoria RAM usada en porcentaje:

(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100

Importación de Dashboards Predefinidos

Grafana tiene un marketplace de dashboards. El más popular para Node Exporter es el ID 1860.

  1. En Grafana, ve a + > Import.
  2. Introduce el ID 1860 y haz clic en Load.
  3. Selecciona la fuente de datos Prometheus.
  4. ¡Listo! Tendrás un dashboard completo con métricas de CPU, memoria, disco, red y más.

[TIP] Siempre revisa las queries de los dashboards importados. A menudo necesitan ajustes para tu entorno específico (nombres de instancias, etiquetas, etc.).

Configuración Avanzada de Alertas

Reglas de Alerta en Prometheus

Crea un archivo alerts.yml:

groups:
  - name: node_alerts
    rules:
      - alert: HighCpuUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Alto uso de CPU en {{ $labels.instance }}"
          description: "La CPU está al {{ $value }}% durante más de 5 minutos."

      - alert: DiskSpaceLow
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 10
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "Espacio en disco bajo en {{ $labels.instance }}"
          description: "Queda menos del 10% de espacio en el disco raíz."

Luego, en prometheus.yml, referencia este archivo:

rule_files:
  - "alerts.yml"

Configuración de Alertmanager

Instala Alertmanager:

wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
tar xvf alertmanager-0.25.0.linux-amd64.tar.gz
sudo mv alertmanager-0.25.0.linux-amd64 /opt/alertmanager

Configura alertmanager.yml para enviar a Slack:

global:
  slack_api_url: 'https://hooks.slack.com/services/T00/B00/XXXXX'

route:
  receiver: 'slack-default'
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h

receivers:
  - name: 'slack-default'
    slack_configs:
      - channel: '#alerts-servidores'
        title: '{{ .GroupLabels.alertname }}'
        text: '{{ .CommonAnnotations.description }}'

Finalmente, configura Prometheus para que envíe alertas a Alertmanager:

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

[WARNING] No configures alertas sin definir umbrales realistas. Las falsas alarmas generan fatiga y desconfianza. Utiliza el campo for para evitar picos transitorios.

Métricas Avanzadas y Exporters Específicos

Exporters para Servidores Web

  • Nginx Exporter: Métricas de conexiones activas, requests por segundo, upstreams.
  • Apache Exporter: Similar, para servidores Apache.
  • Blackbox Exporter: Para monitorizar la disponibilidad HTTP, HTTPS, TCP, ICMP desde fuera del servidor.

Exporters para Bases de Datos

  • PostgreSQL Exporter: Métricas de conexiones, transacciones, tamaño de la base de datos.
  • MySQL Exporter: Consultas lentas, estado de replicación, uso de InnoDB.
  • Redis Exporter: Latencia, memoria usada, keyspace.

Exporters para Infraestructura

  • cAdvisor: Métricas de contenedores Docker.
  • SNMP Exporter: Para dispositivos de red (switches, routers).
  • IPMI Exporter: Métricas de hardware (temperatura, voltaje, ventiladores).

Optimización de Prometheus para Producción

Almacenamiento y Retención

Por defecto, Prometheus almacena datos localmente. Para entornos de producción, considera:

  • Retención: Configura --storage.tsdb.retention.time=30d para mantener datos 30 días.
  • Compresión: Prometheus ya comprime datos, pero puedes ajustar --storage.tsdb.retention.size para limitar el tamaño máximo del disco.
  • Thanos o Cortex: Para escalar horizontalmente y tener almacenamiento a largo plazo en object storage (S3, GCS).

Seguridad

  • Autenticación: Usa un proxy reverso (Nginx) con autenticación básica o OAuth para Grafana.
  • TLS: Habilita HTTPS en Prometheus y Grafana.
  • Firewall: Restringe el acceso al puerto 9090 de Prometheus solo a los servidores de Grafana y a tus IPs de administración.

Alta Disponibilidad

Para evitar un punto único de fallo:

  • Ejecuta dos instancias de Prometheus en modo "HA" (ambas scrapeando los mismos targets).
  • Configura Alertmanager en modo cluster para deduplicar alertas.
  • Usa un balanceador de carga para Grafana.

[TIP] No dupliques la carga de trabajo en HA: ambas instancias de Prometheus deben tener la misma configuración de scrape y reglas de alerta. La deduplicación se maneja en Alertmanager.

Conclusión y Mejores Prácticas

La monitorización avanzada con Prometheus y Grafana transforma la gestión de servidores de una tarea reactiva a una proactiva. Con dashboards bien diseñados y alertas inteligentes, puedes detectar problemas antes de que afecten a los usuarios.

Recuerda estos puntos clave:

  • Empieza pequeño: No intentes monitorizar todo de golpe. Comienza con métricas básicas (CPU, memoria, disco) y expande gradualmente.
  • Documenta tus dashboards: Usa anotaciones en Grafana para marcar eventos (despliegues, reinicios, cambios de configuración).
  • Revisa tus alertas periódicamente: Ajusta umbrales según la carga real de tu infraestructura.
  • Invierte en formación: PromQL es un lenguaje potente pero requiere práctica. Dominarlo es clave para extraer valor real de los datos.

La combinación de Prometheus y Grafana no es solo una herramienta; es una filosofía de operaciones basada en datos. Implementarla correctamente te dará visibilidad total sobre tu infraestructura y te permitirá escalar con confianza.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel