🐳 docker-labs GitHub ↗

Prometheus + Grafana Infraestructura

Centro de observabilidad para metricas y dashboards operativos.

Objetivo: Agregar una capa de observabilidad al workspace con recoleccion de metricas y dashboards operativos.

Rol en la plataforma
Observabilidad
Stack
Prometheus + Grafana
Puertos del host
9091 3002
Memoria recomendada
4 GB
Categoría
Infraestructura
Entradas
Prometheus: http://localhost:9091
Grafana: http://localhost:3002
Health check
http://localhost:9091/-/ready
Nota de puertos
9091 evita conflicto con Control Center (9090); 3002 evita conflicto con backend de 09-multi-service-app (3003)
Labs relacionados
Inventory Core · Operations Portal

Qué hacer una vez levantado

docker compose -f 08-prometheus-grafana/docker-compose.yml up -d --build

📊 Lab 08 — Prometheus + Grafana#

Capa de observabilidad del workspace: recolección de métricas con Prometheus y visualización mediante dashboards en Grafana.


🧩 Rol en el repositorio#

Este laboratorio introduce la capa de monitoreo de la plataforma. Prometheus recolecta métricas de los servicios activos; Grafana las expone en dashboards interactivos. Juntos representan el estándar de facto para observabilidad en entornos contenerizados.

Requisito de recursos: se recomienda al menos 4 GB de RAM asignados a Docker. Prometheus y Grafana juntos tienen una huella considerablemente mayor que el resto de los labs.

📦 Servicios y puertos#

ServicioImagenPuerto hostPuerto contenedorDescripción
prometheus_monitoringprom/prometheus90919090Motor de recolección y almacenamiento de métricas
grafana_monitoringgrafana/grafana30023000Interfaz de dashboards y visualización

La configuración de scraping de Prometheus se define en prometheus.yml dentro de este directorio.

📡 Targets de scraping#

JobTargetLab
node-apihost.docker.internal:300001-node-api
python-apihost.docker.internal:500003-python-api
inventory-corehost.docker.internal:800005-postgres-api
operations-portalhost.docker.internal:300309-multi-service-app
go-apihost.docker.internal:808410-go-api
docker-labs-control-centerhost.docker.internal:9090dashboard-control
prometheuslocalhost:9090self-scrape
El Control Center expone sus propias métricas en GET /metrics en formato Prometheus Text Exposition. Ver sección Dashboards a continuación.

📊 Dashboards incluidos#

ArchivoUIDDescripción
grafana-dashboards/control-center.jsondocker-labs-control-centerMétricas del Control Center: requests, errores, acciones Docker, uptime, labs conocidos

Para importar en Grafana: Dashboards → Import → Upload JSON file.

⚡ Inicio rápido#

docker compose up -d

🔗 Accesos#

ServicioURLCredenciales
Prometheushttp://localhost:9091
Grafanahttp://localhost:3002admin / ver .env
Grafana solicita cambio de contraseña en el primer inicio de sesión. Las credenciales se configuran en .env (ver .env.example).

✅ Health checks#

prometheus_monitoring#

wget -qO- http://127.0.0.1:9090/-/healthy
ParámetroValor
Intervalo15 s
Timeout5 s
Reintentos3
Start period20 s

grafana_monitoring#

wget -qO- http://127.0.0.1:3000/api/health
ParámetroValor
Intervalo15 s
Timeout5 s
Reintentos3
Start period30 s

🔍 Verificación#

# Estado de ambos contenedores
docker compose ps

# Confirmar que Prometheus está activo
curl http://localhost:9091/-/healthy

# Confirmar que Grafana está activa
curl http://localhost:3002/api/health

# Ver logs
docker compose logs prometheus_monitoring
docker compose logs grafana_monitoring

⚠️ Notas#

PuertoRazón del cambio
9091 (en lugar de 9090)Evita conflicto con Control Center (dashboard-control) que ocupa 9090
3002 (en lugar de 3000)Evita conflicto con el backend de 09-multi-service-app que utiliza 3003 en su stack interno

Ambos labs pueden ejecutarse simultáneamente sin pisarse.

📚 Documentos relacionados#