This is an old revision of the document!
Table of Contents
supervision monitoring graphique
Munin
Munin est un logiciel libre qui se divise en 2 parties : un récolteur de données (munin-node) qu'on installe sur les machines à superviser ; et un agrégateur de données (munin) qui tourne sur le serveur front-end (le serveur de supervision). Munin-node recueille des données de performance sur des machines clientes ; Munin interroge tous les munin-node, enregistre les données dans une base RRD et l'affiche sur une interface web (Apache typiquement).
key-features
- la communication entre Munin sur le serveur et Munin-node sur les postes clients se fait sur tcp/4949
- technologies employées : RRD (donc une base (my)SQL), serveur web (typiquement Apache)
Installation de munin
sous Debian-like
Dans un premier temps on va installer la partie serveur (munin). Mais comme je veux monitorer mon serveur, j'installe aussi la partie cliente dessus (en plus ça me permettra de valider son bon fonctionnement).
aptitude install munin munin-node
L'installation de munin-node scanne la machine et active les plugins qui fonctionnent sur le système. Le client localhost est détecté et ajouté automatiquement dans la conf de Munin, ce qui fait qu'après un redémarrage d'apache, on devrait (après une dizaine de minutes) voir apparaitre la mire de Munin à l'adresse http://IP_serveur/munin .
Configuration
Partie serveur
Sous Debian-like la configuration de Munin est située dans /etc/munin :
- apache.conf est le fichier à inclure dans la configuration d'Apache. Si ce n'est pas déjà fait (si vous n'obtenez pas la mire) il faut créer un lien symbolique dans <apache_dir>/conf.d pour qu'Apache le prenne en compte ; puis redémarrer Apache :
ln -s /etc/munin/apache.conf /etc/apache2/conf.d/munin /etc/init.d/apache2 restart
- munin.conf : c'est le fichier de conf principal de Munin ; chaque client (nœud) doit y être renseigné :
# a simple host tree [localhost.localdomain] address 127.0.0.1 use_node_name yes # serveur toto [toto_serveur] address 192.168.0.1 use_node_name yes
Ici on voit le localhost (configuré par défaut) et j'ai rajouté une autre machine de mon LAN : 192.168.0.1.
Munin ne tourne pas comme daemon : il est lancé par cron (par défaut toutes les 5 minutes, cf /etc/cron.d/munin) donc pas besoin de le relancer pour prendre en compte une modification de configuration. Par contre il faudra attendre une bonne dizaine de minutes.
Partie cliente
Comme je l'ai dit plus haut, les machines clientes n'ont besoin que du paquet Munin-node.
aptitude install munin-node
Lors de l'installation, Munin-node scanne la machine et active automatiquement les plugins adaptés.
Par défaut le daemon munin-node n'accepte les connexions que depuis sa loopback (lui-même) ; il faut donc éditer le fichier de conf /etc/munin/munin-node.conf et ajouter l'adresse IP du collecteur (192.168.0.100 dans mon cas) :
vi /etc/munin/munin-node.conf #[..] allow ^127\.0\.0\.1$ # IP du collecteur (la machine où est installé munin allow ^192\.168\.0\.100$
On remarquera que les IPs sont renseignées sous la forme d'expressions régulières, Perl n'y ai pas pour rien…
Activer un plugin
Tous les scripts installés par défaut avec Munin-node sont situés dans /usr/share/munin/plugins/ ; ce sont pour la pluspart des scripts perl. Quand ils sont activés, on créé un lien symbolique dans /etc/munin/plugins/ ; si on veut ajouter ou supprimer un plugin il faut donc créer ou supprimer ce lien symbolique.
Il est possible de re-scanner le système ; Munin-node propose alors la liste des plugins qu'il vous conseille d'installer :
munin-node-configure --suggest Plugin | Used | Suggestions ------ | ---- | ----------- acpi | no | [ACPI program not found] courier_mta_mailqueue | no | [spooldir not found] courier_mta_mailstats | no | [could not find executable] courier_mta_mailvolume | no | [could not find executable] cupsys_pages | no | [could not find logdir] hddtemp_smartctl | no | [no drives known] if_ | yes | +eth0 if_err_ | no | yes +eth0 +eth1 ip_ | no | mysql_bytes | no | [mysqladmin not found] mysql_isam_space_ | no | mysql_queries | no | [mysqladmin not found] mysql_slowqueries | no | [mysqladmin not found] mysql_threads | no | [mysqladmin not found] nfs_client | no | [no /proc/net/rpc/nfs] nfsd | no | [no /proc/net/rpc/nfsd] postfix_mailqueue | no | [spooldir not found] postfix_mailvolume | no | [postfix not found] postgres_block_read_ | no | postgres_commits_ | no | postgres_locks | no | postgres_queries_ | no | postgres_space_ | no | ps_ | no | sendmail_mailqueue | no | sendmail_mailstats | no | [no mailstats command] sendmail_mailtraffic | no | squid_cache | no | no [could not connect: Connection refused] squid_objectsize | no | no [could not connect: Connection refused] squid_requests | no | no [could not connect: Connection refused] squid_traffic | no | no [could not connect: Connection refused] smart_ | yes | tomcat_access | no | [XML::Simple not found] tomcat_jvm | no | [XML::Simple not found] tomcat_threads | no | [XML::Simple not found] tomcat_volume | no | [XML::Simple not found]
Pour les installer, rien de plus simple : l'outil vous donne la commande à copier/coller dans le prompt !
munin-node-configure --suggest --shell
Pour tester un plugin, il existe la commande munin-run :
munin-run squid_traffic kbytes_in.value 178718 kbytes_out.value 4745747 hit_kbytes_out.value 76359
squid_*
Après avoir installé munin-node, la commande munin-node-configure –suggest
permet de visualiser les erreurs qu'il a rencontrées ; par exemple ici les plugins squid_* ne sont pas activés alors que Squid tourne sur ma machine !
La raison invoquée : [could not connect: Connection refused]
est simple : mon Squid ne tourne pas sur le port par défaut (3128), il faut donc le préciser au plugin. En lisant le script perl de ce dernier on trouve :
vi /usr/share/munin/plugins/squid_traffic Configuration variables: squidhost - host (default "localhost") squidport - port (default "3128") squiduser - username (default "") squidpasswd - password (default "")
Il faut donc lui préciser le nouveau port ; ceci se fait dans le fichier de conf des plugins : /etc/munin/plugin-conf.d/munin-node
vi /etc/munin/plugin-conf.d/munin-node [squid_*] env.squidport 3131
On ajoute ces lignes suivant la syntaxe qui convient : ici on précise le port personnalisé tcp/3131 dans la variable d'environnement squidport qui sera transmise au script.
Puis on lance le scan :
munin-node-configure --suggest
S'il est listé dans le résultat de la commande précédente, alors l'utilitaire peut nous pré-mâcher le travail :
munin-node-configure --suggest --shell | grep squid ln -s /usr/share/munin/plugins/squid_cache /etc/munin/plugins/squid_cache ln -s /usr/share/munin/plugins/squid_requests /etc/munin/plugins/squid_requests ln -s /usr/share/munin/plugins/squid_traffic /etc/munin/plugins/squid_traffic
apache_*
Certains plugins d'Apache requièrent l'activation des modules mod_info et mod_status dans le serveur web. Pour vérifier les plugins installés, vérifier la présence de leurs liens symboliques (.conf et .load) dans /etc/apache2/mods-enabled/ :
ll /etc/apache2/mods-enabled/
S'ils n'y sont pas, les activer :
a2enmod status a2enmod info
Puis activer les plugins dans munin-node et relancer le service :
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume /etc/init.d/munin-node restart
netstat
Le plugin netstat permet de récupérer les connexions established, actives, etc… et est désactivé par défaut. Pourtant, tout Linux qui se respecte dispose de la commande netstat ! Nous allons donc l'activé et préciser qu'il faut le lancer avec l'utilisateur root :
ln -s /usr/share/munin/plugins/netstat /etc/munin/plugins/netstat vi /etc/munin/plugin-conf.d/munin-node [netstat] user root /etc/init.d/munin-node restart
multiping
multiping est une amélioration du plugin ping_, qui permet de pinguer plusieurs destinations et d'afficher le résultat sur une seul graphique.
cd /usr/share/munin/plugins/ wget http://exchange.munin-monitoring.org/plugins/multiping/version/1/download mv download multiping chmod 755 multiping ln -s /usr/share/munin/plugins/multiping /etc/munin/plugins/multiping vi /etc/munin/plugin-conf.d/munin-node [multiping] env.hosts www.google.fr,www.free.fr,www.orange.fr,www.yahoo.fr env.names google,free,orange,yahoo /etc/init.d/munin-node restart
bind95_
bind95_ est un plugin pour tracer les statistiques DNS du logiciel bind version 9.5.
Pour cela, il faut dans un premier temps activer les statistiques dans bind en activant l'option (à ajouter dans la partie options de named.conf ; sous Debian cette section est située dans le fichier named.conf.options :
vi /etc/bind/named.conf.options options { [..] statistics-file "/var/cache/bind/named.stats"; [..] } /etc/init.d/bind9 restart
Après quelques temps le fichier /var/cache/bind/named.stats devrait apparaitre et se peupler.
cd /usr/share/munin/plugins/ wget http://exchange.munin-monitoring.org/plugins/bind95_/version/1/download mv download bind95_ chmod 755 bind95_ ln -s /usr/share/munin/plugins/bind95_ /etc/munin/plugins/bind95_ # au besoin préciser d'utiliser le compte root pour la récupération des stats vi /etc/munin/plugin-conf.d/munin-node [bind95_] user root /etc/init.d/munin-node restart
Installer un noeud sous Windows
Il existe une version de munin-node qui tourne sous Windows ; les plugins sont moins nombreux mais les principaux indicateurs de santé de la machine sont là (utilisation CPU, mémoire, disques, etc…) !
Un léger bémol cependant pour le graphe de charge CPU qui, appa-remment, pose problème avec Windows 7 x64. Effectivement la sonde retourne 0, alors que le graphe de charge des processeurs retourne des valeurs cohérentes.