Analyse de trafic réseau via l'outil MRTG
Objectif :
Analyser le traffic via l'outil MRTG
1)Introduction :
MRTG est un logiciel dédié à la supervision réseau. Il permet d'obtenir toute une série de statistiques (visualisation de charge sur un réseau, utilisation de bande passante...) concernant un appareil informatique (tels que routeurs, serveurs, ou PC) sous forme de représentations graphiques. Il va pour cela chercher des informations directement sur les interfaces des machines du réseau via le protocole SNMP (Simple Network Management Protocol, protocole facilitant l'administration de systèmes à distance).
Outil connu des grandes entreprises, entièrement configurable et gratuit, MRTG (Multi Router Traffic Grapher) est un Freeware constitué de scripts en langage Perl, distribué librement sur le Web (http://www.mrtg.org). Il présente les résultats de ses recherches sur des pages Web classiques, ce qui facilite nettement l'accès à un utilisateur quelconque, quelle que soit la machine utilisée.
Cependant, pour que cet outil soit réellement exploitable et pour en tirer un maximum de possibilités, il est conseillé de le configurer en fonction de l'utilisation que l'on désire en faire. Son avantage est en effet sa polyvalence et son évolutivité: il s'agit d'un logiciel dont les sources sont libres, vous pouvez donc le modifier selon vos besoins et disposer ainsi d'une interprétation de résultats plus personnalisée.2) Présentation de MRTG :
1. Résultats graphiques :
Cette copie d'écran illustre un graphique représentant le niveau de bande passante sur un port de routeur/switch en fonction du temps. La courbe bleue représente le trafic sortant de l'interface, la verte le trafic entrant.
Température d'une machine, charge processeur, tous les paramètres SNMP que peut fournir une machine sont mesurables et interprétables graphiquement.
Urls délivrées par seconde
Temps de réponse du cache
Trafic de/vers les clients
Trafic de/vers les serveurs
Connexions tcp
Différentiel de trafic entrant/sortant
Temps moyen d'obtention d'une url des serveurs
Des exemples de statistiques et de graphes
2. Concrètement, qu'est ce que MRTG ?
Le principe de fonctionnement est relativement simple: une machine d'administration exécute plusieurs processus MRTG (un par appareil à analyser). Celle-ci envoie, à des périodes régulières, des requêtes SNMP sur des interfaces prédéfinies de machines du réseau à analyser (routeurs, commutateurs, serveurs). Après que la machine concernée ait répondu à la requête en donnant ses statistiques d'utilisation, MRTG peut mettre à jour ces graphes en fonction des informations reçues.
Par défaut, une mesure est effectuée toutes les 5 minutes (paramétrable) pour mettre le graphique à jour. Pour chaque appareil, MRTG fournit une représentation par jour, par semaine et même par année. L'outil peut donc générer des moyennes, ce qui constitue un avantage supplémentaire en facilitant la création de statistiques. Les mesures pourront être effectuées sur tous types de machines supportant le protocole SNMP.
Les résultats graphiques sont représentés sur des pages Web, ce qui les rend accessibles depuis n'importe quel navigateur Internet. Il n'y a de ce fait aucun logiciel supplémentaire à installer sur les machines clientes.
Recherches automatiques des informations sur les différentes machines du réseau, appropriation automatiques des nouvelles informations de façon régulière, parmi tous les avantages offerts par MRTG, on peut également évoquer sa facilité d'évolution. Il est entièrement adaptable en fonction des besoins de son utilisateur et facilite nettement les tâches d'administration courantes...3) Installer MRTG sous Unix/Linux :
Dans un premier temps, il vous sera nécessaire de télécharger les librairies liées à l'application.
Une fois cette première étape achevée, nous allons pouvoir passer à la compilation des librairies.
MRTG génère des graphiques au format PNG, il nécessite pour cela plusieurs librairies graphiques. Il y a de grandes chances que ces librairies soient déjà fournies avec votre distribution xBSD ou Linux. Vérifiez donc que vous ne possédez pas déjà les librairies en question avant d'en installer une copie. Si les premiers essais du logiciel ne fonctionnent pas, procurez-vous des versions plus récentes des librairies ci-dessous.
2. Compilation des librairies :
Pour une installation de MRTG sur une distribution de type RedHat ou Mandrake sous forme de package RPM, il vous sera plus simple de vous référer à un article plus spécifique disponible ici. Dans ce cas, vous êtes exempt de la compilation manuelle des fichiers. Vous pouvez poursuivre votre lecture à partir de la configuration de MRTG.
Nous allons maintenant compiler les différentes librairies utilisées par MRTG. Dans le cas où les librairies seraient déjà présentes sur votre système, vous pouvez rejoindre directement le sous titre 3.3 . Le programme "wget" mentionné dans les lignes de commandes ci-dessous est un navigateur Internet. Vous pouvez très bien le remplacer par un "netscape" ou un "mozilla" quelconque.
Créer dans un premier temps un répertoire qui contiendra les fichiers de compilations:
La librairie "zlib" est utilisée par libpng pour compresser les fichiers images qu'il génère. Si zlib n'était pas déjà installé, tapez:
La librairie "libpng" permet à votre système Unix/Linux de concevoir des fichiers images du type "PNG", MRTG l'utilise pour générer les graphiques de statistiques. Si libpng n'était pas déjà installée, tapez:
Vous pouvez à présent compiler "gd", cette librairie génère les graphiques.
3. Compilation de MRTG :
Comme vous pourrez le constater, la version Unix de MRTG est fournie sous forme de codes source, cela implique que vous devrez compiler un certain nombre de fichiers avant de pouvoir l'utiliser sur une machine UNIX ou Linux.
Pour compiler et utiliser MRTG, vous aurez besoin d'un compilateur de langage C ainsi qu'un compilateur Perl. Ces compilateurs sont souvent installés de base suivant les distributions utilisées. Dans le cas contraire, vous les trouverez via les liens suivants:
Nous pouvons à présent nous occuper de la compilation du programme principal. Considérons le sous répertoire /usr/local/mrtg-2 comme répertoire de base pour l'installation de MRTG, de ses utilitaires et librairies associées.
Si toutes les librairies étaient déjà pré-installées sur votre système, vous pouvez configurer MRTG en tapant simplement:
Autrement, vous allez devoir préciser les chemins d'accès aux différentes librairies requises pour compiler MRTG:
Si vous rencontrez des problèmes lors de la compilation, l'origine de l'erreur ainsi que son type vous seront indiqués afin que vous puissiez y remédier. A la suite d'une compilation réussie, vous devez obtenir un fichier Makefile adapté à votre système. Pour cela, tapez:
Cela va construire les fichiers exécutables nécessaires à l'installation. Vous pouvez alors installer MRTG en tapant:
Pour vérifier l'installation du module MRTG, allez dans le répertoire d'installation (ici /usr/local/mrtg-2) et tapez:
S'il n'y a pas d'erreur le module est correctement installé.
4. Configuration de MRTG :
Veillez, avant d'aller plus loin, à activer le protocole ou service SNMP sur tout appareil sur lequel vous souhaitez effectuer des mesures. Il faudra simplement faire attention à ne pas laisser l'accès à n'importe qui sur n'importe quoi.
Aussi, la machine sur laquelle est installé MRTG se doit a fortiori de disposer d'un serveur Web HTTP, afin de présenter les pages après leur construction.
L'ultime étape avant l'utilisation consiste à configurer MRTG pour superviser un appareil réseau (prenons par exemple un routeur). Il faut pour cela créer un fichier mrtg.cfg dans lequel on va définir ce que vous souhaitez voir analyser. Pas d'inquiétude, bien évidemment, vous n'aurez pas à rédiger ce fichier seul(e). Un utilitaire vous est fourni avec MRTG, il s'agit de cfgmaker. Ce n'est en fait rien d'autre qu'un script que vous exécuterez en spécifiant en paramètre l'adresse du routeur dans votre réseau. Il créera alors un fichier de configuration MRTG automatiquement. Vous trouverez ce script dans le sous répertoire bin.
Le script Perl "cfgmaker" crée des fichiers de configuration sur un système en particulier. Ce fichier servira à MRTG pour sélectionner le type de mesure à effectuer sur une machine donnée. MRTG pourra ainsi récupérer les valeurs correspondantes sur la machine via le protocole de communication "SNMP". Voici la syntaxe des commandes à utiliser pour créer un fichier de configuration sur une machine:
L'exemple ci-dessus créera un fichier de configuration dans /home/mrtg/cfg en supposant que ce répertoire est visible sur votre serveur Web (c'est dans l'arborescence de ce répertoire que le navigateur Web devra "browser" afin de visualiser les graphiques de résultats).
Si, après vous être familiarisé avec l'environnement MRTG, vous souhaitez créer vos propres fichiers de configuration, prenez soin de vous informer auparavant sur la page de référence MRTG pour connaître toutes les options de configuration possibles.
Vous pouvez obtenir des exemples de fichiers de configuration sur:
http://www.somix.com/software/mrtg/ (classement par marques)
http://www.wtcs.org/snmp4tpc/mrtg.htm
L'étape de configuration effectuée, pour rendre l'affichage des résultats graphiques plus convivial, il vous faut créer la page HTML d'accueil pour la machine analysée. Pour cela, tapez:
Title -> correspond au titre que portera votre page HTML.
Prefix -> désigne le Dossier où seront stockées les données d'analyses.
Output-> indique le chemin et titre du fichier HTML à créer.
/usr/mrtg/cfg/.../fichier.cfg-> chemin du fichier de configuration.
5. Utilisation de MRTG :
Une fois le fichier de configuration créé, tapez:
Cela va interroger directement votre routeur pour créer vos premières pages Web incorporant des graphiques de trafic. Lors des premières utilisations du programme MRTG, certaines alertes du type: "Rateup WARNING : /usr/local/mrtg-2/rateup Can't rename localhost_2.log to localhost_2.old updating log file"
apparaissent. N'ayez pas d'inquiétude, cela est normal car le programme tente d'écraser des fichiers de log qui n'ont pas encore été créés. En revanche, si le problème persiste après plusieurs utilisations.
Démarrer le processus MRTG manuellement n'est pas la meilleure des solutions à long terme, surtout si on est amené à démarrer plusieurs processus simultanément. C'est pourquoi, il vous est conseillé, à partir du moment ou vous êtes satisfait des résultats obtenus:
Vous pouvez aussi automatiser le démarrage de tous les processus MRTG en créant un script qu'il faudra placer dans la séquence de démarrage de votre système. Malheureusement, la méthode d'ajout dans la séquence de démarrage diffère nettement selon les différents systèmes Unix/Linux. Les derniers possèdent généralement un répertoire nommé /etc/init.d ou /etc/rc.d/init.d dans lequel vous pouvez insérer des scripts (ou des liens symboliques vers ceux-ci) qui s'exécuteront au démarrage de la machine. En cas de doute, consulter la documentation propre à votre distribution.
- de lancer MRTG en tant que "daemon" en ajoutant la ligne suivante dans le fichier de configuration: RunAsDaemon: Yes (par défaut, MRTG effectue les mesures toutes les 5 minutes).
- d'automatiser le démarrage de plusieurs processus simultanément et à intervalles réguliers via un seul fichier de (Bash Shell par exemple) contenant toutes les lignes de commande à lancer pour chacun des processus.
3. Installer MRTG sous Windows :
Ce chapitre définit le processus d'installation de MRTG sur les machines de type Windows (NTx). Installer MRTG sur Windows ne se fait pas simplement par l'intermédiaire d'un assistant. Néanmoins, en suivant les différentes étapes de ce chapitre, l'installation ne devrait pas vous poser de problèmes particuliers.
1. Pré-requis :
Procurez-vous tout d'abord les utilitaires suivants:2. Installation de MRTG :
- Une version de Perl correspondant à votre version de Windows http://www.ActiveState.com (version 5.6 minimum).
- La dernière version de MRTG (mrtg-2.10.13.zip ou supérieure). L'archive que vous téléchargerez comportera également une copie du programme "rateup.exe" qui vous servira par la suite.
Il est vivement conseillé d'effectuer l'installation de MRTG et du serveur Web affichant les pages de résultats sur la même machine. Les exemples proposés dans la suite de l'article sont créés dans cette configuration.
Dézippez tout d'abord le package MRTG dans C:\mrtg-x.y.z. Puis installez Perl, tout en vous assurant de la présence du chemin du répertoire d'installation des fichiers binaires Perl dans la variable d'environnement PATH:
Vérifier l'installation en ouvrant une fenêtre de commande DOS et tapez:
Vous devriez obtenir un petit message d'erreur vous signalant l'absence d'un fichier de configuration. Cela signifie que MRTG et Perl ont bien été installés.
3. Configuration de MRTG :
Il est maintenant possible de créer un fichier de configuration pour MRTG. Il convient avant tout de collecter un certain nombre d'informations:Nous utiliserons dans nos exemples un catalyst Cisco 5000 situé en 10.10.10.1 et dont la communauté d'appartenance est "public". Nous nous intéresserons à la mesure du trafic réseau ainsi qu'à la charge CPU.
- L'adresse IP ou le nom de la machine ainsi que le numéro de port SNMP de la machine que vous souhaitez analyser.
- Si l'analyse doit être effectuée sur autre chose que des mesures de bande passante (entrantes et sortantes), vous devez connaître le SNMP OID (numérotation du paramètre dans la MIB) de ce que vous souhaitez analyser.
- Enfin, il est nécessaire de connaître le nom de la communauté SNMP associée à votre appareil (même si elle est en lecture seule). Si vous ne la connaissez pas, essayez avec "public", qui est la valeur par défaut.
configuration MRTG par défaut. Ouvrez pour cela une fenêtre de commande DOS dans laquelle vous vous placerez dans le répertoire suivant: c:\mrtg-x.y.z\bin. Tapez alors:
Cela va créer un premier fichier de configuration automatiquement. Dans ce fichier, chacune des interfaces du routeur seront identifiées par un numéro. Si vous obtenez un message d'erreur tel que: "no such name" ou "no response", le nom de la communauté que vous avez indiqué est probablement erroné.
Vous pouvez obtenir des exemples de fichiers de configuration sur:
http://www.somix.com/software/mrtg/ (classement par marques)
http://www.wtcs.org/snmp4tpc/mrtg.htm
Regardons à présent à quoi ressemble un fichier de configuration mrtg.cfg. Vous remarquerez qu'en Perl, une ligne précédée de "#" désigne un commentaire.
Ajoutez cette ligne au début du fichier "mrtg.cfg": WorkDir: C:\www\mrtg\ en indiquant le chemin d'accès où les pages Web sont créées.
Tentons de démarrer une analyse MRTG avec ce fichier de configuration (tout ce qu'il y a de plus basique). Lancez le processus en tapant la ligne suivante à partir du répertoire c:\mrtg-2.10.13\bin:
Il est normal d'obtenir des erreurs signalant des fichiers de log inexistants lors des 2 premières utilisations de cette commande.
Bien évidemment aucun graphe n'est visible avant un certain nombre de mesures. Tentez de relancer le programme après quelques minutes pour effectuer une nouvelle mesure. Vous verrez alors les premières lignes de votre graphe.
MRTG serait très limité si nous devions effectuer ce processus manuellement toutes les périodes de temps déterminées. Il existe donc une option permettant de faire tourner le processus en tant que service et qui permet d'automatiser les mesures selon une période de temps paramétrable (5 min par défaut).
4. MRTG en tant que service :
Comme nous venons de le préciser, il existe une option spécifique à utiliser lorsque l'on souhaite automatiser les processus MRTG. Ce paramètre se situe dans le fichier de configuration MRTG. Le processus ainsi démarré restera dans la mémoire et s'exécutera en tant que service pour effectuer une nouvelle requête toutes les x périodes de temps. Pour cela ajoutez la ligne suivante dans votre fichier de configuration:
et lancez le processus par:
Si vous utilisez wperl au lieu perl, la console DOS ne sera pas visible et le processus MRTG sera lancé en tache de fond. Vous pouvez le stopper à partir du "gestionnaire des taches" en terminant le processus nommé wperl.exe. Les erreurs éventuelles sont, dans ce cas, consignées dans le journal des événements "application" de Windows.
5. Pages d'index HTML :
Pour rendre l'affichage des résultats graphiques plus convivial, vous pouvez utiliser un petit utilitaire fourni dans le package MRTG, il s'agit de "indexmaker". Son rôle est de créer automatiquement la page d'accueil HTML pour la machine analysée. Pour cela, tapez:
Title -> correspond au titre que portera votre page HTML.
Prefix -> désigne le Dossier où seront stockées les données d'analyses.
Output-> indique le chemin et titre du fichier HTML à créer.
c:\www\mrtg\cfg\...\fichier.cfg-> chemin du fichier de configuration.
5) Exemple :
L'exemple de fichier de configuration proposé ici analyse différentes valeurs sur un Cisco Catalyst 5000 (mesure de bande passante sur les ports 3, 5, 10, et 24, puis mesure de charge CPU).
WorkDir: C:\www\mrtg\ ################################################################## # Description: LCP SUWG # Contact: Administrateur # System Name: LC-Switch # Location: Bureau-3 #.................................................................. Target[10.10.10.1.1]: 3:[email protected] MaxBytes[10.10.10.1.1]: 1250000 Title[10.10.10.1.1]: LC-Switch (sample-device): ether0 PageTop[10.10.10.1.1]: <H1>Traffic Analysis for ether0</H1> <TABLE> <TR><TD>System:</TD><TD>LC-Switch inAndover</TD></TR> <TR><TD>Maintainer:</TD><TD>Administrateur</TD></TR> <TR><TD>Interface:</TD><TD>ether0(3)</TD></TR> <TR><TD>IP:</TD><TD>sample-device(10.10.10.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> #--------------------------------------------------------------- Target[10.10.10.1.2]: 5:[email protected] MaxBytes[10.10.10.1.2]: 1250000 Title[10.10.10.1.2]: LC-Switch (): ulink0 PageTop[10.10.10.1.2]: <H1>Traffic Analysis for ulink0</H1> <TABLE> <TR><TD>System:</TD><TD>LC- Switch inAndover</TD></TR> <TR><TD>Maintainer:</TD><TD>Administrateur</TD></TR> <TR><TD>Interface:</TD><TD>ulink0(5)</TD></TR> <TR><TD>IP:</TD><TD>()</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> #--------------------------------------------------------------- Target[10.10.10.1.1]: 10:[email protected] MaxBytes[10.10.10.1.1]: 1250000 Title[10.10.10.1.1]: LC-Switch (sample-device): ether0 PageTop[10.10.10.1.1]: <H1>Traffic Analysis for ether0</H1> <TABLE> <TR><TD>System:</TD><TD>LC- Switch inAndover</TD></TR> <TR><TD>Maintainer:</TD><TD>Administrateur</TD></TR> <TR><TD>Interface:</TD><TD>ether0(10)</TD></TR> <TR><TD>IP:</TD><TD>sample-device(10.10.10.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> #--------------------------------------------------------------- Target[10.10.10.1.2]: 24:[email protected] MaxBytes[10.10.10.1.2]: 1250000 Title[10.10.10.1.2]: LC-Switch (): ulink0 PageTop[10.10.10.1.2]: <H1>Traffic Analysis for ulink0</H1> <TABLE> <TR><TD>System:</TD><TD>LC- Switch inAndover</TD></TR> <TR><TD>Maintainer:</TD><TD>Administrateur</TD></TR> <TR><TD>Interface:</TD><TD>ulink0(24)</TD></TR> <TR><TD>IP:</TD><TD>()</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> #--------------------------------------------------------------- # Router CPU load % Target[cpu.1]:1.3.6.1.4.1.9.58.0&1.3.6.1.4.1.9.58.0:[email protected] RouterUptime[cpu.1]: [email protected] MaxBytes[cpu.1]: 100 Title[cpu.1]: CPU LOAD PageTop[cpu.1]: <H1>CPU Load %</H1> Unscaled[cpu.1]: ymwd ShortLegend[cpu.1]: % XSize[cpu.1]: 380 YSize[cpu.1]: 100 YLegend[cpu.1]: CPU Utilization Legend1[cpu.1]: CPU (Load) Legend2[cpu.1]: CPU Utilization Utilization in % in % (Load) Legend3[cpu.1]: Legend4[cpu.1]: LegendI[cpu.1]: LegendO[cpu.1]: Usage Options[cpu.1]: gaugeCet exemple montre comment afficher les statistiques d'un appareil quelconque selon les informations SNMP qu'il renvoie. Il suffit de connaître l'OID que vous souhaitez analyser.
Conclusion :
Cet article avait pour objectif de vous présenter l'outil MRTG, ses spécificités ainsi que son fonctionnement, mais ne prétend en aucun cas être exhaustif quant à son utilisation. Ce logiciel représente un outil très utile dans le cadre d'une entreprise constituée d'un important réseau, il pourra alors faire partie d'un "tableau de bord" permettant de connaître en temps réel les flux d'informations circulant dans un réseau.
Le rôle de MRTG, à court terme, est d'informer un administrateur sur l'état des lignes de son réseau afin d'être averti en cas de surcharge ou de coupure sur un segment. Dans ce dernier cas, MRTG indiquerait l'endroit exact de la coupure en précisant la machine affectée. A long terme, MRTG pourrait anticiper les excès de bande passante sur le réseau, pour ainsi prévoir la mise en place éventuelle de nouvelles liaisons ou infrastructures sur un réseau.