Skip to content
BotServBotServ
DockerMonitoreoGrafanaPrometheuscAdvisorNode Exporter

Monitoreo Docker con Grafana y Prometheus

Supervisa contenedores, recursos y servicios de IA en Docker. Grafana, Prometheus, cAdvisor y Node Exporter.

S

schutzgeist

4 min read
Monitoreo Docker con Grafana y Prometheus

Monitoreo de Docker con Grafana y Prometheus

Qué cubre este artículo

  • Métricas esenciales para contenedores Docker.
  • Prometheus, Grafana, cAdvisor y Node Exporter, explicados.
  • Ejemplo completo con Docker Compose para un stack de monitoreo.
  • Dashboards, alertas y recomendaciones prácticas.
  • Problemas comunes y cómo evitarlos.

Introducción: monitoreo de Docker con Grafana y Prometheus

Si ejecutas Ollama, Open WebUI u otros servicios en Docker, necesitas saber cuánto CPU, RAM, ancho de banda y almacenamiento consumen. Un stack de monitoreo con Prometheus, Grafana, cAdvisor y Node Exporter te muestra estos valores de forma clara. Así puedes detectar cuellos de botella antes de que los servicios fallen o se ralenticen.

Este artículo te guía a través de la configuración de estos componentes en Docker y cuáles son las métricas más relevantes para servicios de IA.

Términos clave

  • Prometheus: Base de datos de series temporales para métricas.
  • Grafana: Visualización de métricas y dashboards.
  • cAdvisor: Container Advisor, recopila métricas de contenedores Docker.
  • Node Exporter: Recopila métricas del host como CPU, RAM y disco.
  • Scrape: Extracción periódica de métricas.
  • Target: Destino desde el que Prometheus extrae datos.
  • Dashboard: Vista gráfica en Grafana.
  • Alert: Notificación cuando se supera un umbral.

Por qué el monitoreo es importante

  • Detectar cuellos de botella a tiempo.
  • Ver uso de CPU y RAM por contenedor.
  • Monitorear utilización de GPU en modelos de IA.
  • Seguir el I/O de red y disco.
  • Identificar tendencias a largo plazo.
  • Recibir alertas automáticas cuando algo falla.

Componentes

Prometheus

Prometheus almacena métricas como series temporales. Consulta periódicamente endpoints definidos y guarda los valores.

Grafana

Grafana se conecta a Prometheus y visualiza los datos en dashboards. Existen dashboards prefabricados para Docker, hosts y GPU.

cAdvisor

cAdvisor se ejecuta como contenedor y proporciona métricas detalladas de los contenedores Docker en ejecución. Incluye estadísticas de CPU, RAM, red y sistema de archivos.

Node Exporter

Node Exporter se ejecuta directamente en el host o como contenedor privilegiado y entrega métricas de hardware y sistema operativo.

Ejemplo con Docker Compose

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    ports:
      - "127.0.0.1:9090:9090"
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.path=/prometheus"
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "127.0.0.1:3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    restart: unless-stopped

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    privileged: true
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker:/var/lib/docker:ro
      - /dev/disk:/dev/disk:ro
    ports:
      - "127.0.0.1:8080:8080"
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - "--path.procfs=/host/proc"
      - "--path.rootfs=/rootfs"
      - "--path.sysfs=/host/sys"
    restart: unless-stopped

volumes:
  prometheus-data:
  grafana-data:

Configuración de Prometheus

prometheus.yml:

global:
  scrape_interval: 15s

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

  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']

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

Dashboards en Grafana

Una vez iniciado, accede a http://localhost:3000. Agrega Prometheus como fuente de datos. Puedes importar dashboards prefabricados usando su ID:

  • Docker: ID 11600
  • Node Exporter Full: ID 1860
  • cAdvisor: ID 14282

Métricas importantes para servicios de IA

  • container_cpu_usage_seconds_total: Consumo de CPU por contenedor.
  • container_memory_usage_bytes: Uso de RAM.
  • container_network_receive_bytes_total: Tráfico de red recibido.
  • container_fs_usage_bytes: Uso del almacenamiento.
  • nvidia_gpu_utilization: Utilización de GPU con Nvidia Exporter.
  • node_memory_MemAvailable_bytes: RAM disponible en el host.

Alertas

Grafana puede enviar notificaciones cuando los valores superan umbrales. Algunos ejemplos:

  • Un contenedor usa más del 90 por ciento de la RAM asignada.
  • La utilización de CPU es superior al 95 por ciento de forma sostenida.
  • El almacenamiento está por encima del 85 por ciento de capacidad.

Monitoreo de GPU

Para GPUs Nvidia puedes usar Nvidia DCGM Exporter o integrar nvidia-smi a través de Node Exporter. Las GPUs AMD requieren herramientas como rocm-smi o amdgpu-pro. Consulta nuestro artículo dedicado a monitoreo de GPU para más detalles.

Recomendaciones

  • Planifica el monitoreo desde el principio, no lo agregues después.
  • Haz backup de los volúmenes de Prometheus y Grafana.
  • No expongas públicamente si es posible, protege con VPN o autenticación.
  • Establece límites de recursos para que el monitoreo no sobrecargue el sistema.
  • Observa las tendencias a largo plazo para planificar el crecimiento.

Problemas comunes

  • cAdvisor sin privilegios: Faltan métricas de contenedores.
  • Rutas incorrectas en Node Exporter: Métricas incompletas.
  • Problemas de conectividad a Prometheus: Verifica nombres de contenedores y puertos.
  • Sin datos en Grafana: La fuente de datos no está configurada correctamente.
  • Dashboard no se ajusta: Los nombres de métricas pueden variar según la configuración.
  • Almacenamiento lleno: Los datos de Prometheus crecen, ajusta la retención.

Enlaces y recursos relacionados

FAQ: Monitoreo de Docker

¿Necesito los cuatro componentes? Para monitoreo básico, Prometheus, Grafana y cAdvisor son suficientes. Node Exporter complementa con métricas del host.

¿Cuántos recursos consume el monitoreo? Prometheus y Grafana son ligeros. cAdvisor puede usar algo de CPU.

¿Puedo monitorear GPUs Nvidia? Sí, con el exporter apropiado. Consulta el artículo sobre monitoreo de GPU.

¿Debo exponer Grafana públicamente? No, mantén acceso interno o a través de VPN.

¿Cómo preservo datos antiguos? Haz backup de volúmenes o usa almacenamiento remoto en Prometheus.

Fuentes y lecturas complementarias

Resumen: Monitoreo de Docker con Grafana y Prometheus

Un stack de monitoreo con Prometheus, Grafana, cAdvisor y Node Exporter te muestra cómo están siendo utilizados tus contenedores Docker y tu host. Para servicios de IA, CPU, RAM, red, almacenamiento y GPU son particularmente relevantes. Con dashboards prefabricados y alertas, detectarás cuellos de botella a tiempo. Lo importante es planificar el monitoreo desde el inicio, hacer backup de volúmenes y asegurar el acceso. Así mantendrás tu homelab e infraestructura de IA bajo control.

Volver al blog
Share:

Entradas relacionadas