2016-12-28 16:25:51 +01:00
---
categories: web
2022-07-07 10:03:43 +02:00
title: Howto Munin
2016-12-28 16:25:51 +01:00
...
2021-11-24 17:46:36 +01:00
* [Documentation générale ](http://munin-monitoring.org/wiki/Documentation )
* [Détails sur les légendes ](http://demo.munin-monitoring.org/munin-monitoring.org/demo.munin-monitoring.org/ )
2016-12-28 16:14:24 +01:00
2021-11-24 18:21:03 +01:00
# Installation
2016-12-28 16:14:24 +01:00
2021-12-15 11:42:49 +01:00
## Debian
2016-12-28 16:14:24 +01:00
~~~
2021-11-24 17:46:36 +01:00
# apt install munin
2016-12-28 16:14:24 +01:00
~~~
2021-12-15 11:42:49 +01:00
## OpenBSD
~~~
# pkg_add munin-node munin-server
~~~
2016-12-28 16:14:24 +01:00
2021-11-24 18:21:03 +01:00
# Fonctionnement
2016-12-28 16:14:24 +01:00
2021-11-24 17:46:36 +01:00
Munin a une architecture 1 master - n nodes.
2016-12-28 16:14:24 +01:00
2021-11-24 18:21:03 +01:00
Le cron `/etc/cron.d/munin` s'exécute toutes les 5 minutes sur le master. Il interroge les nodes listés dans `/etc/munin/munin.conf` (par défaut uniquement localhost.localdomain) sur leur port `4949` et récupère les données d'état du node. Les nodes ne stockent aucune donnée.
2016-12-28 16:14:24 +01:00
2021-11-24 18:21:03 +01:00
Puis, il met à jour ses fichiers de données RRD stockés dans `/var/lib/munin` , et génère des graphiques (images PNG).
2016-12-28 16:14:24 +01:00
2021-11-24 17:46:36 +01:00
Les graphiques PNG sont stockés dans `/var/cache/munin` et sont affichés dans des pages HTML, également générées.
2016-12-28 16:14:24 +01:00
2021-11-24 17:48:50 +01:00
Le node peut être sur la même machine que le master, dans ce cas l'installation est purement locale.
2019-03-27 17:13:18 +01:00
2021-11-24 17:48:50 +01:00
Note : D'un point de vue réseau, ce sont les nodes qui ont le statut de serveur et le master qui se connecte en client sur leur port `4949` .
2019-03-27 17:13:18 +01:00
2016-12-28 16:14:24 +01:00
2021-11-24 18:21:03 +01:00
## Fichiers RRD
2016-12-28 16:14:24 +01:00
2021-11-24 17:46:36 +01:00
Les fichiers RRD sont les données les plus importantes car ils stockent toutes les valeurs passées.
2016-12-28 16:14:24 +01:00
À chaque plugin est associé un ou plusieurs fichiers RRD.
~~~
2016-12-28 16:23:12 +01:00
$ ls *load-*
2016-12-28 16:14:24 +01:00
localhost.localdomain-load-load-g.rrd
2016-12-28 16:23:12 +01:00
$ ls *cpu-*
2016-12-28 16:14:24 +01:00
localhost.localdomain-cpu-idle-d.rrd localhost.localdomain-cpu-iowait-d.rrd localhost.localdomain-cpu-irq-d.rrd localhost.localdomain-cpu-nice-d.rrd
localhost.localdomain-cpu-softirq-d.rrd localhost.localdomain-cpu-steal-d.rrd localhost.localdomain-cpu-system-d.rrd localhost.localdomain-cpu-user-d.rrd
~~~
Si vous n'avez que les fichiers RRD (cas d'une sauvegarde par exemple), vous pouvez recréer des graphes via _rrdtool_ .
Voici un exemple pour tracer un graphe de load sur un intervalle passé :
~~~
2016-12-28 16:23:12 +01:00
$ rrdtool graph foo.png -a PNG --start -15d --end -4d --width 800 --height 800 'DEF:load=localhost.localdomain-load-load-g.rrd:42:AVERAGE' 'LINE1:load#ff0000:Load' -l 0 -u 1
2016-12-28 16:14:24 +01:00
~~~
2019-12-16 12:06:04 +01:00
2021-11-24 18:21:03 +01:00
# Configuration
2021-11-24 17:46:36 +01:00
2021-11-24 18:21:03 +01:00
## Configurer le master
2021-11-24 17:46:36 +01:00
Le fichier `/etc/munin/munin.conf` permet de configurer le master.
Par défaut les graphiques sont générés dans `/var/cache/munin/www` . On peut soit le changer, soit faire un lien symbolique dans `/var/www` .
Pour changer le nom d'hôte :
2019-12-16 12:06:04 +01:00
~~~
2021-11-24 17:46:36 +01:00
[monserveur.mondomaine.com]
address 127.0.0.1
use_node_name yes
2019-12-16 12:06:04 +01:00
~~~
2021-11-24 17:46:36 +01:00
2021-11-24 18:21:03 +01:00
## Ajouter un node
2021-11-24 17:46:36 +01:00
**Sur le node :**
Le fichier `/etc/munin/munin-node.conf` permet de configurer un node.
D'abord, il faut autoriser l'IP du master à ce connecter dans `/etc/munin/munin-node.conf` . Par défaut, on a seulement l'IP locale `127.0.0.1` :
~~~
allow ^127\.0\.0\.1$
allow ^X\.Y\.Z\.W$ # < -- IP du master
~~~
Attention, la directive `allow` n'accepte que des regex !
Puis, redémarrer le service `munin-node` :
~~~
# systemctl restart munin-node
~~~
Dans le firewall du node, il faut ajouter l'IP du master sur le port 4949 en entrée :
2019-12-16 12:06:04 +01:00
~~~
2021-11-24 17:46:36 +01:00
/sbin/iptables -A INPUT -p tcp --dport 4949 -s X.Y.Z.W -j ACCEPT # < -- IP du master
2019-12-16 12:06:04 +01:00
~~~
2021-11-24 17:46:36 +01:00
**Sur le master :**
Ajouter les directives suivantes à la configuration du master :
2019-12-16 12:06:04 +01:00
~~~
2021-11-24 17:46:36 +01:00
# vim /etc/munin/munin.conf
[client.foo.com] # < -- nom du node dans Munin
address A.B.C.D # < -- IP du node
2019-12-16 12:06:04 +01:00
use_node_name yes
~~~
2021-11-24 17:46:36 +01:00
Il n'y a pas de service à redémarrer. Il faut attendre 5 minutes ou lancer le cron manuellement en tant qu'utilisateur munin :
~~~
sudo -u munin -- /usr/bin/munin-cron
~~~
Dans le firewall du master, il faut ouvrir le port 4949 en sortie :
~~~
2024-04-26 15:15:40 +02:00
/sbin/iptables -A INPUT -p tcp --sport 4949 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
2021-11-24 17:46:36 +01:00
~~~
2019-12-16 12:06:04 +01:00
2021-12-15 11:42:49 +01:00
## Configuration sous OpenBSD
Sous OpenBSD, le cron n'est pas installé par défaut et il faut l'ajouter manuellement :
~~~
# crontab -l -u _munin
*/5 * * * * /usr/local/bin/munin-cron > /dev/null
~~~
Après l'avoir ajouté, le lancer une première fois manuellement pour s'assurer que c'est fonctionnel :
~~~
# doas -u _munin /usr/local/bin/munin-cron
~~~
Attention, aucun plugin n'est installé par défaut. Voir [#ajouter-un-plugin]()
2019-12-16 12:06:04 +01:00
2021-12-15 12:06:44 +01:00
Activer et démarrer ensuite munin_node :
~~~
# rcctl enable munin_node
# rcctl start munin_node
~~~
2021-11-24 18:21:03 +01:00
# Intégration avec un serveur web
2016-12-28 16:14:24 +01:00
2021-11-24 18:21:03 +01:00
Munin 2 permet de zoomer sur les graphiques.
2016-12-28 16:14:24 +01:00
Pour que cela fonctionne il faut faire tourner un démon FastCGI et le script munin-cgi-graph.
2021-11-24 18:21:03 +01:00
## Intégration avec Nginx
2016-12-28 16:14:24 +01:00
2022-03-15 15:57:59 +01:00
Adapter les droits de `/var/log/munin/munin-cgi` et vérifier s'il y a des fichiers manquants pour les zoom :
2016-12-28 16:14:24 +01:00
2021-10-15 11:26:38 +02:00
~~~ { .bash }
2022-03-15 15:57:59 +01:00
touch /var/log/munin/munin-cgi-graph.log
2021-10-15 11:26:38 +02:00
chown www-data:munin /var/log/munin/munin-cgi-*
chmod 660 /var/log/munin/munin-cgi-*
2016-12-28 16:14:24 +01:00
~~~
De même pour `/etc/logrotate.d/munin` , section `/var/log/munin/munin-cgi-graph.log` :
~~~
create 660 www-data munin
~~~
2021-10-15 11:26:38 +02:00
Installer les dépendances pour démarrer le démon :
2016-12-28 16:14:24 +01:00
2021-10-15 11:26:38 +02:00
~~~ { .bash }
apt install libcgi-fast-perl spawn-fcgi
2016-12-28 16:14:24 +01:00
~~~
2018-12-17 17:30:24 +01:00
2021-10-15 11:26:38 +02:00
Créer une unité systemd pour gérer le démon :
2016-12-28 16:14:24 +01:00
2021-10-15 11:26:38 +02:00
~~~ { .bash }
tee > /etc/systemd/system/spawn-fcgi-munin-graph.service < < 'eof'
2016-12-28 16:14:24 +01:00
[Unit]
Description=Munin zoom for nginx.
After=network.target
[Service]
2017-12-05 15:58:14 +01:00
ExecStart=/usr/bin/spawn-fcgi -s /var/run/munin/spawn-fcgi-munin-graph.sock -U www-data -u munin -g munin /usr/lib/munin/cgi/munin-cgi-graph
2016-12-28 16:14:24 +01:00
Type=forking
[Install]
WantedBy=default.target
2021-10-15 11:26:38 +02:00
eof
2022-03-29 17:56:03 +02:00
~~~
Puis on charge l'unité pour la démarrer par la suite :
~~~
2021-10-15 11:26:38 +02:00
systemctl daemon-reload
systemctl start spawn-fcgi-munin-graph
~~~
Pour vérifier si le démon tourne :
~~~ { .bash }
systemctl status spawn-fcgi-munin-graph
lsof /var/run/munin/spawn-fcgi-munin-graph.sock
2016-12-28 16:14:24 +01:00
~~~
2021-10-15 11:26:38 +02:00
> Si spawn-fcgi ne démarre pas mais renvoie `spawn-fcgi: child exited with: 2`, il se peut que ce soit car le paquet `libcgi-fast-perl` manque.
2016-12-28 16:14:24 +01:00
Enfin dans le vhost concerné d'Nginx, ajoutez-ceci :
2016-12-28 16:23:12 +01:00
~~~{.nginx}
2016-12-28 16:14:24 +01:00
location /munin/ {
alias /var/cache/munin/www/;
}
location ^~ /munin-cgi/munin-cgi-graph/ {
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/spawn-fcgi-munin-graph.sock;
include fastcgi_params;
}
~~~
2021-11-24 18:21:03 +01:00
## Intégration avec Apache
2016-12-28 16:14:24 +01:00
2021-08-09 18:01:49 +02:00
Installer `libapache2-mod-fcgid` (attention apt redémarre Apache !), puis ajouter au vhost :
2016-12-28 16:14:24 +01:00
2016-12-28 16:23:12 +01:00
~~~{.apache}
2021-08-09 18:01:49 +02:00
# Munin. We need to set Directory directive as Alias take precedence.
Alias /munin /var/cache/munin/www
< Directory / var / cache / munin / >
Require all denied
Include /etc/apache2/ipaddr_whitelist.conf
< / Directory >
2016-12-28 16:14:24 +01:00
# Munin cgi
2016-12-28 16:23:12 +01:00
# Ensure we can run (fast)cgi scripts
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
< Location / munin-cgi / munin-cgi-graph >
Options +ExecCGI
< IfModule mod_fcgid . c >
SetHandler fcgid-script
< / IfModule >
< IfModule mod_fastcgi . c >
SetHandler fastcgi-script
< / IfModule >
< IfModule ! mod_fastcgi . c >
< IfModule ! mod_fcgid . c >
SetHandler cgi-script
< / IfModule >
< / IfModule >
2021-03-08 18:11:05 +01:00
Require all granted
2016-12-28 16:23:12 +01:00
< / Location >
2016-12-28 16:14:24 +01:00
~~~
2022-07-07 10:01:31 +02:00
Si on a une erreur de cette forme dans les logs d’ erreur :
~~~
< h1 > Software error:< / h1 >
< pre > Can't open /var/log/munin/munin-cgi-graph.log (Permission denied) at /usr/share/perl5/Log/Log4perl/Appender/File.pm line 151.
< / pre >
~~~
Il peut être nécessaire de créer le fichier `/var/log/munin/munin-cgi-graph.log` comme pour Nginx.
~~~ { .bash }
touch /var/log/munin/munin-cgi-graph.log
chown www-data:munin /var/log/munin/munin-cgi-*
chmod 660 /var/log/munin/munin-cgi-*
vi /etc/logrotate.d/munin
~~~
2021-11-24 18:21:03 +01:00
# Notifications
2017-02-02 09:33:55 +01:00
2018-05-08 17:02:48 +02:00
Munin est capable d'envoyer des mails quand un plugin atteint son seuil de warning ou critical. Toute la configuration se fait dans `munin.conf` , on indique un mail de contact, et éventuellement on ajuste les seuils (ou on les définit) d'un ou plusieurs plugins.
2017-02-02 09:33:55 +01:00
Exemple :
~~~
contact.someuser.command mail -s "Munin notification" foo@example.com
[example.foo.bar]
address 127.0.0.1
use_node_name yes
postfix_mailqueue.deferred.critical 200
~~~
2018-05-11 10:53:17 +02:00
2021-10-12 17:12:58 +02:00
On peut aussi configurer les seuils de warning ou critical dans le fichier de configuration `/etc/munin/plugin-conf.d/munin-node` , voici un exemple de seuils sur le check du retard sur la réplication mysql :
2018-05-11 10:53:17 +02:00
~~~
[mysql*]
user root
2022-08-03 11:25:44 +02:00
env.mysqlopts --defaults-file=/root/.my.cnf
env.mysqluser root
env.mysqlconnection DBI:mysql:mysql;mysql_read_default_file=/root/.my.cnf
2018-05-11 10:53:17 +02:00
env.seconds_behind_master_warning 120
env.seconds_behind_master_critical 800
~~~
2017-02-02 09:33:55 +01:00
2021-11-24 18:21:03 +01:00
# Plugins
2016-12-28 16:14:24 +01:00
Les plugins sont stockés dans `/usr/share/munin/plugins` .
2021-10-12 17:12:58 +02:00
2016-12-28 16:14:24 +01:00
Les plugins activés sont mis en place via un lien symbolique dans `/etc/munin/plugins/` .
Exemple :
~~~
$ ls -lha /etc/munin/plugins/
[…]
lrwxrwxrwx 1 root root 40 3 juin 10:31 apache_accesses -> /usr/share/munin/plugins/apache_accesses
[…]
~~~
2023-12-07 09:45:50 +01:00
2021-12-15 11:42:49 +01:00
## Ajouter un plugin
Pour ajouter un plugin à grapher il suffit de mettre en place un lien symbolique.
2016-12-28 16:14:24 +01:00
Il faut ensuite redémarrer munin-node : `/etc/init.d/munin-node restart`
2021-12-15 11:42:49 +01:00
Munin peut suggérer des configurations selon ce qui est installé sur le serveur avec la commande `munin-node-configure --shell`
2021-11-24 18:21:03 +01:00
## Tester un plugin
2024-01-10 15:55:18 +01:00
Il peut être utile, et recommandé de tester le plugin avant de le mettre en place.
Pour afficher les valeurs des graphes d'un plugin :
~~~
$ munin-run --debug < PLUGIN_NAME > # nom du symlink dans /etc/munin/plugins/
~~~
Pour afficher la config des graphes du plugin :
2023-05-30 10:32:58 +02:00
2021-11-24 18:21:03 +01:00
~~~
2024-01-10 15:55:18 +01:00
$ munin-run --debug < PLUGIN_NAME > config
2021-11-24 18:21:03 +01:00
~~~
2016-12-28 16:14:24 +01:00
Exemple :
~~~
$ munin-run --debug swap
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /111/65534/111 111 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/swap'
swap_in.value 19
swap_out.value 53
~~~
2021-11-24 18:21:03 +01:00
2023-12-07 09:45:50 +01:00
## Configurer un plugin
2016-12-28 16:14:24 +01:00
2023-12-07 09:59:01 +01:00
Documentation officielle : < http: / / guide . munin-monitoring . org / en / latest / plugin / use . html >
La configuration des plugins se fait dans `/etc/munin/plugin-conf.d` .
La configuration par défaut se trouve dans le fichier `/etc/munin/plugin-conf.d/munin-node` . **Il ne faut pas le modifier.**
Si on souhaite ajouter ou modifier la configuration d'un plugin, le mieux est de créer un fichier `/etc/munin/plugin-conf.d/zzz-<PLUGIN_NAME>` .
Avoir un fichier de configuration par plugin permet une gestion plus fine, et facilite la gestion via Ansible par exemple.
### Changer l'utilisateur et le groupe avec lesquels le plugin est lancé
2016-12-28 16:14:24 +01:00
Selon les besoins, il peut être utile d'exécuter un plugin avec un utilisateur et un groupe particuliers.
2023-12-07 09:59:01 +01:00
Pour cela, créer un fichier `/etc/munin/plugin-conf.d/zzz-<PLUGIN_NAME>` :
2016-12-28 16:14:24 +01:00
~~~
2023-12-07 09:59:01 +01:00
[< PLUGIN_NAME > ]
2016-12-28 16:14:24 +01:00
user munin
group munin
~~~
2023-12-07 09:59:01 +01:00
### Passer une variable d'environnement à un plugin
2023-12-07 09:45:50 +01:00
On peut aussi avoir besoin de passer une variable d'environnement à un plugin (respecter la casse dans le nom de la variable) :
~~~
[< PLUGIN_NAME > ]
2023-12-07 09:59:01 +01:00
(...)
2023-12-07 09:45:50 +01:00
env.< ENV_VAR_NAME > < VALUE >
~~~
2016-12-28 16:14:24 +01:00
## Utiliser plusieurs fois un plugin
Il est possible d'utiliser plusieurs fois un même plugin mais avec des paramètres différents. C'est très utile pour le plugin MySQL par exemple.
~~~
/etc/munin/plugins# for type in bytes queries slowqueries threads; do for instance in 3307 3309; do ln -s /usr/share/munin/plugins/mysql_${type} mysql_${instance}_${type}; done; done
/etc/munin/plugins# ls -lha mysql_330*
lrwxrwxrwx 1 root root 36 Jul 22 11:23 mysql_3307_bytes -> /usr/share/munin/plugins/mysql_bytes
lrwxrwxrwx 1 root root 38 Jul 22 11:23 mysql_3307_queries -> /usr/share/munin/plugins/mysql_queries
lrwxrwxrwx 1 root root 42 Jul 22 11:23 mysql_3307_slowqueries -> /usr/share/munin/plugins/mysql_slowqueries
lrwxrwxrwx 1 root root 38 Jul 22 11:23 mysql_3307_threads -> /usr/share/munin/plugins/mysql_threads
lrwxrwxrwx 1 root root 36 Jul 22 11:23 mysql_3309_bytes -> /usr/share/munin/plugins/mysql_bytes
lrwxrwxrwx 1 root root 38 Jul 22 11:23 mysql_3309_queries -> /usr/share/munin/plugins/mysql_queries
lrwxrwxrwx 1 root root 42 Jul 22 11:23 mysql_3309_slowqueries -> /usr/share/munin/plugins/mysql_slowqueries
lrwxrwxrwx 1 root root 38 Jul 22 11:23 mysql_3309_threads -> /usr/share/munin/plugins/mysql_threads
~~~
Puis dans le fichier /etc/munin/plugin-conf.d/mysql_multi :
~~~
[mysql_3307_*]
user root
2022-08-03 11:25:44 +02:00
env.mysqlopts --defaults-extra-file=/root/.my.cnf -h127.0.0.1 -P3307
2016-12-28 16:14:24 +01:00
[mysql_3309_*]
user root
2022-08-03 11:25:44 +02:00
env.mysqlopts --defaults-extra-file=/root/.my.cnf -h127.0.0.1 -P3309
2016-12-28 16:14:24 +01:00
~~~
## Le plugin postgresql
2016-12-28 16:23:12 +01:00
Installer `libdbd-pg-perl`
2016-12-28 16:14:24 +01:00
~~~
# aptitude install libdbd-pg-perl
~~~
Linker les plugins généraux :
~~~
ln -s /usr/share/munin/plugins/postgres_bgwriter /etc/munin/plugins/
ln -s /usr/share/munin/plugins/postgres_checkpoints /etc/munin/plugins/
ln -s /usr/share/munin/plugins/postgres_connections_db /etc/munin/plugins/
ln -s /usr/share/munin/plugins/postgres_users /etc/munin/plugins/
ln -s /usr/share/munin/plugins/postgres_xlog /etc/munin/plugins/
~~~
2016-12-28 16:50:24 +01:00
Pour les plugins wildcard finissant par _ ajoutez `ALL` pour monitorer toutes les BDD :
2016-12-28 16:14:24 +01:00
~~~
ln -s /usr/share/munin/plugins/postgres_cache_ /etc/munin/plugins/postgres_cache_ALL
ln -s /usr/share/munin/plugins/postgres_connections_ /etc/munin/plugins/postgres_connections_ALL
ln -s /usr/share/munin/plugins/postgres_locks_ /etc/munin/plugins/postgres_locks_ALL
ln -s /usr/share/munin/plugins/postgres_querylength_ /etc/munin/plugins/postgres_querylength_ALL
ln -s /usr/share/munin/plugins/postgres_size_ /etc/munin/plugins/postgres_size_ALL
ln -s /usr/share/munin/plugins/postgres_transactions_ /etc/munin/plugins/postgres_transactions_ALL
~~~
sauf les suivants qui ne peuvent analyser qu'une seule base de données :
~~~
ln -s /usr/share/munin/plugins/postgres_scans_ /etc/munin/plugins/postgres_scans_NOMBDD
ln -s /usr/share/munin/plugins/postgres_tuples_ /etc/munin/plugins/postgres_tuples_NOMBDD
~~~
2016-12-28 16:23:12 +01:00
Attention avec **Squeeze LTS** , la version du serveur contient lts (ex: PostgreSQL 8.4.22lts5) et le plugin ne fonctionne plus.
Il faut modifier le fichier `/usr/share/perl5/Munin/Plugin/Pgsql.pm` et remplacer la ligne :
2016-12-28 16:14:24 +01:00
~~~
unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+) on/);
~~~
2016-12-28 16:23:12 +01:00
2016-12-28 16:14:24 +01:00
par :
~~~
unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+)lts(\d) on/);
~~~
2023-04-13 16:51:55 +02:00
## Le plugin mysql
Activons-les :
~~~
# cd /etc/munin/plugins
# ln -s /usr/share/munin/plugins/mysql_bytes
# ln -s /usr/share/munin/plugins/mysql_queries
# ln -s /usr/share/munin/plugins/mysql_slowqueries
# ln -s /usr/share/munin/plugins/mysql_threads
~~~
On pourra aussi activer le plugin *mysql_* avec des liens symboliques nommés connections, files_tables, innodb_bpool, innodb_bpool_act, innodb_io, innodb_log, innodb_rows, innodb_semaphores, myisam_indexes, qcache, qcache_mem, sorts ou tmp_tables.
On mettra en place cette configuration dans `/etc/munin/plugin-conf.d/munin-node` :
~~~
[mysql*]
user root
env.mysqlopts --defaults-file=/root/.my.cnf
env.mysqluser root
env.mysqlconnection DBI:mysql:mysql;mysql_read_default_file=/root/.my.cnf
~~~
Pour tester le bon fonctionnement des plugins MySQL pour Munin :
~~~
# munin-run mysql_bytes
~~~
Si on a plusieurs instances MySQL sur un serveur, il est possible d'[utiliser plusieurs fois un pluing Munin](https://wiki.evolix.org/HowtoMunin#utiliser-plusieurs-fois-un-plugin).
2023-04-13 16:58:09 +02:00
### Réplication
On recommande d'activer ceux-ci :
~~~
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_bin_relay_log'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_replication'
~~~
2021-11-24 18:21:03 +01:00
## Le plugin dnsresponsetime
2016-12-28 16:14:24 +01:00
Il faut éditer le fichier `/etc/munin/plugin-conf.d/munin-node` et ajouter la section du plugin pour spécifier un nom à résoudre et un ou des serveurs DNS :
~~~
[dnsresponsetime]
env.queries evolix.fr@ns2.evolix.net evolix.fr@romario.evolix.net
~~~
2021-11-24 18:21:03 +01:00
## Le plugin bind_rndc
2016-12-28 16:14:24 +01:00
2016-12-28 16:23:12 +01:00
Ajouter les lignes suivante dans `/etc/munin/plugin-conf.d/munin-node` :
2016-12-28 16:14:24 +01:00
~~~
[bind9_rndc]
user root
env.querystats /var/chroot-bind/var/cache/bind/named.stats
~~~
2016-12-28 16:23:12 +01:00
Assurez-vous d'avoir configuré le fichier `named.stats` , voir [HowtoBind#Graphsdesstatsviarndc].
2016-12-28 16:14:24 +01:00
2023-04-13 16:58:09 +02:00
## Le plugin bind
2016-12-28 16:14:24 +01:00
2016-12-28 16:23:12 +01:00
Assurez-vous d'avoir configurer un « channel de log » pour les requêtes DNS. Cf. [HowtoBind#Graphsdesacc%C3%A8sviaunfichierdelog].
2016-12-28 16:14:24 +01:00
Ajouter les lignes suivante dans `/etc/munin/plugin-conf.d/munin-node`
~~~
[bind9]
user root
env.logfile /var/chroot-bind/var/log/queries.log
~~~
Attention au chemin si bind est chrooté !
Un bug nécessite de créer le fichier des infos munin à la main…
~~~
# cd /var/lib/munin/plugin-state/
# touch bind9.state
# chown munin:munin bind9.state
# chmod 664 bind9.state
~~~
2021-11-24 18:21:03 +01:00
## Le plugin tomcat
2016-12-28 16:14:24 +01:00
~~~
# ln -s /usr/share/munin/plugins/tomcat_ tomcat_jvm
# ln -s /usr/share/munin/plugins/tomcat_ tomcat_threads
# ln -s /usr/share/munin/plugins/tomcat_ tomcat_volume
# ln -s /usr/share/munin/plugins/tomcat_ tomcat_access
# ln -s /usr/share/munin/plugins/tomcat_ tomcat_avgtime
# ln -s /usr/share/munin/plugins/tomcat_ tomcat_maxtime
~~~
~~~
[tomcat_*]
env.host 127.0.0.1
env.port 8080
env.request /manager/status?XML=true
env.user admin
env.password mon_pass
env.timeout 30
~~~
2021-11-24 18:21:03 +01:00
## Le plugin squid
2016-12-28 16:14:24 +01:00
~~~
ln -s /usr/share/munin/plugins/squid_cache /etc/munin/plugins/
ln -s /usr/share/munin/plugins/squid_icp /etc/munin/plugins/
ln -s /usr/share/munin/plugins/squid_objectsize /etc/munin/plugins/
ln -s /usr/share/munin/plugins/squid_requests /etc/munin/plugins/
ln -s /usr/share/munin/plugins/squid_traffic /etc/munin/plugins/
~~~
Ajuster le port si nécessaire :
~~~
[squid*]
env.squidhost 127.0.0.1
env.squidport 80
~~~
2016-12-28 16:23:12 +01:00
S'assurer que les directives suivantes sont bien présentes dans `/etc/squid3/squid.conf` :
2016-12-28 16:14:24 +01:00
~~~
# munin
acl manager proto cache_object
< http_access > allow manager localhost
< http_access > deny manager
~~~
Vérification :
~~~
squidclient -p 80 cache_object://127.0.0.1/storedir
squidclient -p 80 cache_object://127.0.0.1/server_list
squidclient -p 80 cache_object://127.0.0.1/info
squidclient -p 80 cache_object://127.0.0.1/counters
~~~
2021-11-24 18:21:03 +01:00
2021-12-22 09:20:41 +01:00
# Troubleshooting
2016-12-28 16:14:24 +01:00
2021-12-22 09:20:41 +01:00
## Souci de droits sur les images
Si munin n'affiche pas les images, c'est peut-être un souci de droits. Vérifier les droits dans `/var/cache/munin/www/*/*/` . Si les .png sont en 600, faire ceci :
2016-12-28 16:14:24 +01:00
~~~
# echo "umask 022" >> /etc/default/cron
# /etc/init.d/cron restart
# chmod 644 /var/cache/munin/www/*/*/*.png
~~~
On peut lancer la generation des graphs à la main pour avoir des informations plus précises :
~~~
su - munin --shell=/bin/bash
/usr/share/munin/munin-update --debug
~~~
2021-11-24 18:21:03 +01:00
## Problème de graph, munin ne graphe plus
2017-05-23 17:08:56 +02:00
2017-05-23 17:18:26 +02:00
Vérifier la conf du plugin qui ne graphe pas, dans /etc/munin/plugin-conf.d/munin-node
2017-05-23 17:08:56 +02:00
2017-05-23 17:18:26 +02:00
Il faut regarder si la variable env.url a bien le nom du serveur en
question et pas 127.0.0.1. Par exemple avec le plugin apache :
2017-05-23 17:08:56 +02:00
~~~
[apache_*]
env.url http://nomduserveur.evolix.net:%d/server-status-XXXXX?auto
env.ports 8080
~~~
On peut aussi vérifier que la requête vers l'url fonctionne en faisant un GET vers l'url:
~~~
GET http://nomduserveur.evolix.net:8080/server-status-XXXXX?auto
~~~
2021-11-24 18:21:03 +01:00
## Regarder dans la doc
2016-12-28 16:14:24 +01:00
2016-12-28 16:23:12 +01:00
~~~
2021-10-18 16:49:44 +02:00
# munindoc <plugin>
2016-12-28 16:23:12 +01:00
~~~
2021-10-12 17:12:58 +02:00
2021-12-22 09:20:41 +01:00
2021-11-24 18:21:03 +01:00
## Il manque `/home` dans le *plugin* `df`
2021-10-18 16:00:59 +02:00
2021-10-20 16:29:24 +02:00
Attention, le *plugin* `df` est différent du *plugin* `diskstats` .
2021-10-12 17:12:58 +02:00
2021-10-20 16:29:24 +02:00
~~~{ .bash }
mkdir -p /etc/systemd/system/munin-node.service.d
2021-12-23 16:40:02 +01:00
printf '[Service]\nProtectHome=read-only\n' | tee -a /etc/systemd/system/munin-node.service.d/override.conf
2021-10-20 16:29:24 +02:00
systemctl daemon-reload
systemctl restart munin-node.service
2021-10-12 17:12:58 +02:00
~~~
2021-10-18 16:00:59 +02:00
2021-10-20 16:29:24 +02:00
Puis attendre la prochaine exécution du *cron* ou la lancer soi-même :`sudo -u munin /usr/bin/munin-cron`.
2021-11-19 17:45:19 +01:00
> On peut remplacer les commandes `mkdir` et `printf | tee` par `systemctl edit munin-node.service`.
2021-12-22 09:38:53 +01:00
## Le titre des graphiques est absent
Note : correction à faire sur le master.
2021-12-22 09:20:41 +01:00
A la ligne 12, il faut remplacer `<tr><td>` dans `/etc/munin/templates/munin-nodeview.tmpl` par :
~~~
< tr > < td > < TMPL_VAR ESCAPE = "HTML" NAME = "NAME" > < / td > < / tr > < tr > < td >
~~~
2021-12-22 09:25:00 +01:00
Pour voir la correction sans attendre la régénération automatique, lancer :
~~~
$ sudo -u munin munin-cron
~~~
2023-02-17 12:08:43 +01:00
## Impossible de zoomer sur les graphes
Si malgré la procédure donnés pour Apache et Nginx on ne peut toujours pas faire de zoom sur les graphes, il y a probablement un souci de permission sur les fichiers et répertoires sous `/var/lib/munin/cgi-tmp` . Exemple d’ erreur dans `/var/log/munin/munin-cgi-graph.log` :
~~~
2023/01/23 12:34:56 [WARNING] Could not draw graph "/var/lib/munin/cgi-tmp/munin-cgi-graph/example.com/< hostname > .example.com/…
~~~
2023-03-07 15:44:08 +01:00
On peut vérifier le propriétaire avec `namei -l /var/lib/munin/cgi-tmp/munin-cgi-graph/example.com/<hostname>.example.com/` . À partir de `/var/lib/munin/` , le propriétaire devrait être `munin` . Le groupe peut varier.