Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
app:rrdtool:start [2016/04/24 17:59] – créée yoann | app:rrdtool:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag> | + | {{tag> |
====== RRDtool ====== | ====== RRDtool ====== | ||
- | étapes pour la création d'un programme utilisant rrdtool: | + | ===== Généralités ===== |
- | * Initialiser la base de données. création | + | 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' |
- | * Collecter | + | |
- | * Création du graphique. Récupérer les données de la base pour faire les calculs et créer | + | |
+ | ===== La base de données ===== | ||
+ | |||
+ | **RRD** pour **R**ound **R**obin **D**atabase (base de données tourniquet). Le fichier de la base RRD contient un nombre d' | ||
+ | |||
+ | Les données enregistrées dans une RRD sont fondamentalement liées au temps. L' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | La plage de temps servant de base pour la mesure est également bornée (déterminée et fixée). Si plus d' | ||
+ | |||
+ | ===== Terminologie ===== | ||
+ | |||
+ | * **DS** pour **Data Source**, description d'une source de données numériques brute à destination du stockage. Identifiée par un nom, valeurs brutes utilisées à intervalle régulier (**heartbeat**). | ||
+ | * **DST** pour **Data Source Type**, une **DS** est également caractérisée par son type qui peut être: | ||
+ | * **COUNTER**, | ||
+ | * **DERIVE**, similaire à **COUNTER** mais permet de stocker des valeurs négatives et de décroître. Le delta est stocké. | ||
+ | * **ABSOLUTE**: | ||
+ | * **GAUGE**: stocke une valeur (la mesure), non un delta. | ||
+ | * **RRA** pour **Round Robin Archive**. Une RRD peut contenir plusieurs archives RRA. Les valeurs insérées dans la RRD sont périodiquement agrégées pour former les CDP enregistrés dans les RRA. Elles peuvent être assimilées à la définitions de vues. On peut définir différentes façon d' | ||
+ | * **PDP** pour **Primary Data Point**. A chaque intervalle de temps égal à **step**, une nouvelle valeur provenant d'une **DS** est une **PDP**. La PDP est qualifiée de primaire car elle n'est pas directement stockée dans la RRA, elle est consolidée avant. La consolidation consiste à agréger plusieurs PDP à l'aide d'une fonction de consolidation afin de conserver une tendance pertinente. | ||
+ | * **CDP** pour **Consolided Data Point**, c'est l' | ||
+ | * **CF** pour **Consolidation Function** Lors de la définition d'une RRA, RRDtool utilise un certain nombre de PDP pour déterminer le CDP à enregistrer. La manière de traiter est définie par un fonction de consolidation: | ||
+ | |||
+ | |||
+ | |||
+ | ==== Data Source ==== | ||
+ | |||
+ | La déclaration d'un **DS** utilise la syntaxe suivante: | ||
+ | |||
+ | < | ||
+ | DS: | ||
+ | </ | ||
+ | |||
+ | Le champ **DST** pour **D**ata **S**ource **T**ype peut prendre les valeurs suivantes: | ||
+ | |||
+ | L' **heartbeat** s' | ||
+ | |||
+ | **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: | ||
+ | </ | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | |||
+ | ==== RRA ==== | ||
+ | |||
+ | **RRA** pour **R**ound **R**obin **A**rchive. Une base RRD peut contenir une ou plusieurs RRA afin de couvrir des plages d' | ||
+ | |||
+ | La couverture temporelle de la RRA est ajustable via deux paramètres: | ||
+ | * step: nombre de PDP à agréger pour former le CDP | ||
+ | * rows: nombre de CDP conservés dans la RRA | ||
+ | |||
+ | Il est donc possible de concevoir des plages d' | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | ==== Syntaxe ==== | ||
+ | |||
+ | < | ||
+ | RRA: | ||
+ | </ | ||
+ | |||
+ | Le champ **CF** pour **C**onsolidation **f**unction peut prendre l'une des valeurs suivantes: | ||
+ | |||
+ | * AVERAGE | ||
+ | * MIN | ||
+ | * MAX | ||
+ | * LAST | ||
+ | |||
+ | Le champ **XFF** **XF**iles **F**actor, 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 | ||
+ | |||
+ | |||
+ | ===== Consulter la RRD ===== | ||
+ | |||
+ | La commande rrdinfo permet de retourner des information sur la structure de la RRD | ||
+ | <code bash> | ||
+ | $ rrdinfo / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pour recuperer la date de derniere mise a jour: | ||
+ | <code bash> | ||
+ | $ rrdtool last / | ||
+ | </ | ||
+ | |||
+ | La valeur retournée est un timestamp Unix, pour la mettre en forme de facon plus lisible: | ||
+ | |||
+ | <code bash> | ||
+ | $ date -d @$(rrdtool last / | ||
+ | </ | ||
+ | ===== Étapes pour la création d'une application ===== | ||
+ | |||
+ | * Initialiser la base de données. Création de la base de données et préparer pour accepter les données. Il va falloir préciser la quantité de données à sauvegarder, | ||
+ | * Collecter les données. Un processus devra périodiquement écrire les données dans la base. C'est probablement l’étape qui prendra le plus de temps de développement. | ||
+ | * Création du graphique via [[app: | ||
- | ===== Exemple ===== | ||
+ | ===== Exemples ===== | ||
+ | * [[app: | ||
+ | * Enregistrer le temps moyen de réponse d'un ping sur 1h [[app: | ||
===== Références ===== | ===== Références ===== | ||
* https:// | * https:// | ||
+ | * http:// | ||
+ | * GLM N°143 de Novembre 2011 | ||
+ | * https:// | ||