Hola, hoy os voy a enseñar a crear un Docker para monitorización del servidor y de los contenedores Docker que tengamos desplegados.
Para ello vamos a utilizar:
Grafana:
Grafana es una plataforma de análisis y visualización de datos de código abierto. Permite conectar y visualizar datos de diferentes fuentes en una única interfaz gráfica de usuario.
Grafana es muy popular entre los equipos de operaciones de tecnología (devops) porque les permite monitorear y analizar el rendimiento de sus aplicaciones y sistemas. Los usuarios pueden crear paneles de control personalizados que muestren información importante en tiempo real, como el uso de la CPU, la memoria, la latencia de red, etc.
Grafana es compatible con una amplia variedad de fuentes de datos, incluidas bases de datos SQL y NoSQL, servicios en la nube, herramientas de monitoreo, sistemas de registro y más. Además, cuenta con una gran cantidad de plugins y herramientas de integración que permiten extender sus capacidades y personalizar su uso según las necesidades específicas de cada usuario.
Prometheus:
Prometheus es un sistema de monitoreo y alerta de código abierto diseñado para monitorear servicios y aplicaciones en entornos de nube y contenedores. Fue desarrollado por SoundCloud y se convirtió en un proyecto de la Cloud Native Computing Foundation (CNCF) en 2016.
Prometheus recopila métricas de diferentes fuentes, como servicios y aplicaciones en ejecución, y almacena los datos en una base de datos de series temporales. Luego, se puede usar para visualizar y analizar los datos recopilados y establecer alertas en caso de que ocurra alguna condición anómala.
Prometheus es especialmente adecuado para entornos de nube y contenedores porque está diseñado para ser altamente escalable y para trabajar con sistemas distribuidos. También cuenta con una gran cantidad de bibliotecas y herramientas de integración que facilitan la recopilación de métricas de diferentes fuentes.
Prometheus se ha convertido en una herramienta de monitoreo muy popular en la comunidad de DevOps y se utiliza ampliamente en entornos de nube y contenedores.
Node Exporter:
Node_exporter es un componente de Prometheus que se utiliza para recopilar métricas del sistema operativo y los servicios en un host. Es una herramienta de código abierto que se ejecuta como un servicio en segundo plano y expone métricas en un formato que puede ser recopilado por Prometheus.
Node_exporter recopila información sobre el uso de CPU, memoria, disco, red y otros recursos del sistema operativo en el que se está ejecutando. También recopila información sobre los servicios que se ejecutan en el host, como el número de solicitudes HTTP por segundo, el tiempo de respuesta y otras estadísticas relevantes.
Una vez que se han recopilado las métricas de Node_exporter, se pueden visualizar y analizar en Grafana, la herramienta de visualización de Prometheus. Esto permite a los usuarios monitorear y comprender el rendimiento de los sistemas y servicios en tiempo real, lo que les permite tomar decisiones informadas sobre la capacidad y la optimización de recursos.
Node_exporter es una herramienta muy útil para los equipos de operaciones de tecnología (devops) que necesitan monitorear el rendimiento de sus sistemas y servicios en entornos de nube y contenedores.
cAdvisor:
cAdvisor (Container Advisor) es una herramienta de monitorización de contenedores de código abierto desarrollada por Google. cAdvisor se ejecuta como un demonio en cada host de contenedor y recopila información sobre los recursos de contenedor, como el uso de CPU, memoria, red y almacenamiento.
cAdvisor también proporciona información sobre los recursos del sistema operativo del host, como la carga de la CPU, la memoria y el uso del disco. Utilizando esta información, cAdvisor es capaz de proporcionar una visión detallada de los recursos utilizados por los contenedores y el rendimiento general del sistema.
cAdvisor puede ser utilizado en combinación con otras herramientas de monitorización, como Prometheus y Grafana, para visualizar y analizar los datos recopilados. Además, cAdvisor también puede generar alertas para detectar condiciones anómalas en el uso de los recursos de los contenedores.
En resumen, cAdvisor es una herramienta útil para los equipos de operaciones de tecnología (devops) que necesitan supervisar el rendimiento de los contenedores en tiempo real y tomar medidas para optimizar el uso de los recursos y garantizar la disponibilidad del servicio.
Para juntar todos estos servicios vamos a utilizar el siguiente contenedor docker-compose.yml
version: "3.1" services: grafana: image: grafana/grafana container_name: grafana restart: unless-stopped volumes: - ./config/grafana/data:/var/lib/grafana ports: - 3000:3000 networks: - docker-network prometheus: image: prom/prometheus container_name: prometheus restart: unless-stopped volumes: - ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - ./config/prometheus/data:/prometheus ports: - 9090:9090 command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=1y' - '--web.enable-lifecycle' networks: - docker-network node_exporter: image: quay.io/prometheus/node-exporter:latest container_name: node_exporter restart: unless-stopped ports: - 9100:9100 command: - '--path.rootfs=/host' pid: host volumes: - './config/node_exporter:/host:ro,rslave' networks: - docker-network cadvisor: image: gcr.io/cadvisor/cadvisor:v0.47.0 container_name: cadvisor restart: unless-stopped expose: - 8080 volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro networks: - docker-network networks: docker-network: driver: bridge external: true
Primero levanta un Grafana por el puerto 3000 (recomiendo no exponer el puerto públicamente, sino utilizar un proxy (https://devcodelight.com/certificados-ssl-lets-encrypt-en-docker-usando-nginx-proxy-manager/)
Después levanta Prometheus para interpretar los datos de node_exporter y cadvisor.
Para la configuración de Prometheus tenemos que utilizar este archivo
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
Con este contenido, prometheus.yml:
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['prometheus:9090'] - job_name: 'cadvisor' static_configs: - targets: ['cadvisor:8080'] - job_name: 'node_exporter' static_configs: - targets: ['node_exporter:9100']
Una vez levantado, podemos configurar los dashboard usando estos panel id (https://grafana.com/grafana/dashboards/)
Panel id | Descripción |
---|---|
1860 | Node exporter: muestra información de la CPU y sistema |
13946 | Cadvisor: muestra información de contenedores Docker |
Antes tendremos que añadir prometheus en orígenes de datos:
Con la configuración http://prometheus:9090
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
2 comentarios en «Docker para monitorización Grafana + Prometheus + Node_exporter + Cadvisor»