logo banniere

S'il n'y a pas de solution c'est qu'il n'y a pas de problème!


MRTG



Introduction

Cette page est destinée à donner les informations de base en français pour l'installation et l'utilisation de MRTG sous linux. Vous pouvez trouver l'ensemble des informations (en anglais) sur la page MRTG.
Il existe aussi une Liste de discussion MRTG/RRDTOOL en francais.

Librairies et outils nécessaires

Vous avez besoin de:

  • un compilateur C (gcc ou ecgs de préférence)
  • une version récente de Perl (au moins 5.004_4)
  • snmp lancé en daemon (Simple Network Management Protocol)

Tous ces outils sont normalement disponibles dans la plupart des distributions. Pour snmp, j'utilise ucd-snmp qui est fourni dans certaines distributions sous forme de package, sinon voir http://net-snmp.sourceforge.net/.

Jean-Louis Noel a proposé un script netstat pour les statistiques d'utilisation des interfaces qui ne nécessite pas l'installation de snmp. SI vous n'avez pas besoin d'options avancées de snmp, je préfère de loin l'utilisation de ce script. Voir plus bas comment on s'en sert....

Vous avez aussi besoin de la librairie gd de Thomas Boutell (www.boutell.com). Vous pouvez récupérer ici la version 1.8.4 de gd .

Pour installer gd, vous avez besoin de libpng, zlib et jpeg 6b au moins. Ces librairies sont en général fournies dans la plupart des distributions. Sinon, voir ftp://ftp.freesoftware.com/pub/infozip/zlib/ pour zlib, ftp://ftp.freesoftware.com/pub/png/src/ pour libpng, et http://www.ijg.org/ pour jpeg.

Enfin, vous pouvez récupérer ici la version 2.9.17 de MRTG.

Attention

Vérifiez bien que si vous avez un fichier de configuration snmp.conf dans /etc ou /usr/share/snmp (ou ailleurs...), ce fichier doit être vide (si vous faite confiance une confiance aveugle à votre réseau local et que le port snmp est fermé à l'extérieur!!) ou contenant quelque chose du genre:
com2sec readonly localhost public
Certaines distributions fournissent un fichier de configuration qui ne permet pas à MRTG de fonctionner, du genre:
com2sec paranoid default public

Installation de gd

Toutes les opérations qui suivent se font sous le compte root.

Vous avez donc déjà installé zlib, libpng et jpeg soit depuis votre distribution, soit grâce aux adresses fournies plus haut (désolé, je ne donne pas d'explications pour l'installation de ces librairies qui est standard).

Décompressez (tar -zxf gd-1.8.4.tar.gz) le source de gd à l'endroit qui vous convient (chez moi c'est dans /usr/local/src/). Allez dans le répertoire de gd et éditez le Makefile. Voici la partie à éditer telle que je l'utilise (j'ai enlevé les commentaires) :

COMPILER=gcc
AR=ar
CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBXPM -DHAVE_LIBTTF
LIBS=-lgd -lpng -lz -ljpeg -lm -lttf
INCLUDEDIRS=-I. -I/usr/include/freetype -I/usr/include/X11 \
            -I/usr/X11R6/include/X11 -I/usr/local/include
LIBDIRS=-L. -L/usr/local/lib -L/usr/lib/X11 -L/usr/X11R6/lib
INSTALL_LIB=/usr/local/lib
INSTALL_INCLUDE=/usr/local/include
INSTALL_BIN=/usr/local/bin

Modifiez les lignes COMPILER, CFLAGS, LIBS et INCLUDEDIR en fonction de votre configuration (lisez les commentaires du Makefile et le fichier readme.txt de gd notamment ce qui concerne freetype). Modifiez INSTALL_LIB, INSTALL_INCLUDE et INSTALL_BIN si vous désirez faire une installation dans d'autres répertoires.

Lancez make et s'il n'y a pas d'erreur vous pouvez lancer make install.

Installation de MRTG

Décompressez (tar -zxf mrtg-2.9.10.tar.gz). Depuis le répertoire obtenu, lancez ./configure. Si vous va bien, vous avez généré le Makefile après avoir commandé le CD de MRTG (:-D). Si le./configure a produit des messages d'erreur, lisez les, c'est qu'il vous manque des librairies ou outils de développement.Vous pouvez à présent compiler par make.
make install va installer mrtg sous /usr/local/mrtg-2

A présent, tous les exécutables sont dans le répertoire bin du répertoire /usr/local/mrtg-2.

Configuration de MRTG

Dans le répertoire bin, se trouve un utilitaire cfgmaker qui permet de fabriquer "un début" de fichier de configuration. Placez vous dans un répertoire de travail et lancez:

/usr/local/mrtg-2/bin/cfgmaker public@nom_machine >test

nom_machine est le nom de votre machine. Vous récupérez dans le fichier test la liste de vos interfaces et "un début de fichier" de configuration. Vous pouvez voir ici ce que cela donne chez moi.

Comme vous le voyez, j'ai 5 interfaces: loopback, dummy0, 2 ethernet et PPP0. Pour chaque interface, il vous est proposé un nom (que vous pouvez changer dans le "vrai" fichier de configuration dans lequel vous pouvez choisir uniquement les interfaces que vous désirez mesurer (vous pouvez aussi créer un fichier de configuration par interface)

cfgmaker peut aussi produire les interfaces par ip (option -ifref=ip). Lancez ./cfgmaker --help pour la liste des options, et consultez les documents disponibles sur le site MRTG.

Commencez par choisir et créer un répertoire de travail (accessible par votre serveur web si vous souhaitez rendre publiques vos statistiques). Chez moi c'est /webnew/mrtg. Créez un fichier mrtg.cfg dans ce répertoire. Commencez par une ligne du genre WorkDir: /web/mrtg (ou bien utilisez des répertoires différents pour les logs, images et html par les ordres Logdir, Imagedir et Htmldir, voir le fichier de configuration de linux-sottises (évidemment, les parties addhead, pagetop et pagefoot concernent la mise en page sur linux-sottises et sont à ignorer ou adapter pour votre propre mise en page). Copiez ensuite les "morceaux" de test qui correspondent aux interfaces que vous désirez mesurer. Bien que dans le fichier test plus haut l'interface ppp0 soit déclarée "unrealistic", c'est bien celle que j'utilise!! Si vous désirez créer plusieurs fichiers de configuration, il faut mieux un répertoire de travail par fichier de configuration.

Pour chaque interface, vous devez choisir un nom qui apparaît dans chaque "ordre" du fichier de conf comme Target ou Title. MRTG générera un fichier html nom.html dans le répertoire de travail. Copiez les fichiers *.png du répertoire d'installation de mrtg dans le répertoire de travail.

Pour connaître la liste des options disponibles dans mrtg, consultez les fichiers du répertoire doc du répertoire d'installation de mrtg.

Lancez chemin_mrtg/bin/mrtg chemin_répertoire_travail/mrtg.cfg et regardez ce qui se passe.... Si tout va bien, vous avez créé un fichier html dans le répertoire de travail de mrtg. Les "premières" exécutions de mrtg peuvent produire des warnings "normaux" qui disparaissent après deux ou trois exécutions. Vous pouvez à présent lancer mrtg depuis une ligne de /etc/crontab. C'est ce que je fais toutes les 5 minutes dans /etc/crontab

indexmaker (disponible dans /usr/local/mrtg-2/bin) permet de faire une trame de page d'accès à vos différents graphes

Lisez la doc à propos de la syntaxe [_] qui définit des options pas défaut, [^] qui définit le "préfixage" d'une configuration et [$] le "suffixage"
Un exemple valant mieux que de longs discours, voici le fichier de configuration actuellement utilisé par linux-sottises.

Utilisation de MRTG pour mesurer des pings et autres...sottises

MRTG permet de fabriquer des graphes pour "n'importe quoi". N'oubliez pas de rendre exécutable les scripts par chmod u+x.

Vous pouvez voir le résultat de bon nombre de ces scripts sur la page stats_mrtg de linux-sottises.
Remarque: à la date du 17 avril 2002 les statistiques mrtg ne sont plus mises à jour, linux-sottises utilisant à présent MRTNK.
stats_mrtnk pour les résultats
software pour la dernière version stable
mrtnk pour la version en cours de développement qui est toujours celle utilisée sur linux-sottises.

PING
Voici de quoi mesurer les pings. C'est la section [ping_nerim] du fichier de configuration précédent qui correspond à cette fonctionnalité.
Vous pouvez télécharger le script ping-nerim qui donne la latence min et max sur 3 pings. La sortie de ping ayant changé dans des versions récéntes, voici un script pour ces dernières versions.

APACHE
Mrtg permet aussi de mesurer le nombre de hits et le débit de votre serveur Apache (les fonctionnalités server-status et ExtentedStatus doivent être activées)
C'est la section [apache] du fichier de configuration précédent.
Le script perl nécessaire est webstat.pl. Ce script permet aussi d'avoir le débit du serveur apache, voir la section [apache_bytes] de mon fichier de configuration.

Pour mesurer séparément les hits et débits/documents d'hôtes virtuels, j'utilise mod_watch www.snert.com/Software/mod_watch/
Vous devez avoir compilé apache.
Il y a deux options de compilation de mod_watch, soit comme module dynamique si Apache a été compilé avec le support des modules dynamiques, soit en statique. Je n'ai utilisé mod_watch que comme module dynamique et je ne donne les explications que pour cette configuration.
Une fois téléchargé et décompressé, éditez le fichier Makefile. Indiquez le chemin des sources d'Apache dans APACHEDIR, le chemin des scripts qui seront utilisées par MRTG sans SCRIPTDIR, le chemin de fichiers traces des serveurs virtuels dans SPOOLDIR.
Bien que le MAKEFILE ne le dise pas, il faut donner un peu plus loin le chemin du apxs de votre apache dans APXS (sauf si apxs est dans votre path), chez moi c'est

APXS=/usr/local/apache/bin/apxs

Lancez ensuite make install-dynamic
Vérifiez que votre fichier de configuration apache s'est bien vu rajouter le chargement du module mod_watch et que ce module figure bien dans le répertoire libexec de votre répertoire d'installation d'apache.
Rajouter ensuite dans votre fichier de configuration apache:

<IfModule mod_watch.c>
        <Location /watch-info>
        SetHandler watch-info
        </Location>
</IfModule>

Arrêter et relancer apache.
accéder à /watch-info sur votre serveur pour vérifier le fonctionnement. Reportez vous au site www.snert.com/Software/mod_watch/ pour plus de détails.
Consultez mon fichier de configuration MRTG pour voir l'utilisation de mod_watch (il y a 4 sections relatives à mod_watch et la page stats_mrtg pour voir le résultat.

UPTIME
Pour cette, c'est la section [uptime] du fichier de configuration qui est concernée. Le script perl necéssaire est uptime.pl.

PROCESS
Pour compter le nombre de process, utilisez le script stat.pl et regardez la section [procs] de mon fichier de configuration.

MEMOIRE
Pour la mémoire, utilisez le script mem et regardez la section [mem] de mon fichier de configuration.

DNS
Pour les requêtes DNS (bind Version 8), c'est le même script stat.pl que pour les process qui est utilisé, section [dns] de mon fichier de configuration.
ATTENTION
Merci à Pascal de me l'avoir rappelé, la taille des fichiers /var/named/named.stats et /var/named/named.memstats augmente à chaque appel, et il faut penser à prendre en compte ces deux fichiers dans la rotation de vos logs.... ou de penser à racheter de l'espace disque...

CPU
Pour le CPU, c'est un peu plus complexe. Le script est cpustat. La section de mon fichier de configuration est [cpu]. Mais il faut auparavant installer sysstat-4.0.3. Voir http://perso.wanadoo.fr/sebastien.godard/ la page de l'auteur de cet utilitaire qui, une fois installé et lancé régulièrement par cron, permet des statistiques d'utilisation du CPU.

INTERFACES RESEAU SANS SNMP
Pour mesurer le traffic des interfaces sans installer snmp, vous pouvez utiliser le script netstat. Après l'avoir téléchargé, vérifiez que l'emplacement de cut, grep, uptime est correct. Son utilisation est simple, il suffit de créer un section de votre fichier de configuration par exemple pour ppp0 qui commence par:
Target[ppp0]: `path_to_netstat ppp0 ppp0`
netstat est suivi de deux paramètres, le premier est le nom que vous donnez à la cible, le deuxième est le nom de l'interface.
Mon fichier de configuration contient aussi deux exemples de son utilisation.

David Du Serre-Telmon propose un autre script netstat-ip qui permet aussi d'accéder aux informations d'une interface en appelant son ip. Voir les commentaires à l'intérieur du fichier pour la syntaxe.

FICHIERS OUVERTS
Un script proposé par 0_be_one pour mesurer le nombre de fichiers ouverts (à condition d'avoir installé lsof): script files.pl, consultez la partie [files] de mon fichier de configuration.

ESPACE DISQUE
Ci dessous une contribution de AIREY Romuald pour obtenir des graphes de l'espace disque.
Le script est basé sur la commande df qui donne l'espace disque : exemple :

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda3              8625436   3168832   5018432  39% /
/dev/sda1                23300      5193     16904  24% /boot
/dev/hda1             59084932  44493936  14590996  76% /mnt/idea
/dev/hdb1             38448276   9756360  26738816  27% /mnt/ideb
192.168.0.6:/          3984704    934288   2848000  25% /pluto
192.168.0.7:/          1921188    507476   1316120  28% /vador

pour plus de clareté (et la limitation du max des entiers utilisables par MRTG...), on met tout en Mo avec l'option -m de df et il est très fortement conseillé d'éliminer les files systems nfs avec l'option -x nfs de df (sinon ennuis assurés quand un serveur nfs est down).
df -m -x nfs:

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/sda3                 8423      3089      4907  39% /
/dev/sda1                   23         6        16  24% /boot
/dev/hda1                57700     43452     14249  76% /mnt/idea
/dev/hdb1                37547      9528     26112  27% /mnt/ideb

le script checkdisk retourne l'espace libre et l'espace utlisé. Vérifiez la localisation de df, cut et grep et rendez le script exéctutable
on utilise checkdisk suivi du nom de la partition, consultez les parties hda1, hdb1 et sda3 de mon fichier de configuration.
Notez l'utilisation astucieuse de kMG qui permet d'afficher des Go au lieu de kMo!!:)

VOLUME DE DONNEES ECHANGE SUR UNE INTERFACE
Le script volume donne le volume de données échangé sur une interface.
Comme ce script (très élémentaire) est basé sur ifconfig, une descente-remontée de l'interface remet les statistiques à 0,..., ce que je ne trouve pas gênant. Le nombre d'octets affiché dans ifconfig est lui aussi réinitialisé quand on atteint un nombre max (que je n'ai pas cherché à évaluer).
L'usage est très simple: volume suivi du nom de l'interface (voir section volume_ppp0 de mon fichier de configuration et les graphiques correspondants sur la page stats_mrtg.

Remarque: ce script pose des problèmes sur de nombreuses distributions où ifconfig ne renvoie pas le nombre de MB échangés... Mais il y a plus simple que ce script:
Utilisez le script netstat (netstat ppp0_echange ppp0 par exemple) en mettant GAUGE comme option :)

NOMBRE DE CONNEXIONS TCP ACTIVES AVEC NETFILTER
Il s'agit d'une autre contribution de David Du Serre-Telmon. Le script est tcpcount.
La syntaxe est:
tcpcount => Nombre de connexions tcp totales traversant la passerelle
tcpcount 21 => Nombre de connexions FTP
tcpcount 80 dst www.linux-sottises.net => Nombre de connexion web vers www.linux-sottises.net
tcpcount 1214 src 192.168.0.2 => Nombre de connexions Kazaa pour l'utilisateur 192.168.0.2

et voilà... mettre au four 30 minutes thermo 5, et servir chaud.

Si vous aviez des problèmes, n'hésitez pas à me contacter.


Dernière modification le jeudi 17 avril 2003 à 00:40:12 Paris
Webmaster: TNK
Valid HTML 4.01! Valid CSS! quanta anybrowser suse powered by

linux apache mod_gzip php mysql openssl modssl