https://grafana.com/oss/prometheus/exporters/mysql-exporter/?tab=installation
Сначала ставим сам экспортер, в докере или прямо на машину. Если сразу на машину (под отдельным юзером, никогда не пускаем софт без особой нужды под рутом)
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar -zxvf mysqld_exporter*
Теперь нужен юзер в БД.
Учитываем, что тут есть аж несколько вариантов, в доке указан такой
#CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'enter_password_here' WITH MAX_USER_CONNECTIONS 3;
но в марии 10.1 и 10.2 оно не сработает, потому что в 10.2 надо писать WITH MAX_USER_CONNECTIONS до пароля, а в 10.1 делать в 2 шага так
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'pass';
GRANT PROCESS, REPLICATION CLIENT, SELECT
ON *.* TO 'exporter'@'localhost' WITH MAX_USER_CONNECTIONS 3;
flush privileges
https://stackoverflow.com/questions/56038119/cannot-create-user-in-mariadb-with-max-user-connections
Теперь настройка экспортера
# !! quotes in export string (DATA..) but NOT in .service!
sudo systemctl edit --full mysqld_exporter.service
[Unit]
Description=Mysql Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Environment=DATA_SOURCE_NAME=exporter:pass@(localhost:3306)/
ExecStart=/home/prometheus/mysqld_exporter/mysqld_exporter
[Install]
WantedBy=default.target
Если мы делаем просто экспорт DATA_SOURCE_NAME то нужно брать строку в кавычки, но если пишем сервис или компоуз файл то там кавычек не должно быть
https://github.com/prometheus/mysqld_exporter/issues/440
https://alexkunin.medium.com/prometheus-mysqld-exporter-and-access-denied-errors-8e4d3e54f0af
Можно вынести переменную и в файл, подключать через EnvironmentFile=/etc/systemd/system/mysqld_exporter.env
И проверка
curl http://localhost:9104/metrics
curl -s http://localhost:9104/metrics | grep mysql_up
если у второго запроса пусто - смотрим логи и пароли.
Теперь в prometheus.yml добавляем секцию
- job_name: 'mysqld_exporter'
static_configs:
- targets: ['localhost:9104']
И дашборд - их много, например
https://grafana.com/grafana/dashboards/14057
https://github.com/percona/grafana-dashboards
https://grafana.com/grafana/dashboards/7365
https://grafana.com/grafana/dashboards/7362
И пример с докером
docker pull prom/mysqld-exporter
docker rm -f mysqld-exporter
docker run -d \
--name mysqld-exporter \
-v /etc/timezone:/etc/timezone \
-v /etc/localtime:/etc/localtime \
-p 9104:9104 \
-e DATA_SOURCE_NAME="exporter:password@(192.168.1.1:3306)/" \
--restart=unless-stopped \
prom/mysqld-exporter
docker logs -f --tail 10 mysqld-exporter
Комментариев нет:
Отправить комментарий