1. Готовые Docker Compose стеки
Существуют популярные репозитории и конфигурации, которые включают Prometheus, Grafana и дополнительные экспортеры (например, node_exporter или mysqld_exporter) для мониторинга. Вот несколько примеров:
a. Репозиторий stefanprodan/dockprom
Этот проект предоставляет готовый Docker Compose стек для мониторинга хостов и контейнеров с использованием Prometheus, Grafana, cAdvisor, Node Exporter и Alertmanager.
- Репозиторий: [github.com/stefanprodan/dockprom](https://github.com/stefanprodan/dockprom)[](https://github.com/stefanprodan/dockprom)
- Компоненты:
- Prometheus (
prom/prometheus:v2.17.1в старых версиях, но можно обновить доv2.52.0). - Grafana (
grafana/grafana:7.2.0или новее). - Node Exporter (
prom/node-exporter:v0.18.1или новее, например,v1.9.1из вашего вопроса). - cAdvisor для мониторинга контейнеров.
- Alertmanager для обработки алертов.
- Установка:
git clone https://github.com/stefanprodan/dockprom
cd dockprom
export ADMIN_USER=admin
export ADMIN_PASSWORD=admin
docker-compose up -d
- Доступ:
- Grafana:
http://<host-ip>:3000admin/admin`).(логин/пароль: - Prometheus:
http://<host-ip>:9090`. - Особенности:
- Использует Caddy как обратный прокси (требуется хэшированный пароль для безопасности).
- Поддерживает мониторинг Docker-контейнеров и хоста.
- Для настройки
mysqld_exporterнужно добавить его вdocker-compose.ymlи настроитьprometheus.ymlдля скрейпинга MySQL-метрик.
b. Репозиторий vegasbrianc/prometheus
Еще один популярный проект для быстрого старта с Prometheus и Grafana.
- Репозиторий: [github.com/vegasbrianc/prometheus](https://github.com/vegasbrianc/prometheus)[](https://github.com/vegasbrianc/prometheus)
- Компоненты:
- Prometheus (
prom/prometheus:latest). - Grafana (
grafana/grafana:latest). - Node Exporter.
- cAdvisor.
- Установка:
git clone https://github.com/vegasbrianc/prometheus
cd prometheus
docker stack deploy -c docker-traefik-stack.yml traefik
- Особенности:
- Поддерживает интеграцию с Traefik для управления трафиком.
- Подходит для мониторинга Docker Swarm или одиночных хостов.
- Требуется ручная настройка для добавления
mysqld_exporter.
c. Пример Docker Compose из SigNoz
SigNoz предлагает руководство по настройке Prometheus и Grafana с использованием Docker Compose, включая cAdvisor и Loki для логов.
- Источник: [signoz.io](https://signoz.io/docs/tutorial/docker-monitoring)[](https://signoz.io/guides/how-to-monitor-docker-containers-with-prometheus-and-grafana/)
- Пример
docker-compose.yml:
version: '3.8'
services:
prometheus:
image: prom/prometheus:v2.52.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:10.2.2
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=your_password
volumes:
- grafana-storage:/var/lib/g Oct 4, 2023afana
restart: unless-stopped
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.47.2
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
volumes:
prometheus-data:
grafana-storage:
- Доступ:
- Grafana:
http://localhost:3000admin(логин:, пароль:your_password`). - Prometheus:
http://localhost:9090`. - Особенности:
- Использует тома для персистентности данных.
- Поддерживает добавление других экспортеров, таких как
mysqld_exporter.
2. Добавление mysqld_exporter в стек
Если вы хотите мониторить MySQL с помощью mysqld_exporter (как в вашем предыдущем вопросе), его можно интегрировать в любой из вышеуказанных стеков. Пример добавления mysqld_exporter в docker-compose.yml:
mysqld_exporter:
image: prom/mysqld-exporter:v0.17.2
container_name: mysqld_exporter
environment:
- DATA_SOURCE_NAME="exporter:password@tcp(mysql:3306)/"
ports:
- "9104:9104"
restart: unless-stopped
networks:
- monitoring
- Настройка
prometheus.yml:
Добавьте в prometheus.yml секцию для скрейпинга метрик MySQL:
scrape_configs:
- job_name: 'mysqld'
static_configs:
- targets: ['mysqld_exporter:9104']
- Требования:
- Убедитесь, что MySQL доступен по сети
monitoring. - Пользователь MySQL (
exporter) должен иметь права:GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.*. - Для версии 0.17.2 используйте
.my.cnfили аргументы командной строки вместоDATA_SOURCE_NAME, как указано в сравнении версий.
3. Простой минималистичный Docker Compose
Если вам нужен минимальный стек только с Prometheus и Grafana, вот пример конфигурации:
version: '3.8'
services:
prometheus:
image: prom/prometheus:v2.52.0
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:10.2.2
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana-data:/var/lib/grafana
restart: unless-stopped
volumes:
prometheus-data:
grafana-data:
- Шаги:
1. Создайте файл prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
2. Запустите: docker-compose up -d.
3. Доступ:
- Grafana:
http://localhost:3000admin(логин:, пароль:admin`). - Prometheus:
http://localhost:9090`.
4. В Grafana добавьте Prometheus как источник данных (http://prometheus:9090`).
4. Рекомендации и советы
- Версии экспортеров: Если вы используете
node_exporter(например, v1.9.1) илиmysqld_exporter(v0.17.2), убедитесь, что они совместимы с версией Prometheus. Например, Prometheus v2.52.0 работает с последними версиями экспортеров. - Безопасность:
- Измените стандартные пароли Grafana (
GF_SECURITY_ADMIN_PASSWORD). - Для production используйте reverse-прокси (например, Traefik или Caddy) с SSL.
- Ограничьте доступ к портам (9090 для Prometheus, 9104 для
mysqld_exporter, 9100 дляnode_exporter). - Персистентность: Всегда используйте тома (
prometheus-data,grafana-data) для сохранения данных. - Мониторинг MySQL: Для
mysqld_exporterнастройте параметры, такие как--lock_wait_timeout, чтобы избежать блокировок на больших базах данных. - Готовые дашборды: В Grafana импортируйте дашборды для
node_exporter(ID 1860) илиmysqld_exporter(например, ID 7362) с [grafana.com/dashboards](https://grafana.com/grafana/dashboards).
5. Альтернативы
- SigNoz: Альтернатива Grafana, объединяющая метрики, логи и трассировку в одном решении. Поддерживает Docker Compose и интегрируется с Prometheus. [signoz.io](https://signoz.io)[](https://signoz.io/guides/how-to-monitor-docker-containers-with-prometheus-and-grafana/)
- Grafana Cloud: Если не хотите управлять инфраструктурой, используйте Grafana Cloud с бесплатным тарифом (до 10k метрик).[](https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/)
- Helm для Kubernetes: Если вы используете Kubernetes, рассмотрите
kube-prometheus-stack, который включает Prometheus, Grafana и экспортеры.[](https://bogotobogo.com/DevOps/Docker/Docker_Prometheus_Grafana.php)
Вывод
Готовые Docker Compose стеки для Prometheus и Grafana широко доступны и хорошо документированы. Для вашего случая, учитывая интерес к mysqld_exporter и node_exporter, рекомендую использовать конфигурацию из stefanprodan/dockprom или минимальный стек, описанный выше, с добавлением mysqld_exporter. Это позволит быстро развернуть мониторинг MySQL и хоста.
[file-name 000174_2025-07-17_17-46-18.txt]