MRTG est un grapheur permettant de tracer des éléments retournés par le protocole snmp.
Par exemple, l’usage le plus fréquent, est l’analyse du trafic d’une carte réseau d’un serveur.
Installation de MRTG
Pour afficher les pages webs, vous avez besoin d’un serveur web.
Je vais donc installer et activer apache en lui ajoutant gd, une librairie graphique permettant de créer des images.
Ces manipulations d’installation et configuration sont à faire en tant que root.
yum -y install httpd gd
chkconfig httpd on
service httpd start
J’installe maintenant mrtg, comme ceci :
yum -y install mrtg
Je modifie le fichier /etc/httpd/conf.d/mrtg.conf pour accepter l’affichage de la page mrtg depuis d’autres machines que la machine locale ( 127.0.0.1 ).
#
# This configuration file maps the mrtg output (generated daily)
# into the URL space. By default these results are only accessible
# from the local host.
#
Alias /mrtg /var/www/mrtg
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
Puis on recharge apache
service httpd reload
Comme indiqué en introduction, mrtg va lire des informations sur la machine à « grapher » via snmp.
Pour installer snmp sur cette machine, se conférer à l’article « Installation SNMP »
Je considère ici les éléments suivants :
– la machine IP.DE.MON.SERVEUR est la machine à surveiller,
– la communauté snmp utilisée se nomme view,
– la connexion snmp du serveur mrtg vers l’autre machine fonctionne.
Pour tester la connexion, installez les outils snmp et demandez la visualisation des données snmp de l’ordinateur distant.
yum -y install net-snmp-utils
Puis :
[root@fedora7 ~]# snmpwalk -v 2c -c view IP.DE.MON.SERVEUR
SNMPv2-MIB::sysDescr.0 = STRING: Linux monserveur.mondomaine.fr 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (19438295) 2 days, 5:59:42.95
SNMPv2-MIB::sysContact.0 = STRING: MaSociete
SNMPv2-MIB::sysName.0 = STRING: monserveur.mondomaine.fr
SNMPv2-MIB::sysLocation.0 = STRING: Castres
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: ...
J’ai tronqué le résultat qui fait plusieurs pages, mais le snmp distant répond bien.
En cas de problème, vérifiez que le firewall du serveur distant accepte les connexions udp sur le port 161.
Configuration de MRTG
J’utilise la commande suivante pour créer le fichier de configuration :
cfgmaker --global 'Language:french' --global 'WorkDir: /var/www/mrtg/' --ifdesc=descr --output=/etc/mrtg/mrtg.cfg view@IP.DE.MON.SERVEUR
Les options que j’ai utilisées ne sont pas obligatoires, mais elles me conviennent.
A vous de voir avec un cfgmaker --help
si cela vous va.
Cela doit produire un affichage lignes à l’écran et aboutit à la création d’un fichier /etc/mrtg/mrtg.cfg.
Mrtg va utiliser ce fichier de configuration par défaut pour tracer les graphes de la machine convoitée.
Pour pouvoir visualiser directement le résultat via le serveur Apache, il faut avoir une page index.html. Ceci afin d’éviter un « Acces Refusé » quand on ouvrira l’url du site mrtg.
Pour cela, un outil est fourni avec mrtg pour créer une page web en accord avec le fichier de configuration mrtg.
indexmaker --columns=1 --output=/var/www/mrtg/index.html mrtg.cfg
Si indexmaker affiche une erreur disant que le paramètre Workdir n’existe pas, éditez le fichier mrtg.cfg et décommentez la ligne correspondante. Indiquez /var/www/mrtg comme Workdir.
mrtg /etc/mrtg/mrtg.cfg
Normalement, avec la commande cfgmaker précédente, cela ne devrait pas se produire.
ATTENTION, mrtg est écrit en perl et perl n’aime pas le codage UTF8 utilisé par défaut.
L’erreur se présente comme ceci :
[root@fedora7 ~]# mrtg /etc/mrtg/mrtg.cfg
ERROR: Mrtg will most likely not work properly when the environment
variable LANG is set to UTF-8. Please run mrtg in an environment
where this is not the case. Try the following command to start:
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
Editez le fichier /etc/sysconfig/i18n et assurez-vous d’avoir les lignes suivantes avec ces mêmes paramètres :
LANG="fr_FR"
SUPPORTED="fr_FR.UTF-8:fr_FR:fr"
Si vous faites le changement suite au message d’erreur de perl, tapez la commande export LANG="fr_FR"
avant de relancer mrtg.
[root@fedora7 ~]# export LANG=fr_FR
[root@fedora7 ~]# mrtg /etc/mrtg/mrtg.cfg
[root@fedora7 ~]#
plus d’erreur, c’est cool ! 🙂
Mtrg est automatiquement plannifié via une tâche cron par le script d’installation du logiciel.
[root@fedora7 ~]# cat /etc/cron.d/mrtg
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
[root@fedora7 ~]#
L’actualisation de mrtg se fera donc toutes les 5 minutes.
C’est à dire que toutes les 5 minutes, mrtg intérrogera le serveur distant et mettra à jour le graphe correspondant.
Visualisation du graphe
Pour visualiser le graphe, lancez votre navigateur favoris et rendez-vous sur l’url suivante : http://localhost/mrtg
Si vous n’êtes pas directement sur la machine ayant mrtg, entrez son adresse ip réseau en lieu et place de localhost.
Attention, tout de même, il faut modifier la configuration d’apache que nous avons fait plus haut, car sinon, vous aurez un superbe Access Denied sur la page web.
En effet, dans le fichier /etc/httpd/conf.d/mrtg.conf, vous avez une directive Allow from 127.0.0.1 et un Deny from all, ce qui veut dire, accepte l’accès de la machine locale et refuse tout le reste.
Il faut donc modifier la directive , comme ceci :
– pour autoriser votre adresse ip 192.168.11.2 et au réseau 192.168.10.0
Alias /mrtg /var/www/mrtg
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168.11.2 192.168.10.0/24
Allow from ::1
# Allow from .example.com
– autoriser n’importe quelle machine :
Alias /mrtg /var/www/mrtg
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from all
Allow from ::1
# Allow from .example.com
Une fois la modification faite, il faut recharger apache, avec la commande service httpd reload
Vous devez donc obtemir une page ressemblant à celle-ci :
Et voilà, c’est fait ! Votre grapheur va mettre à jour les courbes tout seul, comme un grand et vous pourrez constater si la machine monitorée vous prends de la bande passante ou pas 🙂
MRTG ne se contente pas de grapher les cartes réseau, il peut être utilisé pour d’autres variables de la machine distante.
Pour se faire, consultez la doc de mrtg et snmp ou le site suivant qui hélas est en anglais, mais très bien documenté.
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch23_:_Advanced_MRTG_for_Linux
D’autres outils plus évolués existent, comme cacti par exemple, mais la solution mrtg est rapide à mettre en oeuvre, ce qui n’est pas vraiment un défaut 🙂