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


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
database.pngSauvegarder restaurer base de données MySQL sous Debian
Ce mini tutoriel vous présente comment sauvegarder, et restaurer une base de données MySQL en mode console sous debian
terminal.pngInstallation de subversion un dépôt de données SVN
Vous trouverez dans cet article l'intégralité de l'installation d'un entrepôt de sources subversion, celà permet de gérer les version en développement de sauvegarder toutes les modifications de vos sources de sites ou programmes
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
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
mycomputer.pngInstaller le serveur FTP Proftpd et stocker les utilisateurs dans une base de données MySQL sous Linux Debian Squeeze avec mots de passe encryptés en MD5
Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Squeeze ainsi que la gestion de vos utilisateurs dans une table MySQL avec encryption des mots de passe en MD5
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
mycomputer.pngOutils intéressants sous Linux
Voici quelques outils intéressants pour vous faciliter la vie sous Linux : nmap, nslookup
terminal.pngVider la mémoire cache d'un serveur Linux Debian
Ce tutoriel vous présente comment récupérer la mémoire cache alouée mais non utilisée par le système afin de la rendre disponible aux processus qui en ont besoin.