Installer et configurer MRTG sous Debian

2009-12-23

Vous voudriez pouvoir surveiller facilement et en un coup d'œil ce qui se passe sur votre serveur et/ou votre réseau ? MRTG est l'outil qu'il vous faut ! Vous allez en effet pouvoir exploiter des résultats provenant de scripts de votre choix (perl, php, bash, ...) et en faire un rendu graphique. Cet outil existe depuis des années, mais je profite du fait de le déployer à nouveau sur mon serveur pour en faire un article.
Installation et commandes de base
Commençons par installer MRTG et les paquets SNMP (en fait snmpd) via apt-get :
apt-get install mrtg snmpd
Il nous faut maintenant configurer SNMP afin que l'on puisse écouter les données. Pour celà, modifiez le fichier "/etc/snmp/snmpd.conf" via la commande nano :
nano /etc/snmp/snmpd.conf
Recherchez et commentez les lignes comme suit :
### commenter cette ligne ###
# com2sec paranoid  default  public
### décommenter cette ligne  ###
com2sec readonly  default  public
Ensuite, redémarrez le service snmpd :
/etc/init.d/snmpd restart
Nous allons maintenant générer le fichier de configuration de base de MRTG avec les informations qu'il peut récupérer via SNMP. Nous y ajouterons des scripts fais maison par la suite. Pour générer le fichier, tapez :
cfgmaker public@127.0.0.1 --global 'Language: French' > /etc/mrtg.cfg
Une fois le fichier généré, nous pouvons générer la première page d'index :
indexmaker --output /var/www/mrtg/index.html /etc/mrtg.cfg --columns=2 --nolegend
Nous supposons ici que le DocumentRoot de votre Apache est situé sur "/var/www". L'option "--columns 2" précise que les graphiques seront présentés sur deux colonnes et "--nolegend" enlève la publicité pour MRTG en bas de l'index ;-) De base, vous aurez donc le graph de votre connexion réseau.
Améliorer MRTG avec quelques scripts
Premier script : Grapher le ping vers Free.fr (par exemple)
Nous allons pour celà utiliser le script perl suivant et le placer dans le répertoire "/etc/mrtg" créé précédemment:
nano /etc/mrtg/ping
Puis saisissez le script suivant :
#!/bin/sh
P=`ping  -c3 -q free.fr | grep avg | cut -d" " -f4`
MIN=`echo $P | cut -d"/" -f1`
MAX=`echo $P | cut -d"/" -f2`
echo $MAX
echo $MIN
Vous pouvez bien évidemment remplacer "free.fr" par l'host ou l'IP de votre choix. Nous allons maintenant définir le droit d'accès au script pour l'utilisateur propriétaire du fichier :
chmod 700 /etc/mrtg/ping
... et ensuite insérer les lignes suivantes dans notre fichier de configuration (/etc/mrtg.cfg) :
#######################################
# Script de ping vers Free.fr
#######################################

Target[ping_free]: `/etc/mrtg/ping`
Options[ping_free]: nopercent,growright,gauge,noinfo, nobanner
MaxBytes[ping_free]: 10000
AbsMax[ping_free]: 10000
YLegend[ping_free]: Latence
ShortLegend[ping_free]: ms
Legend1[ping_free]: Latence max en ms
Legend2[ping_free]: Latence min en ms
LegendI[ping_free]: Latence Max:
LegendO[ping_free]: Latence Min:
Title[ping_free]: Ping sur free.fr
PageTop[ping_free]: Latence free.fr
WithPeak[ping_free]:wmy
Legend4[ping_free]: Max de la latence min
Legend3[ping_free]: Max de la latence max
Ne pas oublier de regénérer la page d'index avec la commande suivante :
indexmaker --output /var/www/mrtg/index.html /etc/mrtg.cfg --columns=2 --nolegend
Deuxième script : Grapher la mémoire cache
Graphons maintenant la mémoire cache utilisée par le serveur via le script bash suivant (à écrire dans "/etc/mrtg/memory") :
#!/bin/sh
USED=`free -b | grep cache: | cut -d ":" -f2 | cut -c1-11`
FREE=`free -b | grep cache: | cut -d ":" -f2 | cut -c12-22`
echo $FREE
echo $USED
Donnez les droits sur votre fichier script et saisissez les lignes suivantes dans votre fichier de configuration ("/etc/mrtg.cfg") :
chmod 700 /etc/mrtg/memory
#######################################
# Script de mémoire cache
#######################################

Target[mem]: `/etc/mrtg/mem`
Options[mem]: nopercent,growright,gauge,noinfo, nobanner
Unscaled[mem]:dwmy
MaxBytes[mem]: 261025792
Kilo[mem]:1024
YLegend[mem]: RAM
ShortLegend[mem]: o
Legend1[mem]: Mémoire libre
Legend2[mem]: Mémoire utilisée
LegendI[mem]: Mém. Libre:
LegendO[mem]: Mém. Utilisée:
Title[mem]: Mémoire
PageTop[mem]:

Mémoire

WithPeak[mem]:wmy Legend3[mem]: Mémoire libre max Legend4[mem]: Mémoire utilisée max
Puis biensûr, regénérez votre fichier index :
indexmaker --output /var/www/mrtg/index.html /etc/mrtg.cfg --columns=2 --nolegend
Attention à ne pas exploser votre mémoire cache maintenant ;)
Troisième script : Grapher l'utilisation du CPU
Pour ce graph, nous allons nous servir d'un outil qu'il va falloir installer via la commande suivante :
apt-get install sysstat
puis simplement éditer le fichier de configuration afin d'activer cet outil. Ouvez le fichier "/etc/default/sysstat" et remplacez la valeur suivante définie à "false" par "true" :
# ENABLED="false"
ENABLED="true"
Ecrivez ensuite le script perl suivant dans "/etc/mrtg/cpu" :
#!/usr/bin/perl
@line = `/usr/bin/sar | grep all | /usr/bin/tail -n 2 | /usr/bin/head -n 1 | /bin/sed 's/  */ /g'`;
@data = split(/ /, @line[0]);
if (@data[2] eq "") {
printf "0
";
}else {
printf ("%3.0f
", @data[2] + 0.5);
}
printf ("%3.0f
", (@data[3])+(@data[2])+(@data[4]+0.5));
$uptime = `/usr/bin/uptime | sed 's/  */ /g'`;
@uptime = split(/,/, $uptime);
@uptime = split(/up/, @uptime[0]);
$server = `/bin/uname -n`;
printf "@uptime[1]
";
printf $server;
Donnez les droits (encore et toujours) puis insérez les lignes suivantes dans le fichier de configuration MRTG ("/etc/mrtg.cfg") :
#######################################
# Script d'utilisation CPU
#######################################

Target[cpu]: `/etc/mrtg/cpu`
Options[cpu]: nopercent,growright,gauge,noinfo, nobanner
#Unscaled[cpu]:dwmy
MaxBytes[cpu]: 100
YLegend[cpu]: % CPU
ShortLegend[cpu]: % CPU
Legend1[cpu]: % CPU Utilisateur
Legend2[cpu]: % CPU Utilisateur + Système
LegendI[cpu]: Utilisateur:
LegendO[cpu]: Total:
Title[cpu]: CPU
PageTop[cpu]: CPU
WithPeak[cpu]:wmy
Legend3[cpu]: Max % CPU Utilisateur
Legend4[cpu]: Max % CPU Utilisateur + Système
Regénérez votre index, et nous en avons terminés ! Notez que vous pouvez vous baser sur ces types de scripts pour réaliser très facilement les votres, c'est d'ailleurs ce qui est très intéressant avec MRTG.

Comments