DevGang
Авторизоваться

Мониторинг MySQL с помощью Prometheus и Grafana в Docker

Если вы хотите протестировать Prometheus для мониторинга сервера MYSQL и его интеграцию с Grafana, в этой статье вы узнаете, как запустить его в локальной среде с помощью контейнеров Docker, так как это может быть полезно для ознакомления с этим инструментом перед использованием его в производственной среде.

Запуск MySQL с использованием Docker

Для начала создайте сеть:

$ docker network create prom-network

Выполните следующую команду, чтобы запустить MySQL в контейнере:

$ docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root --network prom-network mysql:8.3.0

Запуск MySQL Server Exporter с помощью Docker

Судя по документации Prometheus, существует ряд библиотек и серверов, которые помогают экспортировать существующие метрики из сторонних систем в метрики Prometheus.

Некоторые из этих экспортеров поддерживаются в рамках официальной организации Prometheus на GitHub, они помечены как официальные, другие являются внешним вкладом и поддерживаются извне.

Для MySQL вы можете использовать официальный MySQL Server Exporter, который поддерживает:

  • MySQL >= 5.6.
  • MariaDB >= 10.3

Чтобы установить его, вы можете следовать инструкциям в репозитории GitHub, а также запустить его в контейнере Docker.

Сначала предоставьте экспортеру права доступа к базе данных. Войдите на свой сервер MySQL и выполните следующие запросы:

$ mysql -u root -p -h 127.0.0.1
CREATE USER 'exporter'@'%' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';

Затем создайте файл конфигурации (config.my-cnf), добавив в него данные для входа в систему следующим образом:

[client]
user = exporter
password = password

И наконец, инициализируйте контейнер:

$ docker run -p 9104:9104 --name exporter --network prom-network -v $(pwd)/config.my-cnf:/cfg/config.my-cnf prom/mysqld-exporter:main --config.my-cnf=/cfg/config.my-cnf

Запуск Prometheus в контейнере

После настройки экспортера запустите Prometheus в контейнере, но сначала создайте файл конфигурации(prometheus.yml). Вы можете начать с примера базовой конфигурации из документации и добавить конфигурацию, необходимую для экспортера, как описано в репозитории GitHub.

global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'mysql'

    params:
      auth_module: [client]

    scrape_interval: 5s

    static_configs:
      - targets: ['mysql:3306']

    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
          # The mysqld_exporter host:port
        replacement: exporter:9104

Теперь запустите контейнер:

$ docker run -p 9090:9090 --network prom-network --name prometheus -v ./prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

После запуска Prometheus вы можете зайти в браузер и посетить сайт http://localhost:9090, а если вы перейдете на сайт http://localhost:9090/targets, то увидите там список экспортеров.

Запуск Grafana с помощью Docker

Чтобы запустить Grafana с помощью Docker, просто введите следующую команду:

$ docker run -d --name=grafana --network prom-network -p 3000:3000 grafana/grafana-enterprise

Перейдите на localhost:3000 в браузере. Войдите в систему, используя стандартные учетные данные, admin в качестве пользователя и пароля.

И измените стандартный пароль.

В меню перейдите к Data sources в разделе Connections или перейдите непосредственно на http://localhost:3000/connections/datasources.

Нажмите кнопку Add data source, выберите Prometheus, введите http://prometheus:9090 в качестве URL-адреса сервера Prometheus и нажмите Save & test.

Теперь перейдите в раздел Dashboards из меню или перейдите непосредственно на http://localhost:3000/dashboards.

Нажмите на Create Dashboard, нажмите на Import dashboard, введите 14057, нажмите на Load и нажмите на Import.

Если всё прошло успешно, вы увидите следующее окно.

Заключение

После всех предыдущих шагов вы запустили сервер MySQL, за которым ведется наблюдение с помощью Prometheus и Grafana. Из этой статьи вы узнали, как запустить сервер MySQL, Prometheus и Grafana в локальной среде с помощью Docker.

Источник:

#MySQL #Docker
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу