Monitorer son serveur avec Munin
Par Dju » 12 janvier 2010 (01:35) - Serveur
Après avoir mis en place Monit pour surveiller l'état des services, voici aujourd'hui comment installer et configurer munin, dont le but est de collecter régulièrement les données comme l'espace disque dur, l'utilisation de la ram, du processeur, les températures, les accès apache etc... et d'en faire des jolis graphiques, qui seront mis à jours régulièrement.
Cela permet surtout d'avoir une vue sur l'évolution des données à long terme
Tout d'abord, une petite explication sur comment fonctionne munin, à savoir en 2 temps :
1/ le service munin-node écoute sur un port tcp de notre choix, afin de pouvoir récupérer les données
2/ ensuite script tourne régulièrement (toutes les 5 minutes par défaut), interroge ce service, collecte les données et calcule les graphiques
Par défaut, la configuration se fait dans /etc/munin/ et les fichiers générés (html et graphs au format png) dans _/var/www/munin/_
(Il faudra que vous ayez paramétré votre serveur web pour accéder à ce dossier afin de vous extasier devant ces œuvres d'art :D )
Une fois dans le dossier /etc/munin/ on a plusieurs fichiers et dossiers :
- le fichier munin.conf: dans lequel on indique sur quelle(s) machine(s) on va récupérer les données
- le fichier __munin-node.conf_: la ou on configure les accès depuis d'autres machines, ainsi que l'ip et le port sur lequel le service va écouter
- le dossier plugin-conf.d: contient les parmètres des plugins
- le dossier plugins: contient les plugins. ce sont les scripts chargés de récupérer les données
- le dossier templates: contient les templates html qu'on peut modifier à loisir
1/ configuration de munin.conf
voici les données essentielles à éditer selon vos besoins
htmldir: indique ou seront générés les fichiers html et graphiques, par défaut dans /var/www/munin/
logdir: ou sont enregistrés les logs
et le plus important du fichier, quelle machine doit on surveiller
[localhost.localdomain]
address 127.0.0.1
use_node_name yes
indique ici qu'on va se connecter à la machine locale, sur le port tcp 4949 (par défaut).
use_node_name à yes si on veut voir apparaitre le nom de la machine. par défaut à oui.
Par exemple, depuis le zotac,je souhaite également surveiller mon routeur. je rajoute donc
[routeur]
address 192.168.0.1
use_node_name yes
2/ configuration de munin-node.conf
Ici on va définir qui a accès aux données de la machine sur laquelle on vient d'installer munin.
Par défaut on a
allow ^127\.0\.0\.1$
pour autoriser juste la machine en local.
Cette clé "allow" utilise une expression régulière. on indique donc ^ pour indiquer le début de la chaine, puis l'ip dont on échappe les points avec un \ et enfin un $ pour indiquer la fin.
Ensuite on indique sur quelle ip on veut que le service écoute
host 127.0.0.1
Par défaut, c'est en local uniquement, mais on peut mettre une autre ip si veut être "écoutable" sur le réseau, ou 0.0.0.0 pour toutes les ip de la machine.
Enfin on indique le port sur lequel écouter
port 4949
4949 étant le port tcp par défaut
3/ configuration des plugins
Haaa voila le point le plus interessant :w
En premier il faut savoir ce qu'est un plugin. C'est tout simple, c'est un script (dont le langage peut être le perl, le script shell, le php, le python... ou autre ) qui va récuperer une ou plusieurs données précise à un instant t, et l'écrire dans la sortie standard.
Il est donc très facile de se faire soi même un plu gin pour monitorer quelque chose que l'on souhaite surveller. J'en ai d'ailleurs écrit moi même quelques un, par exemple pour surveiller les connections imaps au serveur mail de mon boulot (beaucoup de outlook assez irrespectueux balançant 4 ou 5 connections à la fois alors que 2 suffisent... :o ), ou d'autres que j'ai un peu améliorer, par exemple les authentifications par SSH, ou l'état des mails délivrés, rejettés etc par postfix.
Bref, ils se trouvent dans le dossier "plugins". Une fois dedans que voit on ? pas des fichier standards mais des liens symboliques.
En effet les plugins sont en fait physiquement enregistrés dans le dossier /usr/share/munin/plugins/ et seuls ce qu'on souhaite utiliser sont linkés dans ce dossier.
Par défaut il y en a deja quelques un qui vous permettront de voir l'utilisation du cpu, de la ram, du disque dur, des netstats, températures et autres... ils sont toutà fait suffisant, mais une fois que vou saurez à peu près ce que fait chaque plugin, rien ne vousempêche de supprimer les liens symboliques de ceux dont vous n'avez pas besoin, et de faire un lien vers d'autres plus utiles
Jettez donc un coup d'oeil dans ces fichiers pour voir comment ils sont écrit afin de vous en inspirer si le coeur vous en dit
Ensuite, pour chaque plugin, un droit d'accès est défini dans le fichier plugin-conf.d/munin-node sous la forme
[nom_du_plugin]
user nom_user
group nom_groupe
autre variable_denvironnement
par exemple, pour le plugin hddtemp_smartctl, on a
[hddtemp_smartctl]
user root
car le plugin utilise la commande smartctl qui ne peut s'executer qu'en root.
Autre exemple,pour les plugin postfix, le fichier de log postfix (généralement /var/log/mail.log) doit pouvoir être lu. On mettra donc les droits sur le groupe adm
[postfix_mailstats]
group adm
Donc à peu près chaque plugin a ses droits, sauf certain qui n'ont pas besoin de plus que les accès de base.
Au passage, si vous cherchez des plugins intéressants, il y en a toute une tripotée ici
Et pour le site officiel, ça se passe la: http://munin.projects.linpro.no/
4/ configuration d'accès http au répertoire munin
Enfin on configure son serveur web pour pouvoir voir tous ces jolis graphiques depuis son navigateur web.
Ici l'accès est autorisé en local (127.0.0.1) et à 192.168.0.1. A vous de l'adapter
Pour apache :
Alias /munin "/var/www/munin/"
<Directory /var/www/munin/>
Order deny,allow
deny from all
allow from 127.0.0.1 192.168.0.1
</Directory
Pour nginx :
server {
...
location /munin {
root /var/www;
index index.html;
allow 127.0.0.1;
allow 192.168.0.1;
deny all;
}
}
Enfin, n'oubliez pas de redémarrer munin pour valider votre configuration :
/etc/init.d/munin-node restart
De même pour chaque fois que vous installez un nouveau plugin. Enregistrez le dans /usr/share/munin/plugins/ puis faites en un lien symbolique vers /etc/munin/plugins/votre_plugin et redémarrez munin pour valider.
Si vous souhaitez changer la fréquence de récuperation des données (par défaut toutes les 5 minutes) ça se passe dans /etc/cron.d/munin
Il y a une ligne lancant la récuperation :
*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
ne mettez pas moins de 5 minutes car ça ne servirait pas à grand chose, si ce n'est à utiliser beaucoup de ressources. En moyenne, 10mn est pas mal.
Egalement, ne transformez pas munin en usine à gaz en installant 10 mille plugins qui ne vous serviront pas. Voyez desquels vous avez besoin et désactivez les autres
Au final, attendez 10/15 minutes, lancez votre naviguateur web sur http://votre_machine/munin/ et admirez
Et si vous avez un jouli zotac mag dont vous voulez monitorer les températures, allez lire ce précèdent billet pour savoir comment les obtenir.
Après, activez le plugins sensors pour avoir le cpu
ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp
Activez la plugin hddtemp_smartctl pour le disque dur
ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/hddtemp_smartctl
Et pour la carte graphique (qui est toujours à 55/56°), j'ai écrit un plugin en script shell qui récupère les températures grâce à la commande nvclock -i
De même, à enregistrer dans /usr/share/munin/plugins et faire un lien symbolique
ln -s /usr/share/munin/plugins/nvclock /etc/munin/plugins/nvclock
Et rajouter dans /etc/munin/plugin-conf.d/munin-node
[nvclock]
user root
EDIT: raaah quelle buse, j'avais z'oublié le presque plus important : configurer munin pour qu'il puisse vous prévenir par email.
Pour ce faire, dans le fichier munin.conf, on rajoute ces 2 lignes :
contact.moi.command mail -s "Notification Munin pour ${var:host}" mon_adresse@mondomaine.comdans ces 2 lignes, "moi" est le nom du contact, vous pouvez mettre ce que vous voulez, ou meme vous faire plusieurs contacts.
contact.moi.always_send warning critical
dans la 1è ligne on indique la commande utilisée pour envoyer un mail d'alerte (avec dans le sujet la variable host)
dans la 2è ligne, on définit le type d'alerte à envoyer à notre contact.
On peut ainsi se faire un 1er contact qui ne recevra que les warnings, et un 2è pour les cas de force majeurs, qui recevra les alertes critiques
bonjour,
alors à chaque foi que je veux visualiser des nouveaux plugins j'aurai que ceux qui se trouve par defaults (cpu, de la ram, du disque dur, des netstats, températures...) sachant que j'ai fait les liens et tous, que doit-je faire???
bboyhlif > bonjour. lorsque vous ajoutez / modifiez / supprimez un plugin de munin, il faut le redémarrer pour qu'il le prenne en compte
> /etc/init.d/munin-node restart
et voila
Fil des commentaires de ce billet
URL de rétrolien : https://blog.crifo.org/trackback/24