LogNotes

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 и хоста.
← Previous Next →
Back to list