Notice: Undefined index: style in /home/admins/lab3w/web_sites/wwweball.com/www2/wiki/page.php on line 60
wWwEBALL.com - WIKI - RRDTool

Accès Rapide : Navigation Sécurisée | M'identifier | M'inscrire | Rechercher | Imprimer | Webmail 

Wiki wWwEBALL - RRDTool

Cet article est une ébauche à compléter, vous pouvez partager vos connaissances en le modifiant.

Qu'est-ce que RRDTool ?

RRDTool, ou plus exactement Round Robin Database Tool.
Pour la signification exacte de Round Robin, referez vous à la documentation Officielle [1].
RRDTool, c'est une suite d'outils permettant de stocker des données, sous un format ".rrd", de les restaurer, d'afficher un graphique avec ces données...

Que permet de faire RRDTool ?

Conserver des données dans une base rrdtool, pour ensuite en faire un graphique. Par exemple, on peut imaginer l' utilisation classique de ce genre d'outils : on utilise snmp pour récolter des informations sur une interface réseau (par exemple le nombre de kilobits transférés), pour faire un graphique de débits par seconde.

Mais rrdtool ne se limite pas à ça!

A partir du moment ou vous avez des données de type entier (int) ou nombre à virgule (float), vous pouvez en faire des graphiques. Par exemple, on peut monitorer la température de votre ville, la température de votre processeur, le nombre de voitures passant dans votre rue (grâce a des outils pour utiliser votre webcam en mode "détection de mouvements", avec motion [2] par exemple ;-))

Pourquoi RRDTool, et pas MRTG [3]?

RRDTool et MRTG sont du même auteur : Tobias Oetiker. MRTG permet de faire des graphes, tout comme rrdtool, mais est très limité, par exemple, MRTG n'est pas capable d'afficher des valeurs négatives, ce que fait sans aucun soucis rrdtool. MRTG est très limité dans la «customisation» des graphes : mis a part changer la taille du graphique, changer la couleur de fond, l'échelle, ça s'arrête la ! RRDTool est lui capable de faire tout ce que vous pouvez imaginer en manipulation graphique, ce que nous allons voire plus loin dans l'article. Dans MRTG, vous êtes obligés d'utiliser l'interface web fournie par MRTG, justement, pas sous RRDTool. MRTG est programmé en perl, et utilise GD pour faire les graphiques, RRDTool est programmé en C, et est nettement plus rapide. Il «stressera» beaucoup moins la machine chargée de faire des statistiques.
MRTG garde un historique de TOUT les enregistrement effectués, contrairement a RRDTool, qui au lieu de garder tout les enregistrements, en fait la moyenne, selon les RRA définies...

Flaming ??

Le flaming, c'est une technique de tuning, utilisé principalement dans le milieu automobile. Cela consiste a dessiner des flammes sur la carrosserie d'une voiture... Mais alors, quel rapport avec rrdtool ??
Tout bêtement, je trouvais les graphiques sortis par rrdtool, certes mieux que ceux de mrtg, mais quand même vilains. En naviguant un peu sur le net, j'ai aperçu un graphe, fait avec rrdtool fabuleux : une "flamme" de transfert réseau ! J'ai alors décidé de faire la même chose, et d'expliquer comment faire pour avoir une joli flamme très simplement sur n'importe lequel de vos graphiques rrdtool.

Un peu de théorie - Comment ça marche ?

L'exploitation de rrdtool se fait en 3 étapes :

  1. Création de la base de données
  2. Mise à jour de la base de données
  3. Création des graphiques au format .gif ou .png

Création d'une base rrd

Pour créer la base de données, on utilise la commande rrtool create. Celle-ci est suivis de valeurs comme le temps Unix de la création de la base, des données que nous voulons sauvegarder et d'autres paramètres.

001 rrdtool create base.rrd [--start|-b start time] [--step|-s step] DS:nom_variable:DST:heartbeat:valeurmin:valeurmax RRA:CF:XFF:steps:rows
  • DS : Data Source.
    Une ligne de création commence toujours par DS. On met autant de DS qu'on a de valeurs à acquérir.
  • nom_variable : C'est le nom de la variable dans la base de donnée.
  • DST : Data Source Type.
    En fonction des données à traiter, on choisira GAUGE, COUNTER, DERIVE, ABSOLUTE etc.
    • GAUGE : les valeurs sont les mêmes que lorsque vous les avez entrer, on constate donc une sorte de vague.
    • COUNTER : c'est un compteur, il devrait constamment s'incrémenter et RRDtool devrait calculer les différences.
    • DERIVE : Cela peut être un compteur décroissant. Les valeurs peuvent donc descendre en dessous de 0.
    • ABSOLUTE : Ce type est analogue au counter. Cependant, aucune différence n'est faite entre les valeurs, vous retrouvez donc exactement les même valeurs que celles que vous avez entrer.
  • heartbeat : Si cette valeur est de 100, alors rrdtool considère la valeur nom_variable comme inconnue si il se passe plus de 100 s entre 2 mises à jour.
  • valeurmin et valeursmax sont les valeurs min et max des données que l'on va acquérir. Si on ne sait pas, on peut mettre U à la place (=unknown)
  • RRA : Round Robin Archive.
    Ce sont les archives que l'on va conserver. Il faut mettre au moins une ligne RRA pour chaques lignes DS.
  • CF : Consolidation Function.
    On peut choisir MIN, MAX, AVERAGE en fonction des données à conserver.
  • XFF : XFile Factor.
    En fait c'est trés souvent 0.5 ...
  • steps : Par défaut rrdtool conserve les mesure toutes les 5 min (ce qui correspond au paramètre -s 300). C'est donc un multiple de 300. Si on spécifie le paramètre –s 60 lors de la création de la base, l'intervalle sera alors de une mesure conservée toutes les minutes.
  • rows : Défini le nombre de mesures (steps * 300) que l'on conserve.

Le temps de conservation d'une donnée est égal à :
> historique (sec) = steps * (parametre -s) * rows
Bon ok ce n'est pas clair, voiçi donc des exemples pour éclaicir :
On prend comme hypothèse que la valeur de steps est celle par défaut -s 300 ( = 5 min). La valeur de XFF ne change pas, elle sera toujours égale à "0.5".

Pour garder un historique de 2 jours : RRA:AVERAGE:0.5:1:576
>historique = 1 * 300 * 576
>= 172 800 secondes
>= 2 jours.

Pour garder un historique de 7 jours : RRA:AVERAGE:0.5:6:336
>historique = 6 * 300 * 336
>= 604 800 secondes
>= 7 jours.

Pour garder un historique de 31 jours : RRA:AVERAGE:0.5:72:144
>historique = 72 * 300 * 144
>= 2 678 400 secondes
>= 31 jours.

Pour garder un historique de 366 jours : RRA:AVERAGE:0.5:144:732
>historique = 144 * 300 * 732
>= 31 622 400 secondes
>= 366 jours.

Pour obtenir des courbes plus ou moins précises, il faudra jouer sur la valeur de steps et/ou la valeur du paramètre -s. Plus on voudra obtenir une courbe jolie et précise, plus steps devra être élevé mais plus la taille de la base de donnée rrd gonflera.

Ainsi pour garder des données et tracer une courbe hebdomadaire, il vaut mieux utiliser : RRA:AVERAGE:0.5:6:336 que RRA:AVERAGE:0.5:12:168

Mise à jour d'une base rrd

Pour alimenter la base de données, on utilise la commande rrtool update. Les données mises en argument sont issues d'une capture de données soit par snmp, soit par un autre moyen qui dépendra de la valeur à surveiller. On doit respecter l'ordre dans lequel les éléments ont été placés lors de sa création. Pour que les résultats aient un sens, il faut acquérir les valeurs et les mettre dans la base à intervalles réguliers. La plupart du temps on fera un script que l'on mettra dans un crontab.

Il faut également inclure le moment auquel on relève les données. Pour cela, rrdtool utilise le temps "unix", c'est à dire le nombre de secondes qui se sont écoulées depuis le 1° janvier 1970 à 00h00. On obtient cela grâce à la commande date +%s.

Si on a une base base.rrd qui contient 2 valeurs, on l'alimentera avec la commande :

001 rrdtool update base.rrd temps_unix:valeur1:valeur2

Créer le graph d'une base rrd

Pour créer un graphique rrd, on utilise la commande rrdtool graph, suivi de paramètres comme le nom de l'image, le format de celle-ci ainsi que les données pour créer le graphique.

001 rrdtool graph image.png --imgformat PNG --start 1051481100 --end 1051485300 DEF:moyenne=laMoyenne.rrd:moyenne:AVERAGE LINE2:moyenne#FF0000
  • LINE : représente une Ligne d'un pixel (LINE2 = de 2 pixels)
  • AREA : représente un bloc.
  • STACK : représente un bloc, sauf qu'au lieu de commencer à 0, elle commencera à la dernière valeur maximale de la dernière AREA, ou LINE. Donc, la place d'une STACK est importante.

Vous avez la possibilitée avec rrdtool de modifier pas mal de paramètres sur les graphiques, comme dit plus haut dans l'article. Parmis ces paramètres, on notera :

001 --vertical-label "texte"
002 --title "titre du graph"
003 --width x (ou x est en pixels)
004 --height x (ou x est en pixels)
005 --color X#xxxxxx (ou X est l'objet à colorer a voir dans la doc officielle pour le détail)

exemple :

001 --color CANVAS#000000
002 --color BACK#101010
003 --color FONT#C0C0C0
004 --color MGRID#80C080
005 --color GRID#808020
006 --color FRAME#808080
007 --color ARROW#FFFFFF
008 --color SHADEA#404040
009 --color SHADEB#404040

Le flaming (graph en dégradé)

Load Average de la journée en flaming
La technique du flaming est simple, puisqu’il s’agit d’associer à une couleur du dégradé un pourcentage donné de la valeur à représenter. L’auteur du site graphe une zone représentant 40% de la valeur, puis 12 zones représentant 5% : 40 + (12 x 5) = 40 + 60 = 100%. Pour ma part, je privilégie une transition plus douce en réalisant 16 zones de 6,25%. Oui, je sais, ca fait moins rond, mais quand on graphe des couleurs en RGB, ca a son interêt.
A supposer que nous graphions du jaune (RGB:FFFF00) vers le rouge (RGB:FF0000), il suffit donc de faire 16 paliers :

  • FFFF00 (jaune)
  • FFEE00
  • FFDD00
  • ...
  • FF1100
  • FF0000 (rouge)

En adaptant cela à RRDTool, on réalisera donc 16 zones (AREA) superposées (STACK) :

001 DEF:maValeur="monFichier.rrd":laValeur:AVERAGE
002 CDEF:pourcent=maValeur,6.25,*,100,/
003 AREA:pourcent#FFFF00:"In\t"
004 STACK:pourcent#FFEE00
005 STACK:pourcent#FFDD00
006 STACK:pourcent#FFCC00
007 STACK:pourcent#FFBB00
008 STACK:pourcent#FFAA00
009 STACK:pourcent#FF9900
010 STACK:pourcent#FF8800
011 STACK:pourcent#FF7700
012 STACK:pourcent#FF6600
013 STACK:pourcent#FF5500
014 STACK:pourcent#FF4400
015 STACK:pourcent#FF3300
016 STACK:pourcent#FF2200
017 STACK:pourcent#FF1100
018 STACK:pourcent#FF0000

Références

[1] http://ee-staff.ethz.ch/~oetik(..)
[2] http://motion.sourceforge.net/
[3] http://people.ee.ethz.ch/~oeti(..)
[4] http://people.ee.ethz.ch/~oeti(..)
[5] http://people.ee.ethz.ch/~oeti(..)
[6] http://ed.zehome.com/?page=rrd(..)
[7] http://www.jiache.org/index.ph(..)

PDF

http://www2.wwweball.com/_src/(..)

EXEMPLE

http://www2.wwweball.com/stats


Reculer d'une page


Toutes les contributions à wiki.wwweball.com sont considérées comme publiées sous les termes de la GNU Free Documentation Licence, une licence de documentation libre.

GNU Free Documentation License 1.2

Si vous ne désirez pas que vos écrits soient édités et distribués à volonté, ne les envoyez pas.
De même, merci de ne contribuer qu'en apportant vos propres écrits ou des écrits issus d'une source libre de droits.
N'UTILISEZ PAS DE TRAVAUX SOUS COPYRIGHT SANS AUTORISATION EXPRESSE !