Настройка mysqld_exporter для Prometheus
Содержание
Установка
Открываем страницу релизов проекта по ссылке https://github.com/prometheus/mysqld_exporter/releases. Находим на странице архив для Linux с архитектурой AMD 64. На момент написания статьи это архив mysqld_exporter-0.18.0.linux-amd64.tar.gz. Скачиваем его:
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.18.0/mysqld_exporter-0.18.0.linux-amd64.tar.gz
Посмотрим, что есть в архиве:
$ tar tzvf mysqld_exporter-0.18.0.linux-amd64.tar.gz
drwxr-xr-x circleci/circleci 0 2025-09-29 13:53 mysqld_exporter-0.18.0.linux-amd64/
-rw-r--r-- circleci/circleci 11357 2025-09-29 13:52 mysqld_exporter-0.18.0.linux-amd64/LICENSE
-rwxr-xr-x circleci/circleci 18859034 2025-09-29 13:52 mysqld_exporter-0.18.0.linux-amd64/mysqld_exporter
-rw-r--r-- circleci/circleci 65 2025-09-29 13:52 mysqld_exporter-0.18.0.linux-amd64/NOTICE
Извлечём из архива исполняемый файл:
$ tar xzvf mysqld_exporter-0.18.0.linux-amd64.tar.gz mysqld_exporter-0.18.0.linux-amd64/mysqld_exporter
mysqld_exporter-0.18.0.linux-amd64/mysqld_exporter
Переместим его в каталог, откуда в дальнейшем будем запускать:
# mv mysqld_exporter-0.18.0.linux-amd64/mysqld_exporter /usr/local/bin/
Поменяем права доступа, чтобы файл принадлежал пользователю и группе root:
# chown root:root /usr/local/bin/mysqld_exporter
Удалим пустой каталог, оставшийся от файла, извлечённого из архива:
$ mysqld_exporter-0.18.0.linux-amd64
Можно также удалить и сам скачанный архив:
$ rm mysqld_exporter-0.18.0.linux-amd64.tar.gz
Настройка доступа
Создадим на сервере MySQL пользователя exporter
с паролем exp0rter_p4$$w0rd
:
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'exp0rter_p4$$w0rd' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
Я решил запускать mysqld_exporter
от имени отдельного непривелегированного пользователя, который будет иметь доступ только к своему файлу конфигурации. Создадим пользователя mysqld_exporter
и укажем при создании домашний каталог, в котором будет находиться файл .my.cnf
с настройками подключения к MySQL:
# useradd -M -d /usr/local/bin/ -r mysqld_exporter
Создадим сам файл /usr/local/bin/.my.cnf
с настройками подключения к MySQL:
[client]
user = exporter
password = exp0rter_p4$$w0rd
Отберём доступ к файлу у остальных пользователей, чтобы они не могли увидеть пароль, который хранится в этом файле:
# chmod o= /usr/local/bin/.my.cnf
Чтобы mysqld_exporter
, который будет запускаться от имени одноимённого пользователя mysqld_exporter
, имел доступ к файлу с настройками подключения, поменяем владельца и группу доступа к файлу:
# chown mysqld_exporter:mysqld_exporter /usr/local/bin/.my.cnf
Настройка запуска
Создадим service-файл /etc/systemd/system/mysqld_exporter.service
для управления запуском mysqld_exporter
средствами systemd
:
[Unit]
Description=MySQLd exporter for Prometheus
[Service]
Type=simple
User=mysqld_exporter
Group=mysqld_exporter
WorkingDirectory=/usr/local/bin/
ExecStart=/usr/local/bin/mysqld_exporter --collect.info_schema.processlist --collect.info_schema.innodb_metrics --collect.perf_schema.tablelocks --collect.perf_schema.eventswaits --collect.global_status --collect.engine_innodb_status
[Install]
WantedBy=multi-user.target
Для того, чтобы сообщить systemd
о появлении нового service-файла, выполним команду перезагрузки:
# systemctl daemon-reload
Включим сервис mysqld_exporter
, чтобы он запускался при включении компьютера или его перезагрузке:
# systemctl enable mysqld_exporter
Запустим сервис mysqld_exporter
прямо сейчас:
# systemctl start mysqld_exporter