Monitorear Docker con Prometheus, cAdvisor y Grafana

Índice de contenido
  1. Define qué quieres medir
  2. Recopila sin publicar todos los puertos
  3. Privilegios y mounts de cAdvisor
  4. Verifica antes de abrir Grafana
  5. Interpreta CPU y memoria correctamente
  6. Conecta Grafana y adapta dashboards
  7. Alertas y datos
  8. Preguntas frecuentes
    1. ¿Puedo sumar cualquier porcentaje de CPU?
    2. ¿Un dashboard vacío significa que Grafana falló?
    3. ¿Necesito publicar cAdvisor para que Prometheus lo consulte?
  9. En pocas palabras
  10. Conclusión
  11. Fuentes y documentación

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.

Fuentes y documentación

Documentación de prometheus.io.

Documentación de grafana.com.

Subir

Descubre más de Sergio Caballero

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Continuar leyendo