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, 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