Настройка 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

Использованные материалы