Round Robin Data Tools. Rrdtool est un programme, dotés de différentes fonctions, qui permettent de traiter des données du stockage, jusqu'à l'affichage.
Le plus souvent, on se sert de RrdTool couplé à un script qui permet de récupérer des données SNMP. Cela permet, par exemple danalyser le debit de l'interface reseau, de stocker sa valeur à interval régulier dans une base de donnée .rrd et de restaurer ces valeurs sous forme de graphiques.
Jusqu'ici, on fait difficilement la distinction entre mrtg et rrdtool. RrdTool et Mrtg sont developpés par le même auteur. Pour simplifier la différence entre les deux outils, ou pourrais constater que Rrdtool est plus paramatrable que Mrtg.
1.0 - Installer RrdTool
Pour installer RrdTool sous windows, il suffit de le <a href='http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/download.html' target='_blank'>telecharger ici</a>. Décompressez l'archive, et récuperez le programme src\tool_release\rrdtool.exe
Je vous conseille, de lire l'article ainsi que le post qui suit, et de ne pas faire la configuration au fur et à mesure.
1.1 - Fonctions de RrdTool
Au total,11 fonctions sont disponibles en argument du programme rrdtool.exe. Pour une première utilisation, seules les 3 premières seront utilisées:
- create : pour créer une base de donnée .rrd, où stocker les données
- update : pour mettre à jour cette base de données
- graph : pour restaurer les valeurs sous forme de graphiques.
2.0 - Installer un outils SNMP
Le protocole SNMP permet de diagnostiquer l'état d'un appareil informatique. Il permet par exemple, d'interroger les routeurs d'un réseau pour récuperer les dernières erreurs qui sont survenues.SNMP met à disposition des informations qui peuvent s'averer sensibles : la première version du protocole ne gère absoluement pas l'authentification. N'importe qui en connection avec un peripheriques supportant SNMP peut lire toutes les données mises à disposition. La version 2 corrige se problème, en intégrant la gestion de mot de passe.
Sous windows, le protocole SNMP peut être installé, afin de diagnostiquer le réseau (dans ajout/suppression de programme -> Composants ). On pourrais se contenter des valeurs récuperés par Windows, mais vous pouvez aussi ajouter un outils, qui récupère un maximum d'informations sur le système d'exploitation (memoire vive, cpu, debit reseau ...) et qui permet leur lecture par le protocole SNMP.
2.1 - Récuperer les valeurs SNMP
Les outils les plus connus qui permettent de faire cela, ce trouvent sur cette page:<a href='http://www.wtcs.org/snmp4tpc/default.htm' target='_blank'>SNMP4PC</a>.
Pour les utilisateurs de WindowsXP, deux solutions s'offrent à vous. Télécharger la version SNMPW2K, ou snmp-informant.
2.2 Trouver les clés
Le protocole SNMP permet la lecture d'informations sous forme de node. Toutes les valeurs sont organisées, comme dans l'arborescence d'un répertoire. On peut lire l'adresse d'une node sous forme brut, 1.2.3, ou sous forme un peu plus clair, parent.fils.petit-fils
Suivant l'outils que vous utilisez (2.1) pour sonder votre système, l'adresse des nodes ne sera pas le même.
Ex: avec SNMP4W2K, la node permettant de lire, la quantité de mémoire vive libre est 1.3.6.1.4.1.311.1.1.3.1.1.1.2.0 alors qu'avec informant il s'agit de la node .1.3.6.1.4.1.9600.1.1.2.1.0.
Pour trouver les valeurs que vous voudrez intégrer à vos graphiques, il suffit d'installer <a href='http://www.wtcs.org/snmp4tpc/getif.htm' target='_blank'>GetIf</a>

3.0 - Création de la base de données
Pour créer une base de donnée qui permettra de stocker les valeurs SNMP, ouvrez une console, et tapez:
rrdtool create rrdf_memory.rrd --step 300 DS:mem_usage:GAUGE:1000:0:1024000000 DS:mem_free:GAUGE:1000:0:1024000000 DS:mem_cache:GAUGE:1000:0:1024000000 RRA:AVERAGE:0.5:1:1200 RRA:MIN:0.5:12:2400 RRA:MAX:0.5:12:2400 RRA:AVERAGE:0.5:12:2400
Barbare ? Non ! 'create' est la fonction que nous allons utiliser.'rrdf_memory.rrd' est le fichier qui fera office de base de données. 'step' indique le temps minimum qui doit s'écouler entre deux mise à jour de la base. Ensuite, vous allez spécifier des colonnes.
DS:nomcolonne:typecolonne:temps:min:max
Le type de colonne, est dans la majorité des cas, GAUGE, mais il peut aussi être COUNTER, quand il s'agit d'une valeur qui s'incremente à chaque mise à jour. 'temps' indique la durée qui est l'interval maximum qui peut s'écouler entre deux mises à jour, après quoi, le graphiques deviendra discontinu: on observera une coupure, et le vide sera designé comme 'valeurs inconnues'
'min' et 'max' sont les extremes des valeurs qui pourront être stockées.
Ensuite, RRA permet d'indiquer la 'compression' qui aura lieu au court des mises à jour.
RRA:AVERAGE:0.5:1:1200
Ici, la base de donnée sera composé de 1200 enregistrements occupant 5minutes chacuns. Pour le 601 enregistrement, soit au bout de ([step=300]*600/60=50heures), la deuxieme reègle s'applique.
RRA:MIN:0.5:12:2400
La base de donnée sera composée de 2400 enregistrements de 30minute (12*300/60=100jrs) a partir du 600eme, jusqu'a 3000eme donc, en ainsi de suite.
3.1 - Mise à jour des valeurs
Pour mettre à jour les valeurs, c'est simplisime: il suffit d'executer la commande suivante:
rrdtool update --template mem_usage:mem_free:mem_cache 156000:56000:12000
De template, à mem_cache, la chaine n'est pas obligatoire: elle sert simplement à s'assurer que les valeurs entrées iront dans la bonne colonne.
Vous ne pouvez effectuer de rafraichissement, si la durée écoulée depuis le dernier rafraichissement est plus courte que celle spécifiée dans le paragraphe précédent, lors de la création de la base.
Pour entrer automatiquement les valeurs, il vous faudra un script qui les récupère et qui lance la commande de mise à jour. Un exemple est donné dans le deuxieme post.
3.2 - Création de graphiques
Pour créer un graphique, ce n'est pas plus compliqué.
rrdtool graph "graphs/rrdg_memory_d.png" --vertical-label "RAM" --base "1024" DEF:mem_usagec=rrdf_memory.rrd:mem_usage:AVERAGE AREA:mem_usagec#7FB4D9:"Memoire utilisee" DEF:mem_freec=rrdf_memory.rrd:mem_free:AVERAGE LINE2:mem_freec#0056B4:"Memoire libre" DEF:mem_cachec=rrdf_memory.rrd:mem_cache:AVERAGE LINE2:mem_cachec#FF56B4:"Memoire cache"
Cette commande va lancer créer le fichier graphs/rrdg_memory_d.png, avec comme titre vertical "RAM". Dans cette exemple, on spécfiera que la base des valeurs à afficher est 1024 (1ko).
Ensuite, on definit mem_usagec, qui correspond au fichier rrdf_memory.rdd et à la colonne mem_usage. On prends une moyenne des valeur. Puis on definit la manière dont sera représenté mem_usage. AREA, permet de faire des bandes, et LINEX permet de faire des lignes d'épaisseur X. Puis, on choisit une couleur et une légende.
Par défaut, Rrdtool prend les valeurs des dernières 24heures. On peut lui demander de prendre les valeurs de toute la semaine en ajoutant
--start "-2419200"
Ici, Rddtool debutera son graphique, 2419200 secondes avant maintenant.
Ne pas oublier non plus les --lower-limit "x"[I/] et [I]--upper-limit "x". Ces limites permettent d'agrandir le graph par defaut. Un exemple, pour que le graphiques de l'utilisation du processeur en % aille toujours de 0 à 100, on indiquera --upper-limit "100".
Si une limite est dépassé, alors le graphique s'ajuste automatiquement. Si vous limitez le graphiques du cpu à 75% et que une valeur atteint 80%, alors le graphiques s'ajuste: pour éviter cela, ajoutez --rigid, et les valeurs extremes seront alors coupées.
Enfin, au lieu d'afficher directement mem_usagec, vous pouvez travailler la valeur.
CDEF:mem_usage_mod=mem_usagec,512,+
Ici, la variable mem_usage_mod, va contenir la valeur de mem_usagec + 512.Ensuite:
AREA:mem_usage_mod#7FB4D9:"Memoire utilisee"
Voila, voila.
La mise en place de rddtool est finalement assez simple. Reste à configurer la récuperation de valeurs, leur entré, et leur affichage.
Pour plus d'info, rendez-vous sur le
<a href='http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/' target='_blank'> Site officiel de RRDTool</a>