Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
app:rrdtool:start [2018/03/25 20:10] – yoann | app:rrdtool:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
====== RRDtool ====== | ====== RRDtool ====== | ||
- | Étapes pour la création d'une application basée sur **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. Relire les données de la base pour faire les calculs et créer les graphiques. | + | |
===== La base de données ===== | ===== La base de données ===== | ||
- | **RRD** pour **R**ound **R**obin **D**atabase (base de données tourniquet). Le nombre d' | + | **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' | + | La plage de temps servant de base pour la mesure est également bornée (déterminée et fixée). Si plus d' |
===== Terminologie ===== | ===== Terminologie ===== | ||
- | * **DS** pour **Data Source**, description d'une source de données | + | * **DS** pour **Data Source**, description d'une source de données |
* **DST** pour **Data Source Type**, une **DS** est également caractérisée par son type qui peut être: | * **DST** pour **Data Source Type**, une **DS** est également caractérisée par son type qui peut être: | ||
* **COUNTER**, | * **COUNTER**, | ||
Ligne 23: | Ligne 26: | ||
* **ABSOLUTE**: | * **ABSOLUTE**: | ||
* **GAUGE**: stocke une valeur (la mesure), non un delta. | * **GAUGE**: stocke une valeur (la mesure), non un delta. | ||
- | * **RRA** pour **Round Robin Archive**, c'est la base de données round robin. Elle peut être assimilée | + | * **RRA** pour **Round Robin Archive**. |
- | * **PDP** pour **Primary Data Point**. A chaque intervalle de temps égal a **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 | + | * **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 |
- | * **CDP** pour **Consolided Data Point**, c'est l' | + | * **CDP** pour **Consolided Data Point**, c'est l' |
- | * **CF** pour **Consolidation Function** Lors de la création | + | * **CF** pour **Consolidation Function** Lors de la définition |
- | |||
- | A la création du fichier base, on définit notamment un plusieurs objets de type **DS** et de type **RRA** : | ||
- | * **DS** (**D**ata **S**ource) définit le type de données et les limites permettant de contrôler la validité de la valeur | ||
==== Data Source ==== | ==== Data Source ==== | ||
Ligne 45: | Ligne 45: | ||
L' **heartbeat** s' | 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. | + | **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 |
Ci dessous, un exemple de déclaration utilisé pour stocker des relevés de température: | Ci dessous, un exemple de déclaration utilisé pour stocker des relevés de température: | ||
Ligne 53: | Ligne 53: | ||
</ | </ | ||
- | Dans l' | + | Dans l' |
==== RRA ==== | ==== RRA ==== | ||
- | Définition des Round Robin Archives. Une base RRD peut contenir une ou plusieurs RRA. Chaque RRA est une vue différente stockant indépendamment les données chacune avec un nombre prédéfinit d' | + | **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' | Lors de l' | ||
- | Syntaxe: | + | ==== Syntaxe |
< | < | ||
Ligne 74: | Ligne 81: | ||
* LAST | * LAST | ||
- | Le champ **XFF** **XF**iles **F**actor, | + | Le champ **XFF** **XF**iles **F**actor, est le pourcentage de **PDP** |
La valeur **nb_PDPs** correspond au nombre de PDP utilisés pour un enregistrement. | La valeur **nb_PDPs** correspond au nombre de PDP utilisés pour un enregistrement. | ||
Ligne 80: | Ligne 87: | ||
La valeur nb_REC | 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: | ||
===== Exemples ===== | ===== Exemples ===== | ||
+ | * [[app: | ||
* Enregistrer le temps moyen de réponse d'un ping sur 1h [[app: | * Enregistrer le temps moyen de réponse d'un ping sur 1h [[app: | ||
Ligne 90: | Ligne 122: | ||
* https:// | * https:// | ||
* http:// | * http:// | ||
+ | * GLM N°143 de Novembre 2011 | ||
+ | * https:// | ||