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?
- Copia los dos archivos (
docker-compose.yml
yprometheus.yml
) en tu proyecto. - Arranca todo con:
docker compose up -d
- Visita http://localhost:3000 (Grafana). Usuario:
admin
, clave:admin123
(puedes cambiarla en la variable de entorno). - En Grafana, añade una nueva data source tipo Prometheus apuntando a
http://prometheus:9090
. - Crea tu primer dashboard y empieza a monitorizar todo.
Consejillos extra y troubleshooting
-
¿No se guardan los dashboards tras reiniciar? ¡Revisa los
volumes
en tudocker-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?