пятница, 5 ноября 2021 г.

Prometheus mysqld_exporter

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



Комментариев нет:

Отправить комментарий