Créé en 1999 par Tobias Oetiker, RRDtool comprend une une base de données de type buffer circulaire pour valeurs numériques accompagnée d'outils permettant d'alimenter la base et d'exporter les valeurs sous forme graphique ou textuelle. RRDtool est couramment utilisé pour les tâches d'administration système et de supervision. On le retrouve intégré à des logiciels tels que Cacti, Munin ou Centreon.
RRD pour Round Robin Database (base de données tourniquet). Le fichier de la base RRD contient un nombre d'enregistrements fixes, définit à la création. La taille de la base ne croit pas indéfiniment. Lorsque le dernier enregistrement est écrit l’écriture reprend sur le premier. Ce type de stockage est particulièrement adapté aux données à durée de vie limitée.
Les données enregistrées dans une RRD sont fondamentalement liées au temps. L'intervalle de temps entre deux insertions est définit à la création de la base, c'est le step. Chaque enregistrement a un timestamp UNIX.
Une RRD est caractérisée par sa date de début et son step, elle est le conteneur global d'un certain nombre d'éléments RRA, CDP, PDP. Ces éléments sont présentés dans la section terminologie.
La plage de temps servant de base pour la mesure est également bornée (déterminée et fixée). Si plus d'informations sont envoyé à la base, une valeur moyenne sera déterminée sur la tranche de de temps servant d'unité de mesure. Une mesure peut donc arriver avec une fréquence plus élevée sans que cela pose problème.
La déclaration d'un DS utilise la syntaxe suivante:
DS:label:DST:heartbeat:min:max
Le champ DST pour Data Source Type peut prendre les valeurs suivantes:
L' heartbeat s'exprime en secondes, c'est un timeout ou temps limite au bout duquel la valeur est considérée inconnue.
min et max permettent de définir un intervalle de validité pour la valeur. Toute valeurs hors de cet intervalle sera considérée inconnue UNKNOW.
Ci dessous, un exemple de déclaration utilisé pour stocker des relevés de température:
DS:temp-sonde1:GAUGE:600:55:95 \
Dans l'exemple ci dessus, on définit une variable de type mesure dont le nom est temp-sonde1 avec des valeurs pouvant varier dans l'intervalle [55, 95]. La Fenêtre de validité d'une mesure (heartbeat) est de 600 secondes.
RRA pour Round Robin Archive. Une base RRD peut contenir une ou plusieurs RRA afin de couvrir des plages d'historique avec plus ou moins de précision. Chaque RRA est une vue différente stockant indépendamment les données, chacune avec un nombre prédéfinit d'enregistrements.
La couverture temporelle de la RRA est ajustable via deux paramètres:
Il est donc possible de concevoir des plages d'historiques avec plus ou moins de PDP par CDP ou bien plus ou moins de CDP par RRA en fonction des besoins (vues ou historiques souhaités).
Lors de l'insertion d'une valeur( appelée PDP pour Primary Data Point) la valeur enregistrée dans chaque RRA après combinaison avec les valeurs précédentes. Cette opération est effectuée via les fonctions de consolidation ou CF (Consolidation Function)
RRA:CF:XFF:nb_PDPs:nb_REC
Le champ CF pour Consolidation function peut prendre l'une des valeurs suivantes:
Le champ XFF XFiles Factor, est le pourcentage de PDP pouvant être inconnu avant de rendre le CDP inconnu.
La valeur nb_PDPs correspond au nombre de PDP utilisés pour un enregistrement.
La valeur nb_REC
La commande rrdinfo permet de retourner des information sur la structure de la RRD
$ rrdinfo /tmp/base.rrd
Pour recuperer la date de derniere mise a jour:
$ rrdtool last /tmp/base.rrd
La valeur retournée est un timestamp Unix, pour la mettre en forme de facon plus lisible:
$ date -d @$(rrdtool last /tmp/base.rrd)