Debian 9 Stretch : monitorer Nginx et MySQL grace à Munin
dim, 07/16/2017 - 18:11 — geek17Dans la continuité des 2 articles précédents sur l'installation et l'optimisation de Munin, nous allons à présent configurer 2 plugins pour monitorer :
- les trafics nginx
- les transactions MySQL
Affichage des Plugins et des dépendances
Munin dispose d'une commande bien pratique qui permet d'afficher les plugins disponibles et/ou actifs ainsi que les dépendances de ceux-ci.
sudo munin-node-configure --suggest
Vous obtiendrez un résultat que j'ai résumé à quelques lignes ci-dessous.
A priori, pour nginx et mysql, il manque des trucs...
Plugin | Used | Suggestions
------ | ---- | -----------
....
cpu | yes | yes
diskstats | yes | yes
....
mysql_ | no | no [Missing dependency Cache::Cache]
....
nginx_request | no | no [LWP::UserAgent not found]
nginx_status | no | no [LWP::UserAgent not found]
....
Installation des plugins Nginx
Pour Nginx, le message [LWP::UserAgent not found] indique qu'une librairie est manquante, en l'occurrence : libwww-perl.
On installe donc cette librairie
sudo apt-get install libwww-perl
Puis on lance à nouveau sudo munin-node-configure --suggest pour voir si le problème est résolu.
sudo munin-node-configure --suggest | grep nginx
nginx_request | no | no [no nginx status on http://localhost/nginx_status]
nginx_status | no | no [no nginx status on http://localhost/nginx_status]
Gagné... sauf qu'il y a une autre erreur maintenant.
C'est normal car il faut indiquer à Nginx de fournir des informations via l'url http://localhost/nginx_status
Pour cela, on ouvre la configuration du vHost par défaut
sudo nano /etc/nginx/conf.d/default.conf
Et on ajoute la configuration suivante dans la partie server { }
location /nginx_status {
stub_status on; # return basic status information
access_log off;
allow 127.0.0.1; # restrict access to local only
deny all;
}
Puis on redémarre Nginx pour activer la modification.
sudo service nginx restart
Si on relance à nouveau sudo munin-node-configure --suggest pour vérifier notre correction.
sudo munin-node-configure --suggest | grep nginx
Cette fois, c'est tout bon
nginx_request | no | yes
nginx_status | no | yes
On peut donc ajouter nos 2 plugins Nginx à la configuration de Munin.
Pour cela, on crée un lien symbolique entre le dossier des plugins Munin en cours d'utilisation (/etc/munin/plugins/) et l'emplacement des plugins disponibles ( /usr/share/munin/plugins/)
sudo ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status
sudo ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request
Et on redémarre Munin pour activer les nouveaux plugins.
sudo service munin-node restart
Attendez 5 minutes, pour que Munin rafraichisse ses données, et vous verrez apparaitre une nouvelle catégorie nginx.
Installation des plugins MySQL
Pour MySQL, nous avons le message qui indique lui aussi qu'une librairie est manquante : libcache-cache-perl
On installe donc cette librairie, ainsi que la librairie libdbd-mysql-perl qui est nécessaire au bon fonctionnement du script MySQL de munin.
sudo apt-get install libcache-cache-perl libdbd-mysql-perl
Puis on lance à nouveau sudo munin-node-configure --suggest pour voir si le problème est résolu
sudo munin-node-configure --suggest | grep mysql
mysql_ | no | yes (+bin_relay_log +commands +connections +files_tables +innodb_bpool +innodb_bpool_act +innodb_insert_buf +innodb_io +innodb_io_pend +innodb_log +innodb_rows +innodb_semaphores +innodb_tnx +myisam_indexes +network_traffic +qcache +qcache_mem +replication +select_types +slow +sorts +table_locks +tmp_tables)
Gagné... et on voit apparaitre pas mal de plugins complémentaires.
Nous allons créer un utilisateurs MySQL qui sera utilisé par Munin pour obtenir des informations sur la base de données.
Pour cela, comme d'habitude, on se connecte à MySQL en lignes de commande.
mysql -u root -p
Puis on exécute les requêtes suivantes pour créer notre utilisateur avec les droits d'accès associés. Pensez à remplacer le mot de passe MuninPassword01 par celui de votre choix.
CREATE USER 'munin-user'@'localhost' IDENTIFIED BY 'MuninPassword01';
GRANT SUPER, PROCESS ON *.* TO 'munin-user'@'localhost';
GRANT SELECT ON mysql.* TO 'munin-user'@'localhost';
FLUSH PRIVILEGES;
Il faut à présent modifier le fichier de configuration du script MySQL de Munin pour lui indiquer l'utilisateur à utiliser.
sudo nano /etc/munin/plugin-conf.d/munin-node
Puis ajouter les infos suivantes à la fin du fichier (n'oubliez pas d'ajuster le mot de passe à votre config)
[mysql_*]
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306
env.mysqluser munin-user
env.mysqlpassword MuninPassword01
Il nous reste maintenant à activer les plugins...
Dans mon cas, c'est le plugin permettant de voir le nombre de connexions sur la base de données qui m'intéresse.
Pour l'activer, son nom est mysql_connections : vous avez compris qu'il suffit d'indiquer le préfix mysql_ devant le plugin disponible pour l'activer.
Comme pour les plugins nginx, on crée un lien symbolique entre le dossier des plugin Munin en cours d'utilisation (/etc/munin/plugins/) et l'emplacement des plugins disponibles ( /usr/share/munin/plugins/).
Attention, le nom du Plugin source est toujours mysql_ mais la destination contient le nom du plugin en suffix mysql_connections
sudo ln -s /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_connections
Et on redémarre Munin pour activer le nouveau plugin
sudo service munin-node restart
Attendez 5 minutes, pour que Munin rafraichisse ses données, et vous verrez apparaitre une catégorie mysql2.