Skip to main content

Installer mysqld_exporter

Pour superviser des bases de données il faut installer mysqld_exporter

Pour l'installer on télécharge la dernière version sur Github

cd /opt
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz

Ceci est la dernière version quand j'écris. Le mieux est de regarder ici si une autre version existe. 

Ou pour télécharger la dernière version automatiquement

curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest   | grep browser_download_url | grep linux-amd64 |  cut -d '"' -f 4 | wget -qi -

On extrait l'archive de mysqld_exporter

tar xvf mysqld_exporter-0.15.0.linux-amd64.tar.gz

On lui donne le droit de s'executer 

cd mysqld_exporter-0.15.0.linux-amd64
chmod +x mysqld_exporter

 On le met dans notre dossier Prometheus en créant aussi un dossier mysqld_exporter

mkdir /etc/prometheus/mysqld_exporter
mv mysqld_exporter /etc/prometheus/mysqld_exporter/

Dans notre serveur de base de données on créer simplement un utilisateur pour mysqld_exporter

CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 2;
GRANT PROCESS, SUPER, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';
FLUSH PRIVILEGES;
EXIT

On configure maintenant ces access dans un fichier caché

/etc/.mysqld_exporter.cnf

[client]
user=mysqld_exporter
password=StrongPassword

On lui applique ensuite le droit root et prometheus

chown root:prometheus /etc/.mysqld_exporter.cnf

On applique les droits sur le dossier mysqld_exporter 

chown -R prometheus:prometheus /etc/prometheus/mysqld_exporter/

 

On créer un service pour systemd

nano /etc/systemd/system/mysqld_exporter.service


[Unit]
Description=Prometheus MySQL Exporter
After=network.target
User=prometheus
Group=prometheus

[Service]
Type=simple
Restart=always
ExecStart=/etc/prometheus/mysqld_exporter/mysqld_exporter \
--config.my-cnf /etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target

On recharge le daemon de systemd et on lance mysqld_exporter et on l'active au démarrage

systemctl daemon-reload
systemctl enable --now mysqld_exporter

On ouvre le port 9104 avec ufw

ufw allow 9104
ufw reload

Dans notre prometheus on modifie notre configuration pour ajouter notre serveur de base de données.

 nano /etc/prometheus/prometheus.yml
  
  
  - job_name: 'mariadb-mysqld'
    static_configs:
      - targets: ['Localhost/IP:9104']
        labels:
          alias: db1

On redémarre notre prometheus et on devrait voir arriver nos metrics de base de données