673 lines
19 KiB
Markdown
673 lines
19 KiB
Markdown
---
|
||
categories: web
|
||
title: Howto Munin
|
||
...
|
||
|
||
* [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/)
|
||
|
||
|
||
# Installation
|
||
|
||
## Debian
|
||
|
||
~~~
|
||
# apt install munin
|
||
~~~
|
||
|
||
## OpenBSD
|
||
|
||
~~~
|
||
# pkg_add munin-node munin-server
|
||
~~~
|
||
|
||
# Fonctionnement
|
||
|
||
Munin a une architecture 1 master - n nodes.
|
||
|
||
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.
|
||
|
||
Puis, il met à jour ses fichiers de données RRD stockés dans `/var/lib/munin`, et génère des graphiques (images PNG).
|
||
|
||
Les graphiques PNG sont stockés dans `/var/cache/munin` et sont affichés dans des pages HTML, également générées.
|
||
|
||
Le node peut être sur la même machine que le master, dans ce cas l'installation est purement locale.
|
||
|
||
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`.
|
||
|
||
|
||
## Fichiers RRD
|
||
|
||
Les fichiers RRD sont les données les plus importantes car ils stockent toutes les valeurs passées.
|
||
|
||
À chaque plugin est associé un ou plusieurs fichiers RRD.
|
||
|
||
~~~
|
||
$ ls *load-*
|
||
localhost.localdomain-load-load-g.rrd
|
||
$ ls *cpu-*
|
||
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é :
|
||
|
||
~~~
|
||
$ 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
|
||
~~~
|
||
|
||
|
||
# Configuration
|
||
|
||
## Configurer le master
|
||
|
||
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 :
|
||
|
||
~~~
|
||
[monserveur.mondomaine.com]
|
||
address 127.0.0.1
|
||
use_node_name yes
|
||
~~~
|
||
|
||
|
||
## Ajouter un node
|
||
|
||
**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 :
|
||
|
||
~~~
|
||
/sbin/iptables -A INPUT -p tcp --dport 4949 -s X.Y.Z.W -j ACCEPT # <-- IP du master
|
||
~~~
|
||
|
||
|
||
**Sur le master :**
|
||
|
||
Ajouter les directives suivantes à la configuration du master :
|
||
|
||
~~~
|
||
# vim /etc/munin/munin.conf
|
||
[client.foo.com] # <-- nom du node dans Munin
|
||
address A.B.C.D # <-- IP du node
|
||
use_node_name yes
|
||
~~~
|
||
|
||
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 :
|
||
|
||
~~~
|
||
/sbin/iptables -A INPUT -p tcp --sport 4949 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||
~~~
|
||
|
||
## 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]()
|
||
|
||
Activer et démarrer ensuite munin_node :
|
||
|
||
~~~
|
||
# rcctl enable munin_node
|
||
# rcctl start munin_node
|
||
~~~
|
||
|
||
# Intégration avec un serveur web
|
||
|
||
Munin 2 permet de zoomer sur les graphiques.
|
||
|
||
Pour que cela fonctionne il faut faire tourner un démon FastCGI et le script munin-cgi-graph.
|
||
|
||
|
||
## Intégration avec Nginx
|
||
|
||
Adapter les droits de `/var/log/munin/munin-cgi` et vérifier s'il y a des fichiers manquants pour les zoom :
|
||
|
||
~~~ { .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-*
|
||
~~~
|
||
|
||
De même pour `/etc/logrotate.d/munin`, section `/var/log/munin/munin-cgi-graph.log` :
|
||
|
||
~~~
|
||
create 660 www-data munin
|
||
~~~
|
||
|
||
Installer les dépendances pour démarrer le démon :
|
||
|
||
~~~ { .bash }
|
||
apt install libcgi-fast-perl spawn-fcgi
|
||
~~~
|
||
|
||
Créer une unité systemd pour gérer le démon :
|
||
|
||
~~~ { .bash }
|
||
tee > /etc/systemd/system/spawn-fcgi-munin-graph.service << 'eof'
|
||
[Unit]
|
||
Description=Munin zoom for nginx.
|
||
After=network.target
|
||
|
||
[Service]
|
||
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
|
||
Type=forking
|
||
|
||
[Install]
|
||
WantedBy=default.target
|
||
eof
|
||
~~~
|
||
|
||
Puis on charge l'unité pour la démarrer par la suite :
|
||
|
||
~~~
|
||
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
|
||
~~~
|
||
|
||
> 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.
|
||
|
||
Enfin dans le vhost concerné d'Nginx, ajoutez-ceci :
|
||
|
||
~~~{.nginx}
|
||
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;
|
||
}
|
||
~~~
|
||
|
||
|
||
## Intégration avec Apache
|
||
|
||
Installer `libapache2-mod-fcgid` (attention apt redémarre Apache !), puis ajouter au vhost :
|
||
|
||
~~~{.apache}
|
||
# 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>
|
||
# Munin cgi
|
||
# 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>
|
||
Require all granted
|
||
</Location>
|
||
~~~
|
||
|
||
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
|
||
~~~
|
||
|
||
# Notifications
|
||
|
||
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.
|
||
|
||
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
|
||
~~~
|
||
|
||
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 :
|
||
|
||
~~~
|
||
[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
|
||
env.seconds_behind_master_warning 120
|
||
env.seconds_behind_master_critical 800
|
||
~~~
|
||
|
||
# Plugins
|
||
|
||
Les plugins sont stockés dans `/usr/share/munin/plugins`.
|
||
|
||
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
|
||
[…]
|
||
~~~
|
||
|
||
## Ajouter un plugin
|
||
|
||
Pour ajouter un plugin à grapher il suffit de mettre en place un lien symbolique.
|
||
Il faut ensuite redémarrer munin-node : `/etc/init.d/munin-node restart`
|
||
|
||
Munin peut suggérer des configurations selon ce qui est installé sur le serveur avec la commande `munin-node-configure --shell`
|
||
|
||
|
||
## Tester un plugin
|
||
|
||
Il peut être utile, et recommandé de tester le plugin avant de le mettre en place, pour cela il faut utiliser :
|
||
|
||
~~~
|
||
$ munin-run --debug <PLUGIN_NAME> # présent dans /etc/munin/plugins/
|
||
~~~
|
||
|
||
|
||
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
|
||
~~~
|
||
|
||
|
||
## Configurer le user/group d'un plugin
|
||
|
||
Selon les besoins, il peut être utile d'exécuter un plugin avec un utilisateur et un groupe particuliers.
|
||
Pour cela il faut éditer le fichier `/etc/munin/plugin-conf.d/munin-node` et changer le user/group.
|
||
|
||
Exemple :
|
||
|
||
~~~
|
||
[munin_stats]
|
||
user munin
|
||
group munin
|
||
~~~
|
||
|
||
## 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
|
||
env.mysqlopts --defaults-extra-file=/root/.my.cnf -h127.0.0.1 -P3307
|
||
|
||
[mysql_3309_*]
|
||
user root
|
||
env.mysqlopts --defaults-extra-file=/root/.my.cnf -h127.0.0.1 -P3309
|
||
~~~
|
||
|
||
|
||
## Le plugin postgresql
|
||
|
||
Installer `libdbd-pg-perl`
|
||
|
||
~~~
|
||
# 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/
|
||
~~~
|
||
|
||
Pour les plugins wildcard finissant par _ ajoutez `ALL` pour monitorer toutes les BDD :
|
||
|
||
~~~
|
||
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
|
||
~~~
|
||
|
||
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 :
|
||
|
||
~~~
|
||
unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+) on/);
|
||
~~~
|
||
|
||
par :
|
||
|
||
~~~
|
||
unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+)lts(\d) on/);
|
||
~~~
|
||
|
||
## 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).
|
||
|
||
### 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'
|
||
~~~
|
||
|
||
## Le plugin dnsresponsetime
|
||
|
||
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
|
||
~~~
|
||
|
||
## Le plugin bind_rndc
|
||
|
||
Ajouter les lignes suivante dans `/etc/munin/plugin-conf.d/munin-node` :
|
||
|
||
~~~
|
||
[bind9_rndc]
|
||
user root
|
||
env.querystats /var/chroot-bind/var/cache/bind/named.stats
|
||
~~~
|
||
|
||
Assurez-vous d'avoir configuré le fichier `named.stats`, voir [HowtoBind#Graphsdesstatsviarndc].
|
||
|
||
## Le plugin bind
|
||
|
||
Assurez-vous d'avoir configurer un « channel de log » pour les requêtes DNS. Cf. [HowtoBind#Graphsdesacc%C3%A8sviaunfichierdelog].
|
||
|
||
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
|
||
~~~
|
||
|
||
## Le plugin tomcat
|
||
|
||
~~~
|
||
# 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
|
||
~~~
|
||
|
||
## Le plugin squid
|
||
|
||
~~~
|
||
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
|
||
~~~
|
||
|
||
S'assurer que les directives suivantes sont bien présentes dans `/etc/squid3/squid.conf` :
|
||
|
||
~~~
|
||
# 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
|
||
~~~
|
||
|
||
|
||
# Troubleshooting
|
||
|
||
## 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 :
|
||
|
||
~~~
|
||
# 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
|
||
~~~
|
||
|
||
|
||
## Problème de graph, munin ne graphe plus
|
||
|
||
Vérifier la conf du plugin qui ne graphe pas, dans /etc/munin/plugin-conf.d/munin-node
|
||
|
||
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 :
|
||
|
||
~~~
|
||
[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
|
||
~~~
|
||
|
||
## Regarder dans la doc
|
||
|
||
~~~
|
||
# munindoc <plugin>
|
||
~~~
|
||
|
||
|
||
## Il manque `/home` dans le *plugin* `df`
|
||
|
||
Attention, le *plugin* `df` est différent du *plugin* `diskstats`.
|
||
|
||
~~~{ .bash }
|
||
mkdir -p /etc/systemd/system/munin-node.service.d
|
||
printf '[Service]\nProtectHome=read-only\n' | tee -a /etc/systemd/system/munin-node.service.d/override.conf
|
||
systemctl daemon-reload
|
||
systemctl restart munin-node.service
|
||
~~~
|
||
|
||
Puis attendre la prochaine exécution du *cron* ou la lancer soi-même :`sudo -u munin /usr/bin/munin-cron`.
|
||
|
||
> On peut remplacer les commandes `mkdir` et `printf | tee` par `systemctl edit munin-node.service`.
|
||
|
||
|
||
## Le titre des graphiques est absent
|
||
|
||
Note : correction à faire sur le master.
|
||
|
||
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>
|
||
~~~
|
||
|
||
Pour voir la correction sans attendre la régénération automatique, lancer :
|
||
|
||
~~~
|
||
$ sudo -u munin munin-cron
|
||
~~~
|
||
|
||
## 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/…
|
||
~~~
|
||
|
||
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.
|