Мониторинг 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.