Debian 9 Stretch : monitorer Nginx et MySQL grace à Munin

Dans 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 smiley

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.

Add new comment

You must have Javascript enabled to use this form.