Как настроить мониторинг загрузки процессора каждого докер-контейнера через cAdvisor и Grafana?
Мониторинг загрузки процессора Docker-контейнеров через cAdvisor и Grafana — стандартная практика в DevOps. Ниже приведена пошаговая инструкция.
## 1. Запуск cAdvisor
cAdvisor (Container Advisor) — инструмент от Google, который собирает метрики контейнеров в реальном времени. Запустите его командой:
docker run -d
—name=cadvisor
—volume=/:/rootfs:ro
—volume=/var/run:/var/run:ro
—volume=/sys:/sys:ro
—volume=/var/lib/docker/:/var/lib/docker:ro
—publish=8080:8080
gcr.io/cadvisor/cadvisor:latest
После запуска метрики будут доступны по адресу http://localhost:8080/metrics в формате Prometheus.
## 2. Настройка Prometheus
Создайте файл prometheus.yml:
yaml
global:
scrape_interval: 15s
scrape_configs:
— job_name: ‘cadvisor’
static_configs:
— targets: [‘cadvisor:8080’]
Запустите Prometheus:
docker run -d
—name=prometheus
-p 9090:9090
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml
prom/prometheus
## 3. Запуск Grafana
docker run -d
—name=grafana
-p 3000:3000
grafana/grafana
Откройте http://localhost:3000, войдите с логином admin / admin.
## 4. Подключение Prometheus как источника данных в Grafana
— Перейдите в Configuration → Data Sources → Add data source.
— Выберите Prometheus.
— В поле URL укажите http://prometheus:9090.
— Нажмите Save & Test.
## 5. Создание дашборда для мониторинга CPU
В Grafana создайте новую панель и используйте PromQL-запрос для отображения загрузки CPU по каждому контейнеру:
rate(container_cpu_usage_seconds_total{image!=»»}[1m]) * 100
Для группировки по имени контейнера добавьте label: `container_name` или `name`. Можно также импортировать готовый дашборд с ID 193 (Docker and system monitoring) или 14282 с сайта grafana.com.
## 6. Использование Docker Compose
Для удобства объедините все сервисы в docker-compose.yml:
yaml
version: ‘3’
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
volumes:
— /:/rootfs:ro
— /var/run:/var/run:ro
— /sys:/sys:ro
— /var/lib/docker/:/var/lib/docker:ro
ports:
— «8080:8080»
prometheus:
image: prom/prometheus
volumes:
— ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
— «9090:9090»
grafana:
image: grafana/grafana
ports:
— «3000:3000»
Запустите командой `docker-compose up -d`.
## Итог
В результате вы получите полноценный стек мониторинга: cAdvisor собирает метрики CPU каждого контейнера, Prometheus хранит их, а Grafana визуализирует в виде удобных графиков с разбивкой по контейнерам.
