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

01/12/2006 - 61312 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


terminal.pngServeur ftp proftpd avec utilisateurs virtuels sous linux debian ubuntu
Ce tutoriel vous présente comment installer le serveur ftp proftpd à partir des paquets debian. Pour éviter de créer autant d'utilisateurs Linux que de compte FTP il est possible de créer des utilisateurs virtuels seulement disponibles pour le serveur FTP
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
encrypted.pngSauvegarde par ssh avec la commande scp avec clé publique - clé privée
Ce tutoriel présente comment effectuer une copie de fichier entre 2 serveurs en utilisant scp, en passant par des clé publique et clé privée afin de ne pas avoir à saisir de mot de passe
cdcopy.pngMettre à jour debian etch 4.0 vers debian lenny 5.0
Ce mini tutoriel vous explique comment mettre à jour votre distribution stable debian de etch 4.0 à lenny 5.0
encrypted.pngConnexion ssh sous debian sarge avec clé publique - privée
Ce tutoriel vous présente comment vous connecter sur votre serveur Linux en ssh, scp, sftp à partir de Windows avec clé publique privée
terminal.pngCréation d'un virtualhost sous apache2
Ce mini tutoriel vous présente comment créer un virtualhost apache
mycomputer.pngOutils intéressants sous Linux
Voici quelques outils intéressants pour vous faciliter la vie sous Linux : nmap, nslookup
terminal.pngCommandes de base Debian et Ubuntu
Liste de commandes Linux les plus utilisées et les plus courantes sous Debian et Ubuntu avec les options qui vont biens
mail_generic.pngProblème à l'installation d'Exim4 : Could not perform immediate configuration on 'exim4-daemon-light'. sous Linux Debian
Il peut arriver que vous rencontriez un problème lors de l'installation d'Exim4, une erreur du style : Could not perform immediate configuration on 'exim4-daemon-light'.