Installation d'un systeme de monitoring MRTG (Multi Router Traffic Grapher) sous debian

01/12/2006 - 56875 consultations - 1 commentaire


Ce tutoriel a pour but d'installer l'outil de monitoring MRTG. Cet outil permet de générer des graphiques en fonction de données SNMP, ou de scripts shell.

Sommaire :

=> Installation de base SNMP et MRTG
=> Ajouter un graphique de contrôle du ping
=> Ajouter un graphique de contrôle de la mémoire CACHE
=> Ajouter un graphique de contrôle de la mémoire RAM
=> Ajouter un graphique de surveillance CPU (1ère méthode)
=> Ajouter un graphique de surveillance CPU (2ème méthode)
=> Ajouter un graphique de surveillance de Hits Apache2
=> Ajouter un graphique de surveillance de Traffic Apache2
=> Ajouter un graphique de contrôle des requêtes MySQL
=> Ajouter un graphique de contrôle de traffic réseau

Installation de base SNMP et MRTG :

Installer snmpd :
# apt-get install snmpd

Editer le fichier de configuration du serveur snmp afin de le rendre utilisable par MRTG :
# nano /etc/snmp/snmpd.conf
    ### commenter cette ligne ###
        # com2sec paranoid  default         public
     ### décommenter cette ligne  ###
        com2sec readonly  default         public

Redémarrer snmpd :
# /etc/init.d/snmpd restart

Installer MRTG :
# apt-get install mrtg

Créer le dossier /etc/mrtg qui contiendra les scripts spécifiques :
# mkdir /etc/mrtg

Créer le fichier de configuration par défaut de MRTG :
# cfgmaker public@127.0.0.1 --global 'Language: French'  > /etc/mrtg.cfg

Créer l'index.html MRTG afin de visionner le 1er graphique :
# indexmaker --output /var/www/mrtg/index.html /etc/mrtg.cfg --columns=2 --nolegend
L'option --columns=2 indique qu'on affiche 2 graphiques par ligne
L'option --nolegend indique qu'on affiche pas le bas de page publicitaire de MRTG
haut

Ajouter un graphique de contrôle du ping : 

Créer le script ping /etc/mrtg/ping :
#!/bin/sh
P=`ping  -c3 -q 217.12.3.11|grep avg|cut -d" " -f4`
MIN=`echo $P|cut -d"/" -f1`
MAX=`echo $P|cut -d"/" -f2`
echo $MAX
echo $MIN

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/ping

Ajouter la configuration du script ping à /etc/mrtg.cfg :
#---------Ping YAHOO--------------------
Target[ping_yahoo]: `/etc/mrtg/ping`
Options[ping_yahoo]: nopercent,growright,gauge,noinfo, nobanner
MaxBytes[ping_yahoo]: 10000
AbsMax[ping_yahoo]: 10000
YLegend[ping_yahoo]: Latence
ShortLegend[ping_yahoo]: ms
Legend1[ping_yahoo]: Latence max en ms
Legend2[ping_yahoo]: Latence min en ms
LegendI[ping_yahoo]: Latence Max:
LegendO[ping_yahoo]: Latence Min:
Title[ping_yahoo]: Ping sur yahoo.fr
PageTop[ping_yahoo]: <h1>Latence yahoo.fr</h1>
WithPeak[ping_yahoo]:wmy
Legend4[ping_yahoo]: Max de la latence min
Legend3[ping_yahoo]: Max de la latence max
#--------end ping-----------------------------

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend
haut

Ajouter un graphique du contrôle de la mémoire cache :

Ajouter le script mem /etc/mrtg/mem :
#!/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

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/mem

Ajouter la conf du script mem à /etc/mrtg.cfg :
#---------Memory--------------------
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]: <h1>Mémoire</h1>
WithPeak[mem]:wmy
Legend3[mem]: Mémoire libre max
Legend4[mem]: Mémoire utilisée max
#--------end Memory-----------------------------

Puis générer l'index.html :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend
haut

Ajouter un graphique du contrôle de la mémoire RAM :

Ajouter le script mem2 /etc/mrtg/mem2 :
#!/bin/sh
USED=`free -b|grep Mem| cut -d ":" -f2|cut -c16-26`
FREE=`free -b|grep Mem| cut -d ":" -f2|cut -c27-37`
echo $USED
echo $FREE

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/mem2

Ajouter la conf du script mem à /etc/mrtg.cfg :
#---------Memory--------------------
Target[mem]: `/etc/mrtg/mem2`
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]: <h1>Mémoire</h1>
WithPeak[mem]:wmy
Legend3[mem]: Mémoire libre max
Legend4[mem]: Mémoire utilisée max
#--------end Memory-----------------------------

Puis générer l'index.html :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend
haut


Ajouter un graphique de contrôle de l'utilisation processeur (1ère méthode) :


Pour utiliser ce script, il faut installer le package sysstat (commande sar) :
# apt-get install sysstat

Activer le processus sysstat en remplaçant FALSE par TRUE dans le fichier /etc/default/sysstat :
# ENABLED="false"
ENABLED="true"

Ajouter le script cpu /etc/mrtg/cpu1 :
#!/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\n";
}else {
printf ("%3.0f\n", @data[2] + 0.5);
}
printf ("%3.0f\n", (@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]\n";
printf $server;

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/cpu1

Ajouter la configuration du script cpu1 à /etc/mrtg.cfg :
#---------CPU-------------------
Target[cpu]: `/etc/mrtg/cpu1`
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]: <h1>CPU</h1>
WithPeak[cpu]:wmy
Legend3[cpu]: Max % CPU Utilisateur
Legend4[cpu]: Max % CPU Utilisateur + Système
#--------end CPU-----------------------------

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend
haut

Ajouter un graphique de contrôle de l'utilisation processeur (2ème méthode) :

Ajouter le script cpu /etc/mrtg/cpu2 :
#!/usr/bin/perl
#Affichage de la consommation cpu pour MRTG
my $cpu =`cat /proc/stat | grep "cpu  "`;
$cpu=~ /cpu  (.*) (.*) (.*) (.*)/;
my $conso = $1 + $2 + $3;
$conso = int($conso);
print "$conso\n";
print "$conso\n";

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/cpu2

Ajouter la configuration du script cpu2 à /etc/mrtg.cfg :
#---------CPU-------------------
Target[cpu2]: `/etc/mrtg/cpu2`
Options[cpu2]: noinfo, nopercent, growright, nobanner, noi
Title[cpu2]: Suivi de la consommation du CPU2
MaxBytes[cpu2]: 9999999999
YLegend[cpu2]: CPU2
ShortLegend[cpu2]: %
LegendO[cpu2]: CPU2
Legend2[cpu2]: CPU2
PageTop[cpu2]: <H1>Suivi de la consommation du CPU2</H1>
WithPeak[cpu2]:wmy
Legend3[cpu2]: Max % CPU Utilisateur
Legend4[cpu2]: Max % CPU Utilisateur + Système
#--------end CPU-----------------------------

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend
haut


Ajouter un graphique de surveillance de Hits Apache2


Il vous faut bien évidemment avoir apache2 d'installé ( ce tutoriel vous indique comment l'installer ) ainsi que lynx.
Il faut décommenter la partie server-status dans la configuration d'Apache2 pour avoir accès aux status serveur :
# nano /etc/apache2/apache2.conf
Verifier la présence de ses lignes, les ajouter si besoin :
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
ExtendedStatus On
sauvegarder le ficher et redémarrer apache2 :
# /etc/init.d/apache2 restart

Ajouter le script apache2 /etc/mrtg/apache2 : (qui servira pour les hits et pour le traffic apache2)
#!/usr/bin/perl
# can return hits or bytes (counters)
@res = `lynx -dump http://localhost:80/server-status`;
foreach $res (@res) {
    if ($res =~ /Server uptime: (.*)$/) { $up = $1; last } else { next }
    if ($res =~ /Server at/) { $server = $res; last } else { next }
}

@res = `lynx -dump http://localhost:80/server-status?auto`;

foreach $res (@res) {
    if ($res =~ /Total Accesses: (\d+)/) { $d1 = $1; next }
    if ($res =~ /Total kBytes: (\d+)/) { $d2 = $1 * 1024; next }
}
$d1 = int($d1);
$d2 = int($d2);
if ($ARGV[0] eq "hits") {
    print "$d1\n";
    print "$d1\n";
} elsif ($ARGV[0] eq "bytes") {
    print "$d2\n";
    print "$d2\n";
}
print "$up\n";
print "$server";

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/apache2

Ajouter la configuration du script apache2_hits à /etc/mrtg.cfg :
#---------Apache2 hits-----------------------
Target[apache2_hits]: `/etc/mrtg/apache2 hits`
Options[apache2_hits]: perhour, nopercent, growright, noinfo, nobanner, noi
PageTop[apache2_hits]: <h1>Hits Apache2</h1>
MaxBytes[apache2_hits]: 1000000
YLegend[apache2_hits]: hits/heure
ShortLegend[apache2_hits]: par heure &nbsp;&nbsp;
LegendO[apache2_hits]: Hits:
Legend2[apache2_hits]: Hits horaires
Legend4[apache2_hits]: Hits Horaires max
Title[apache2_hits]: Hits horaires du serveur Apache
WithPeak[apache2_hits]: wmy
#------------End Apache2 Hits------------------

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend

Ajouter un graphique de surveillance de Traffic Apache2


Il vous faut bien évidemment avoir apache2 d'installé ( ce tutoriel vous indique comment l'installer ) ainsi que lynx.
Il faut décommenter la partie server-status dans la configuration d'Apache2 pour avoir accès aux status serveur :
# nano /etc/apache2/apache2.conf
Verifier la présence de ses lignes, les ajouter si besoin :
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
ExtendedStatus On
sauvegarder le ficher et redémarrer apache2 :
# /etc/init.d/apache2 restart

Ajouter le script apache2 /etc/mrtg/apache2 : (qui servira pour les hits et pour le traffic apache2)
#!/usr/bin/perl
# can return hits or bytes (counters)
@res = `lynx -dump http://localhost:80/server-status`;
foreach $res (@res) {
    if ($res =~ /Server uptime: (.*)$/) { $up = $1; last } else { next }
    if ($res =~ /Server at/) { $server = $res; last } else { next }
}

@res = `lynx -dump http://localhost:80/server-status?auto`;

foreach $res (@res) {
    if ($res =~ /Total Accesses: (\d+)/) { $d1 = $1; next }
    if ($res =~ /Total kBytes: (\d+)/) { $d2 = $1 * 1024; next }
}
$d1 = int($d1);
$d2 = int($d2);
if ($ARGV[0] eq "hits") {
    print "$d1\n";
    print "$d1\n";
} elsif ($ARGV[0] eq "bytes") {
    print "$d2\n";
    print "$d2\n";
}
print "$up\n";
print "$server";

Donner les droits d'exécution root à ce script :
# chmod 700 /etc/mrtg/apache2

Ajouter la configuration du script apache2_traffic à /etc/mrtg.cfg :
#---------Apache2 Traffic-----------------------
Target[apache2_traffic]: `/etc/mrtg/apache2 bytes`
Options[apache2_traffic]: nopercent, growright, noinfo, nobanner, noi
PageTop[apache2_traffic]: <h1>Traffic Apache</h1>
MaxBytes[apache2_traffic]:16000
AbsMax[apache2_traffic]:20000
YLegend[apache2_traffic]: octets/s
ShortLegend[apache2_traffic]: o/s
LegendO[apache2_traffic]: Traffic Apache:
Legend2[apache2_traffic]: Traffic Apache
Title[apache2_traffic]: Traffic du serveur Apache
WithPeak[apache2_traffic]: wmy
Legend4[apache2_traffic]: Traffic max Apache
#------------End Apache2 Traffic------------------

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend


Ajouter un graphique de contrôle des requêtes MySQL

Il faut bien sûr que MySQL soit installé, à partir de là, on installe le script qui va permettre de récupérer les statistiques.
Pour cela on télécharge un script déjà fait à l'adresse suivante : http://www.bitbybit.dk/mysql/mrtg-mysql-load/
Télécharger le fichier suivant : mrtg-mysql-load v. 1.02 (tar.gz, 20kb)
Le décompresser dans le dossier /etc/mrtg/ et lui donner les droits d'éxecution en root :
# chmod 700 /etc/mrtg/mrtg-mysql-load

Ajouter la configuration du script mrtg-mysql-load à /etc/mrtg.cfg : (en précisant les host, login et mot de passe mysql)
#----------------MYSQL---------------#
Target[myserver.MySQL]: `/etc/mrtg/mysql -u utilisateur -p mot_de_passe -h host`
Options[myserver.MySQL]: perminute, nopercent, integer, growright
MaxBytes[myserver.MySQL]: 200
AbsMax[myserver.MySQL]: 100000
Unscaled[myserver.MySQL]: dwmy
Title[myserver.MySQL]: MySQL load analysis - BDD
PageTop[myserver.MySQL]: <H1>MySQL load Analysis - BDD</H1>
YLegend[myserver.MySQL]: # of questions
ShortLegend[myserver.MySQL]: q/m
Legend1[myserver.MySQL]: # of questions
Legend2[myserver.MySQL]: # of slow queries
Legend3[myserver.MySQL]: Maximal # of questions per min.
Legend4[myserver.MySQL]: Maximal # of slow queries per min.
LegendI[myserver.MySQL]: &nbsp;# of questions:
LegendO[myserver.MySQL]: &nbsp;# of slow queries:

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend


Ajouter un graphique de contrôle de traffic réseau


en bleu le traffic en sortie
en vert le traffic en entrée
en orange le pourcentage
Ce graphique indique la bande passante en entrée, la bande passante en sortie, et le pourcentage de l'un par rapport à l'autre.
Pour cela ajoutez seulement cette configuration au fichier /etc/mrtg.cfg :
#----------------eth0---------------#
Target[eth0]: `perl -e '@a=split(/[:\s]+/,qx(grep eth0 /proc/net/dev));printf "%.0f\n%.0f\n1\neth0 traffic\n",$a[2],$a[10];'`;
Options[eth0]: dorelpercent, growright, nobanner, noinfo, transparent
MaxBytes[eth0]: 2000000
AbsMax[eth0]: 10000000
kilo[eth0]: 1024
YLegend[eth0]: Bytes per second
ShortLegend[eth0]: B/s
Legend1[eth0]: Incoming Traffic in Bytes per second
Legend2[eth0]: Outgoing Traffic in Bytes per second
LegendI[eth0]: In:
LegendO[eth0]: Out:
Title[eth0]: net eth0 traffic
PageTop[eth0]: <H1>net eth0 traffic</H1>

Regénérer l'index.html MRTG :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg --nolegend




Commentaires (1)

Philou - 12/04/2015 à 12h12
Merci pour ce tuto qui m'a permis de configurer mon MRTG !! Vraiment super pratique :)

Commentez cet article

Nom (obligatoire)
E-mail (obligatoire)
Site Internet (facultatif)
code anti-spam

Me tenir inform� des nouveaux messages


encrypted.pngProtéger un dossier web apache2 par login et mot de passe avec un htaccess et un htpasswd sous debian lenny
Ce tutoriel vous présente comment protéger un répertoire web apache2 par login et mot de passe avec un htaccess et un htpasswd sous debian lenny
kcmdevices.pngInstaller et formater un disque dur externe usb sous Linux Debian Etch
Ce tutoriel vous présente comment installer votre dique usb sous Linux debian de l'installation en passant par le formatage jusqu'au montage dans votre système de fichier
ark.pngApt-proxy, serveur proxy de dépot de paquets debian
Apt-proxy permet de centraliser l'accès aux dépots debian en créant un proxy sur lequel toutes les machines de votre lan vont chercher les paquets à installer et mettre à jour
mycomputer.pngMise à jour de votre distribution Linux Debian 5.0 Lenny à Linux Debian 6.0 Squeeze
Ce tutoriel vous indique comment mettre à jour votre distribution Linux Debian 5.0 Lenny à Linux Debian 6.0 Squeeze
terminal.pngCréer un dépôt git privé sur un hébergement mutualisé ovh
Ce tutoriel vous présente comment installer un dépôt GIT sur votre hébergement mutualisé OVH
ark.pngVérification automatique des mises à jour Linux Debian avec cron-apt
Ce tutoriel vous présente comment savoir simplement quand votre serveur Linux Debian nécessite l'installation de nouvelles mises à jour avec cron-apt.
database.pngInstallation MySQL 5 sous Debian Sarge avec les paquets backports.org
Tutoriel d'installation de MySQL 5 sous Debian Sarge à partir des paquets backports.org
encrypted.pngCorriger l'erreur There is no public key available for the following key IDs après apt-get update
Ce mini tutoriel vous explique comment corriger l'erreur There is no public key available for the following key IDs
database.pngInstallation MySQL 5 sous Debian Etch et Lenny
Tutoriel d'installation de MySQL 5 sous Debian Etch et Lenny à partir des paquets officiels