MRTG, un tutoriel simple et rapide

Date: 1/02/2010 | Catégories: Open-source,Reseau | Tags: ,

Si vous suivez ce blog, vous devez sûrement connaitre Cacti, l'outil permettant de générer des graphes visualisation via une interface HTML/PHP. La solution, bien que simple à mettre en oeuvre nécessite quelques manipulations. Nous allons voir dans ce billet une autre solution beaucoup moins lourde et simple à mettre en oeuvre: MRTG. Nous nous limiterons à la génération de graphes représentant la bande passante des interfaces réseau mais l'on peut bien sûr "grapher" toutes les mesures récupérables via SNMP. La machine qui hébergera notre MRTG est sous Unbuntu 9.10 (mais la procédure est globalement la mêmes sur les autres distribution GNU/Linux).

Installation

[shell]
sudo aptitude install mrtg
[/shell]

Création du répertoire Web

[shell]
sudo mkdir /var/www/mrtg
[/shell]

Pour être propre, je vous conseille de créer un sous-répertoire par machine à superviser. Par exemple:

[shell]
sudo mkdir /var/www/mrtg/A.B.C.D
[/shell]

Ajout d'une machine à superviser

Pour superviser le trafic de toutes les interfaces réseau de la machine d'adresse ip A.B.C.D (hébergeant un serveur SNMP configuré avec public comme utilisateur en lecture seule), il faut saisir la commande suivante:

[shell]
cfgmaker --global 'WorkDir: /var/www/mrtg/A.B.C.D' \
--ifdesc=descr \
--global 'Language: french' \
--global 'Options[_]: bits,growright' \
public@A.B.C.D > /var/www/mrtg/A.B.C.D/A.B.C.D.cfg
[/shell]

Les options permettent:

  • de nommer les interfaces réseaux par leur description: --ifdesc=descr
  • de passer l'interface de MRTG en Francais: --global 'Language: french'
  • de mettre les graphes en bits/sec et de les dessiner de la droite vers la gauche: --global 'Options[_]: bits,growright'

Il est bien sur possible d'éditer le fichier de configuration (/var/www/mrtg/A.B.C.D/A.B.C.D.cfg) à la main, pour changer la configuration de MRTG.

Gérérer automatiquement les graphes

Il faut pour cela lancer automatiquement le binaire /usr/bin/mrtg toutes les 5 minutes. Nous allons donc créer un script SHELL que nous lancerons en utilisant la crontab.

[shell]
vi /usr/local/bin/mrtgcron.sh

#!/bin/sh
# /var/www/mrtg/A.B.C.D
env LANG=C /usr/bin/mrtg /var/www/mrtg/A.B.C.D/A.B.C.D.cfg
[/shell]

Puis on lui donne les droits en exécution:

[shell]
chmod a+x /usr/local/bin/mrtgcron.sh
[/shell]

Et enfin, on programme la crontab (crontab -l) en ajoutant la ligne suivante:

[shell]
*/5 * * * * /usr/local/bin/mrtgcron.sh
[/shell]

Il ne reste plus que 5 minutes à attendre avant de consulter ses graphe à l'URL suivante:

http://adresse_ip_serveur_mrtg/mrtg/A.B.C.D/

Création d'un fichier d'index pour votre site Web

Quand vous accédez à votre page Web MRTG, vous avez une liste de fichiers peu lisible. Heureusement, MRTG est fourni avec un utilitaire nommée indemaker permettant de générer un fichier index.html beaucoup plus "user/chief friendly".

Pour générer cet index sur notre répertoire A.B.C.D, il faut saisir la commande suivante:

[shell]
indexmaker --title='MRTG - A.B.C.D'
--sort=descr \
--sidebyside /var/www/mrtg/A.B.C.D/A.B.C.D.cfg \
--output=/var/www/mrtg/A.B.C.D/index.html
[/shell]

Et voili, l'accès via l'URL http://adresse_ip_serveur_mrtg/mrtg/A.B.C.D est quand même plus sympathique...

Section spécial gros fainéants

Voici un petit script SHELL qui va vous simplifier la vie (enfin l'ajout de machine à superviser dans MRTG...):

[shell]

#!/bin/sh

# mrtgadd.sh

# Ajout d'une machine a superviser

# Nicolargo - GPL

#

# Syntaxe: mrtgadd.sh <nom_de_la_machine> <adresse_ip_de_la_machine>

MRTGADD_DIR=/var/www/mrtg/$1

echo "Création du répertoire: $MRTGADD_DIR"

sudo mkdir $MRTGADD_DIR

MRTGADD_CFG=$MRTGADD_DIR/$1.cfg

echo "Génération de la configuration MRTG: $MRTGADD_CFG ($2)"

sudo cfgmaker --global "WorkDir: $MRTGADD_DIR" \

--ifdesc=descr \

--global 'Language: french' \

--global 'Options[_]: bits,growright' \

public@$2 > $MRTGADD_CFG

MRTGADD_CRONSCRIPT=/usr/local/bin/mrtgcron.sh

echo "Modification du script $MRTGADD_CRONSCRIPT"

sudo cp $MRTGADD_CRONSCRIPT $MRTGADD_CRONSCRIPT.old

sudo cat <<EOF >> $MRTGADD_CRONSCRIPT

# $MRTGADD_DIR

env LANG=C /usr/bin/mrtg $MRTGADD_CFG

EOF

echo "Generation du fichier Index"

sudo indexmaker --title="MRTG - $1" \

--sort=descr \

--sidebyside $MRTGADD_CFG \

--output=$MRTGADD_DIR/index.html

[/shell]

Conclusion

MRTG est un bien bel outil dont pas mal de logiciel "webifier" se servent comme générateur de graphe. Il est simple et souple à installer et transparent à utiliser... Et vous êtes vous un fan de cet outil libre ?

Partager ce billet