2025-07-17 17:46:18
существуют готовые решения для запуска **Prometheus** и **Grafana** в Docker, включая Docker Compose конфигурации, которые объединяют оба инструмента в одном стеке. Такие решения упрощают развертывание и настройку мониторинга. Ниже я опишу несколько подходов и примеров, включая популярные репозитории и конфигурации, а также учту контекст вашего предыдущего вопроса о `mysqld_exporter` и `node_exporter`.
### 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 для обработки алертов.
- **Установка**:
```bash
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>:3000` (логин/пароль: `admin/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.
- **Установка**:
```bash
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`**:
```yaml
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:3000` (логин: `admin`, пароль: `your_password`).
- Prometheus: `http://localhost:9090`.
- **Особенности**:
- Использует тома для персистентности данных.
- Поддерживает добавление других экспортеров, таких как `mysqld_exporter`.
### 2. Добавление `mysqld_exporter` в стек
Если вы хотите мониторить MySQL с помощью `mysqld_exporter` (как в вашем предыдущем вопросе), его можно интегрировать в любой из вышеуказанных стеков. Пример добавления `mysqld_exporter` в `docker-compose.yml`:
```yaml
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:
```yaml
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, вот пример конфигурации:
```yaml
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`:
```yaml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
```
2. Запустите: `docker-compose up -d`.
3. Доступ:
- Grafana: `http://localhost:3000` (логин: `admin`, пароль: `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 и хоста.
Back to list