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>:3000 (логин/пароль: admin/admin`).
  • Prometheus: http://<host-ip>:9090`.
  • Особенности:
  • Использует Caddy как обратный прокси (требуется хэшированный пароль для безопасности).
  • Поддерживает мониторинг Docker-контейнеров и хоста.
  • Для настройки mysqld_exporter нужно добавить его в docker-compose.yml и настроить prometheus.yml для скрейпинга MySQL-метрик.

b. Репозиторий vegasbrianc/prometheus

Еще один популярный проект для быстрого старта с Prometheus и Grafana.

  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 для логов.

  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:

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. Доступ:

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. Альтернативы

Вывод

Готовые Docker Compose стеки для Prometheus и Grafana широко доступны и хорошо документированы. Для вашего случая, учитывая интерес к mysqld_exporter и node_exporter, рекомендую использовать конфигурацию из stefanprodan/dockprom или минимальный стек, описанный выше, с добавлением mysqld_exporter. Это позволит быстро развернуть мониторинг MySQL и хоста.

[file-name 000174_2025-07-17_17-46-18.txt]