docker compose configPrometheus para métricas del sistema (multiplataforma)
Una base práctica para scrapear targets y validar la salud del stack en Windows, Linux, macOS y Docker.
Configura Prometheus y verifica métricas operativas con un flujo reproducible, independientemente del sistema operativo del equipo.
Creada: 5 de abril de 2026
Publicada: 5 de abril de 2026
Docker
Esta guía se ejecuta como laboratorio Docker. Usa los fragmentos de Compose y configuración del artículo como fuente principal y no asumas soporte nativo para otros sistemas operativos si no aparece documentado.
docker compose up -d --builddocker compose psArquitectura mínima del laboratorio
- Un contenedor de Prometheus con su archivo de configuración montado desde disco.
- Un target inicial. Puede ser tu aplicación o un exporter como node-exporter.
- Persistencia básica para no perder series cada vez que reinicias.
No busques alta disponibilidad en esta guía. La meta es tener una base local fiable para empezar a consultar métricas y entender el flujo completo.
Crea el stack con Docker Compose
services:
prometheus:
image: prom/prometheus:v2.54.1
container_name: prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus
node-exporter:
image: prom/node-exporter:v1.8.2
container_name: node-exporter
ports:
- "9100:9100"
volumes:
prometheus_data:Prometheus scrapea un exporter sencillo para validar que la tubería funciona antes de apuntarlo a tu aplicación.
Define el archivo de scrapes
Crea un directorio `prometheus/` junto al `docker-compose.yml`.
Configura un `scrape_interval` corto para el laboratorio y añade el target del exporter para verificar la ingesta.
global:
scrape_interval: 15s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["prometheus:9090"]
- job_name: "node"
static_configs:
- targets: ["node-exporter:9100"]Arranca el stack
Lanza `docker compose up -d` y espera a que Prometheus y node-exporter estén en estado healthy o running.
Abre `http://localhost:9090/targets` y confirma que ambos jobs aparecen como UP.
docker compose up -dValida que ya puedes consultar métricas
No des el despliegue por bueno hasta comprobar consultas concretas. La vista de Targets dice si hay scrape; la vista de Graph confirma si ya tienes datos útiles.
- Prueba `up` para ver todos los targets activos.
- Prueba `rate(node_cpu_seconds_total[5m])` para verificar series del exporter.
- Comprueba `prometheus_tsdb_head_series` para entender el volumen que ya estás guardando.
Checklist antes de pasar a producción
- ✓Prometheus inicia con configuración válida y sin errores de parseo.
- ✓Los targets aparecen como UP de forma estable.
- ✓Tienes persistencia montada para no perder series entre reinicios.
- ○Has definido una estrategia para secretos o auth en endpoints sensibles.
Añade tu primer servicio real
Cuando el laboratorio ya funciona, sustituye el exporter de ejemplo o añade un job nuevo apuntando a tu aplicación. Si trabajas con OpenTelemetry Collector, Prometheus puede scrapear el endpoint que expone el propio collector o exporters específicos.
¿Necesito service discovery para una primera iteración?
No. Empieza con `static_configs` mientras entiendes el modelo. La discovery dinámica llega después, cuando el entorno ya es menos manual.
¿Qué hago si todos los targets están DOWN?
Revisa primero networking y nombres DNS dentro de Docker Compose. En local, el error más común es usar `localhost` en lugar del nombre del servicio entre contenedores.
El siguiente salto natural es conectar esta instancia a Grafana y construir un dashboard mínimo de salud del host o de tu aplicación.