🔥 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
- Crear una red personalizada en Docker para la comunicación entre los servicios.
- Ejecutar Prometheus, con configuración personalizada, mapeo de volúmenes para la persistencia de datos y solo exposición del puerto necesario.
- Ejecutar cAdvisor, para recolectar métricas sobre los contenedores en ejecución.
- Ejecutar Grafana, con un volumen persistente para la configuración y almacenamiento de dashboards.
- Configurar Prometheus para recopilar métricas de cAdvisor y presentarlas en Grafana.
- Validar que el sistema de monitoreo esté funcionando correctamente accediendo a la UI de Prometheus y Grafana.
- 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