Despliega tu propio servidor de monitorización Prometheus + Grafana con Docker Compose

Despliega tu propio servidor de monitorización Prometheus + Grafana con Docker Compose

¿Listo para dar el salto y montar un sistema de monitorización profesional en tu VPS? Hoy te traigo una receta infalible para montar tu propio stack de Prometheus y Grafana, todo automatizado con Docker Compose. Obtendrás gráficas de métricas, alertas y puedes expandirlo sin límites. Perfecto tanto si eres un desarrollador curioso como si buscas vigilar tus servidores con estilo.

¿Qué son Prometheus y Grafana?

  • Prometheus es el estándar de facto para monitorizar sistemas y servicios. Recoge y almacena métricas en una base de datos temporal optimizada para consultas y alertas.
  • Grafana toma esos datos y los convierte en dashboards atractivos, permitiéndote visualizar y explorar todo lo que ocurre en tus sistemas.

Lo mejor: ambos proyectos son open source y totalmente personalizables.

¿Por qué es útil?

  • Detecta cuellos de botella antes de que sean un problema.
  • Supervisa servicios, puertos y hardware de tus servidores o apps.
  • Recibe alertas automáticas si algo va mal.
  • Personaliza paneles y monitoriza todo lo que imagines, desde CPU a uptime de webs o logs.

Docker Compose en acción: el archivo completo

Aquí tienes un docker-compose.yml listo para producción local o VPS. Incluye:

  • Prometheus con configuración externalizada.
  • Grafana preconfigurado para almacenar dashboards y usuarios.
  • Node Exporter para métricas de la máquina anfitriona (CPU, RAM, disco, etc).
  • Persistencia en volumenes: nada se pierde tras reinicios.
version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    ports:
      - "9090:9090"
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123  # Cambia esta clave por seguridad
    ports:
      - "3000:3000"
    depends_on:
      - prometheus
    volumes:
      - grafana_data:/var/lib/grafana
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    ports:
      - "9100:9100"
    restart: unless-stopped
    deploy:
      mode: global

volumes:
  prometheus_data:
  grafana_data:

Configuración de Prometheus

Crea la carpeta ./prometheus/ y dentro coloca este prometheus.yml básico:

global:
  scrape_interval: 15s

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

  - job_name: "node"
    static_configs:
      - targets: ['node-exporter:9100']

¿Cómo lo arranco?

  1. Copia los dos archivos (docker-compose.yml y prometheus.yml) en tu proyecto.
  2. Arranca todo con:
    docker compose up -d
  3. Visita http://localhost:3000 (Grafana). Usuario: admin, clave: admin123 (puedes cambiarla en la variable de entorno).
  4. En Grafana, añade una nueva data source tipo Prometheus apuntando a http://prometheus:9090.
  5. Crea tu primer dashboard y empieza a monitorizar todo.

Consejillos extra y troubleshooting

  • ¿No se guardan los dashboards tras reiniciar? ¡Revisa los volumes en tu docker-compose.yml! Así mantienes la persistencia de datos.
  • Puedes añadir más Node Exporter en otras máquinas y que todos reporten a este Prometheus editando la sección scrape_configs.
  • Recuerda importar dashboards ya hechos desde la galería de Grafana (ID oficial: de Node Exporter).
  • Seguridad: Usa un proxy (Nginx, Traefik) para exponer Grafana con SSL y cambia la clave admin de inmediato si es accesible desde fuera.
  • ¿Errores de conexión? Comprueba firewalls, puertos en VPS y que los servicios están activos con docker ps.

¡Listo! Ya tienes un stack de monitorización profesional que además puedes expandir con alertas, más exporters o integración con Telegram, Slack y mucho más. ¿Te animas a probarlo?

Avatar

Por Mid