Monitoring : Munin - Betaphile.net : Amoureux des versions Beta...

Betaphile.net : Amoureux des versions Beta...

Linux, Développement, Administration, Logiciels Libres ...

Aller au contenu - Aller au menu - Aller à la recherche



Lorsque l'on gère une (ou plusieurs) machine(s) de type serveur, ou encore un parc informatique, il peut être intéressant de conserver des informations (systèmes et réseaux) sur la machine en question, et de pouvoir les consulter le plus facilement possible (cet article est aussi valable pour n'importe quel PC (pc portable, media center, etc). Certes, les logs gardent une trace écrite de la plupart des informations, mais de manière très peu compréhensible et encore moins analysable par l'être humain sous cette forme brut. Une façon simple d'analyser ces données sont les statistiques, et plus particulièrement l'affichage sous forme de graphiques (aperçu sur munin.cyber116.fr)

Munin est un logiciel de monitoring écrit en Perl, et donc portable sur n'importe quel machine/système d'exploitation capable d'exécuter du Perl (Linux, Windows, Mac OS X). Il permet d'afficher graphiquement des dizaines d'informations telles que :

  • Utilisation d'Apache (serveur HTTP) (compatible Apache2) : en volume, en nombre de processus, et en nombre d'accès
  • Utilisation de Proftpd (serveur FTP) : en volume, et en nombre de transferts
  • Utilisation de MySQL : nombre et types de requêtes
  • Utilisation de la bande passante
  • Utilisation de l'espace disque (HDD)
  • Utilisation du processeur (CPU) et de la mémoire vive (RAM)
  • Uptime (temps où l'ordinateur reste allumé)
  • Température des différents éléments (disques durs, processeur, etc)

Je vais donc détailler dans cet article comment installer munin, installer ses plugins, configurer tout ça, et comment l'utiliser.

Pré-Requis

(note : toutes les commandes suivantes ont été réalisées sur la distribution Linux Debian 4.0 « Etch ». Cependant, la plupart des commandes et fichiers doivent être identiques ou quelque peu adaptés selon les paquets présents pour fonctionner sur une autre distribution)

En réalité, Munin se décompose en deux applications distinctes : le client, et le serveur. Le serveur (munin) se charge d'analyser les données envoyées par le client (munin-node) et d'en faire de beaux graphiques.

Diagramme représentant les interactions de Munin entre un serveur et deux clients

Dans le cas où vous n'avez qu'une machine, vous devrez donc installer à la fois munin-node et munin sur cette machine. Sinon, vous n'avez qu'à installer munin sur une machine qui fera office de serveur, et munin-node sur toutes les machines clientes (ne pas oublier que le serveur peut être lui aussi client).

Tout d'abord, il va falloir vous assurer que vous possédez bien les paquets nécessaires à l'installation. En cherchant le paquet munin-node, et munin sur http://packages.debian.org, on trouve la liste suivante (je ne conserve que les paquets susceptibles de ne pas se trouver dans la plupart des distributions récentes) :

  • perl (>= 5.6.0-16)
  • perl-modules (>= 5.8.0)
  • rrdtool

Une fois ces paquets installés grâce à votre gestionnaire de paquets préféré (apt par exemple), vous êtes prêts à installer munin.

Installation

Vous pouvez maintenant installer les paquets munin et munin-node, ce qui donne par exemple sous Debian avec le gestionnaire de paquets apt :

apt-get install munin-node munin

Et voilà, l'installation est terminée. On va pouvoir passer à la configuration.

Configuration

Les fichiers de configuration de munin sont situés dans le répertoire /etc/munin/, avec deux fichiers très importants : munin.conf, et munin-node.conf. On va commencer par configurer munin-node, ce qui va être très rapide puisque la configuration de base est déjà très bonne, il faudra peut être modifier à la fin du fichier cette ligne :

allow ^127\.0\.0\.1$

Cette ligne définit le masque d'IPs pouvant se connecter à ce serveur, par le port spécifié dans le fichier de configuration. Il faudra donc adapter ça de manière convenable si vous désirez monitorer plusieurs machines.

Voici un exemple complet de fichier de configuration fonctionnant parfaitement :

#
# Example config-file for munin-node
#

log_level 4
log_file /var/log/munin/munin-node.log
port 4949
pid_file /var/run/munin/munin-node.pid
background 1
setseid 1

# Which port to bind to;
host 127.0.0.1
user root
group root
setsid yes

# Regexps for files to ignore

ignore_file ~$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$

# Set this if the client doesn't report the correct hostname when
# telnetting to localhost, port 4949
#
#host_name localhost.localdomain

# A list of addresses that are allowed to connect.  This must be a
# regular expression, due to brain damage in Net::Server, which
# doesn't understand CIDR-style network notation.  You may repeat
# the allow line as many times as you'd like

allow ^127\.0\.0\.1$

On va maintenant s'attaquer au fichier munin.conf, avec un peu plus de travail cette fois, car les options sont plus nombreuses. Tout d'abord, il y a une liste de répertoires à inscrire :

  • dbdir : le répertoire où munin stocke ses données
  • htmldir : ce répertoire est celui qui vous donnera accès aux graphiques, il faut donc soit le configurer dans votre répertoire www, ou soit faire un alias vers ce répertoire
  • logdir : le répertoire où munin stocke ses logs
  • rundir : le répertoire où munin stocke ses « lock » (fichiers contenant le pid du processus)
  • tmpldir : le répertoire où munin va aller chercher le template HTML

Ensuite, nous allons configurer l'arbre de la vue d'ensemble, qui va en fait présenter le domaine principal, et l'ensemble des clients de ce sous-domaine. Le fichier de configuration fonctionne de cette manière :

[sous-domaine1.domaine.tld]
	address 192.168.0.35
[sous-domaine2.domaine.tld]
	address 192.168.0.48

A noter que les adresses IP peuvent également être des noms d'host. Les domaines peuvent être totalement fictifs, dans le sens où vous pouvez avoir quelque chose comme ça par exemple :

[chambre.maison]
	address 192.168.0.20
[salon.maison]
	address pc_salon

Qui affichera donc le domaine maison, et ses deux sous-domaines.

Voici un exemple de fichier de configuration fonctionnant parfaitement (épuré des commentaires inutiles pour l'exemple) :

# Example configuration file for Munin, generated by 'make build'

dbdir   /var/lib/munin
htmldir /var/www/munin
logdir  /var/log/munin
rundir  /var/run/munin
tmpldir /etc/munin/templates

# a simple host tree
[kiwi.cyber116.fr]
    address 127.0.0.1
    use_node_name yes

Plugins

Chaque information représentée par les graphiques de munin est en fait un plugin. Les plugins disponibles par défaut sont présents dans /usr/share/munin/plugins et pour installer un plugin, il suffit de faire un lien relatif d'un de ces plugins dans /etc/munin/plugins/. Rien de tel que quelques exemples pour mieux comprendre tout ça :

ln -s /usr/share/munin/plugins/cpu /etc/munin/plugins/cpu

va installer le plugin cpu. Ce plugin ne prend aucun argument, il est donc très bien comme ça. Par contre, les plugins se terminant par un underscore ( _ ) nécessitent un argument, par exemple, le plugin if_ attend l'interface sur laquelle grapher. Donc pour installer ce plugin on va faire :

ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_eth0

Pour supprimer un plugin, il suffit de faire :

rm /etc/munin/plugins/lenomduplugin

Une fois que tous vos plugins sont installés, un redémarrage de munin-node est nécessaire pour que les modifications soient pris en compte :

/etc/init.d/munin-node restart

Le catalogue officiel des plugins se trouvent à cette adresse : http://muninexchange.projects.linpro.no/.

Utilisation

Une fois le service munin-node démarré :

/etc/init.d/munin-node start

munin graphe toutes les 5 minutes (grâce à la tache cron /etc/cron.d/munin), et le résultat est visible dans le répertoire que vous lui avez indiqué dans le fichier munin.conf. Si vous lui avez indiqué /var/www/munin alors vous pourrez voir les graphiques sur http://localhost/munin/.

Vous devez obtenir quelque chose ressemblant à ça (après avoir attendu les 5 minutes pour qu'un cycle soit passé) :

première page de Munin : Overview

Cliquez sur la machine qui vous intéresse (ici : kiwi.cyber116.fr) et vous arriverez sur une page avec une multitude de graphiques quasiment vide, puisque munin vient juste d'être installé. A gauche, ce sont les graphiques de la journée (chaque petit carreau représente une heure), et à droite, les graphiques de la semaine (chaque petit carreau représente 6 heures). Le temps est en abscisse (horizontalement), l'activité la plus récente se trouvant toujours le plus à droite du graphique. Etudions un peu plus en détails un graphique, je vais par exemple prendre celui du if_eth0 , c'est à dire de l'utilisation de la bande passante :

Graphique de la bande passante utilisée en une journée

Tout d'abord, en haut se trouve le titre du graphique : « eth0 trafic – by day ». A gauche, on peut voir inscrit : « bits in (-) / out (+) per second », ce qui veut dire que tout ce qui est au dessous de l'axe des abscisses est la bande passante descendante (download), et tout ce qui est au dessus est la bande passante montante (upload). Si on veut savoir à quelle heure a eu lieu le pic dans la bande passante descendante, il suffit de regarder les heures : ven 12:00 , on rajoute une heure par carreau ce qui donne environ vers 16h30 / 17h.

Trackbacks

Aucun trackback pour le moment.

Les trackbacks pour ce billet sont fermés.

Commentaires

Le mardi 4 mars 2008 à 22:53, Clemiou a écrit :

C'est propre, clair, bien expliqué.

Bravo KissCoolMan.

Le mercredi 29 octobre 2008 à 14:55, Too a écrit :

Tres bon tuto très bien expliqué bravo !

Ajouter un commentaire