|
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
|
où 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.
|