Munin est un programme très léger et très facile à utiliser. Son rôle est de générer des graphiques sur telle ou telle élément d'une machine. Un peu comme MRTG (plus développé il me semble) et 100 fois plus léger que RRDtools. Pour les besoins de mes serveurs j'ai cherché une solution pour la partie LVM, un plugin existait mais je n'ai jamais réussi à le faire fonctionner, basé sur l'existant je l'ai fais évolué.
Le but de ce plugin n'est pas de connaître l'espace occupé par vos données dans un volume logique mais la répartition et l'espace qu'occupe vos volumes logiques dans un groupe de volume.
Le script est à copier dans le répertoire /usr/share/munin/plugins (sur CentOS). Nommez le lvm_ (attention à l'underscore _ , car une commande lvm existe). Dans mon cas j'ai plusieurs groupe de volumes à surveiller, la solution à été de faire plusieurs liens dans le répertoire /etc/minin/plugins/ qui porte le nom de chacun de mes groupes de volumes. Par exemple :
lrwxrwxrwx 1 root root 29 jun 16 15:32 VolGroupBackup ->; /usr/share/munin/plugins/lvm_ lrwxrwxrwx 1 root root 29 jun 16 15:23 VolGroupSys ->; /usr/share/munin/plugins/lvm_ lrwxrwxrwx 1 root root 29 jun 16 15:33 VolGroupUsers ->; /usr/share/munin/plugins/lvm_
Maintenant le script
#!/bin/sh # # Script to monitor disk usage. # # By PatrickDK # Modify by flipflip # # Parameters understood: # config (required) # autoconf (optional - used by munin-config) # # $Log$ # # Magic markers (optional - used by munin-config and installation # scripts): # #%# family=auto #%# capabilities=autoconf VG=`basename $0` I="" LVS=$(which lvs) VGS=$(which vgs) AWK=$(which awk) GREP=$(which grep) clean_name() { echo $1 | sed 's/[\/.-]/_/g' } case $1 in autoconf) if [ -x $LVS ]; then echo yes exit 0 elif [ -x $VGS ]; then echo yes exit 0 else echo no '(lvm (lvs or vgs) programs not found)' exit 1 fi exit 0 ;; config) echo "graph_title Logical Volume usage $VG" echo "graph_args --base 1024 --lower-limit 0" echo "graph_category disk" echo "graph_info This graph shows disk usage on the machine." echo "free.label free" echo "free.draw AREA" $LVS --units b --nosuffix --noheadings | $GREP $VG | while read I; do NAME=`clean_name $I` echo -n "$NAME.label " echo $I | $AWK '{ print $1 }' echo "$NAME.draw STACK" done exit 0 ;; *) I=`$VGS --units b --nosuffix --noheadings | grep $VG` echo -n "free.value " echo $I | $AWK '{ print $7 }' $LVS --units b --nosuffix --noheadings | $GREP $VG | while read I; do NAME=`clean_name $I` echo -n "$NAME.value " echo $I | $AWK '{ print $4 }' done exit 0 ;; esac
Pour accéder aux commandes vgs et lvs munin doit être exécuter en root mais c'est vraiment pas propre. La solution est de créer un fichier de configuration dans le répertoire /etc/munin/plugin-conf.d. Je l'ai nommé VolGroup pour qu'il correspondent à ça :
[VolGroup*] user root
Maintenante redémarrer le daemon munin-node et patienté quelques minutes. Un jolie graphique vous donnant la répartition de vos Volume logique dans vos volumes groupe devrait apparaître et ressembler à ça :
Il ne vous reste plus qu'à patienter...