Monitorear Docker con Prometheus, cAdvisor y Grafana
Para observar recursos de contenedores puedes combinar cAdvisor, Prometheus y Grafana. Cada pieza cumple una función diferente; un dashboard instalado no demuestra que estén llegando métricas correctas.
Utiliza un host dedicado de laboratorio para revisar mounts y privilegios. cAdvisor puede necesitar acceso sensible a información del host y su compatibilidad depende de runtime, cgroups y plataforma.
Define qué quieres medir
Empieza por CPU, memoria y red de un contenedor identificado. Decide si necesitas datos del host completo mediante otro exporter y evita atribuir a cAdvisor una cobertura universal.
Fija versiones compatibles de las imágenes. Revisa la ubicación oficial actual de cAdvisor en vez de conservar una referencia histórica a un registro sin comprobarla.
Recopila sin publicar todos los puertos
Configura una red interna de monitoreo. Prometheus puede consultar el exporter por nombre y puerto interno, sin hacer público el endpoint.
En prometheus.yml, una pieza de referencia es:
global:
scrape_interval: 15s
scrape_configs:
- job_name: contenedores
static_configs:
- targets: ["cadvisor:8080"]
El nombre debe coincidir con el servicio real. Verifica la ruta de métricas y los parámetros requeridos por la versión del exporter.
Privilegios y mounts de cAdvisor
La documentación puede requerir mounts de directorios del host y opciones adicionales según la plataforma. Revisa cada acceso: leer métricas no significa que sea apropiado montar todo el sistema en cualquier servidor.
No agregues privileged: true por ensayo y error sin conocer su alcance. Comprueba qué necesita tu versión y limita el uso al diseño autorizado.
Verifica antes de abrir Grafana
En Prometheus revisa el target y consulta:
up{job="contenedores"}
Después comprueba que existen métricas y etiquetas del contenedor que quieres observar. Si no están, investiga exporter, permisos y runtime; importar otro dashboard no crea la información faltante.
Interpreta CPU y memoria correctamente
Una consulta de CPU puede expresarse como uso de núcleos:
rate(container_cpu_usage_seconds_total[5m])
Multiplicar por 100 puede representar porcentaje de un núcleo, no de toda la máquina. Para compararlo con una capacidad, define explícitamente el denominador y agrega etiquetas de forma consciente.
Las métricas de memoria también tienen significados distintos: uso, working set, caché y límite no son intercambiables. Explica la consulta en el panel.
Conecta Grafana y adapta dashboards
Utiliza una URL de Prometheus alcanzable desde Grafana, por ejemplo el nombre del servicio en su red. No uses localhost para otro contenedor.
Revisa consultas, fuente y filtros de un dashboard importado. Un ID popular puede esperar etiquetas o versiones que no coinciden con tu instalación.
Alertas y datos
Define una alerta con duración y acción útil y pruébala bajo carga controlada. Un umbral de memoria no debe generar ruido constante por no considerar el límite real.
Conserva datos y configuración en almacenamiento apropiado, define retención y protege interfaces y credenciales. No publiques Prometheus, Grafana y cAdvisor indiscriminadamente a internet.
Preguntas frecuentes
¿Puedo sumar cualquier porcentaje de CPU?
No sin entender unidades, agregación y capacidad. Distingue uso de núcleos de porcentaje respecto al host o al límite asignado.
¿Un dashboard vacío significa que Grafana falló?
Puede faltar recopilación, una fuente correcta o etiquetas compatibles. Revisa las capas en orden.
¿Necesito publicar cAdvisor para que Prometheus lo consulte?
No cuando ambos tienen conectividad interna apropiada. Limita exposición a lo necesario.
En pocas palabras
El stack separa recopilación y visualización: cAdvisor expone métricas, Prometheus las conserva y Grafana las representa. Los permisos del exporter y el significado de cada consulta requieren revisión.
Conclusión
Comprueba un contenedor conocido y relaciona sus métricas con una actividad controlada. Documenta unidades y límites y protege paneles y acceso al host antes de ampliar el monitoreo.
Para continuar, revisa Docker: qué es y cómo usarlo para ejecutar contenedores y Cómo instalar Docker en Ubuntu 24.04: guía práctica paso a paso.
