Skip to content

🔥 Challenge: Implementación de un Sistema de Monitoreo con Prometheus, cAdvisor y Grafana en Docker

Objetivo

🎯 El reto es desplegar un sistema de monitoreo utilizando únicamente contenedores Docker, sin docker-compose, para monitorear contenedores y métricas del sistema con Prometheus, cAdvisor y Grafana.

📢 Enunciado

  1. Crear una red personalizada en Docker para la comunicación entre los servicios.
  2. Ejecutar Prometheus, con configuración personalizada, mapeo de volúmenes para la persistencia de datos y solo exposición del puerto necesario.
  3. Ejecutar cAdvisor, para recolectar métricas sobre los contenedores en ejecución.
  4. Ejecutar Grafana, con un volumen persistente para la configuración y almacenamiento de dashboards.
  5. Configurar Prometheus para recopilar métricas de cAdvisor y presentarlas en Grafana.
  6. Validar que el sistema de monitoreo esté funcionando correctamente accediendo a la UI de Prometheus y Grafana.
  7. Agregar el Dashboard de Grafana: https://grafana.com/grafana/dashboards/19908-docker-container-monitoring-with-prometheus-and-cadvisor/

Criterios de Éxito:

  • Los contenedores deben iniciar correctamente y mantenerse en ejecución.
  • Prometheus debe poder recolectar métricas de cAdvisor sin errores de conexión.
  • Grafana debe estar accesible en el puerto 30080 y debe permitir la configuración de Prometheus como fuente de datos.
  • No se debe exponer más puertos de los necesarios.

🛠️ Recursos:

  • Puedes utilizar el siguiente comando para exponer y acceder al sitio web de Grafana desde el navegador web.
    HOST_EXTERNAL_IP=$(curl -s http://showip.net)
    echo http://$HOST_EXTERNAL_IP:30080
    
  • Puedes utilizar el siguiente archivo de configuración de Prometheus
    global:
      scrape_interval: 15s
    
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
          - targets: ['localhost:9090']
    
      - job_name: 'cadvisor'
        static_configs:
          - targets: ['cadvisor:8080']
    
  • Prometheus utiliza el siguiente archivo para su configuración: /etc/prometheus/prometheus.yml
  • Usar las siguientes imágenes de conteendores: prom/prometheus:v3.2.1, gcr.io/cadvisor/cadvisor:v0.49.1 y grafana/grafana-oss:11.5.2
  • CAdvisor necesita montar los siguientes volúmenes:
    -v /:/rootfs:ro
    -v /var/run:/var/run:rw
    -v /sys:/sys:ro
    -v /var/lib/docker/:/var/lib/docker:ro