Différences
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 | ||
| rrdtool [Le 22/01/2013, 18:11] – [Enregistrement des données] 82.231.253.141 | rrdtool [Le 14/05/2014, 08:21] (Version actuelle) – [RRDTool : base de données tournante dédié à la supervision] 88.172.197.96 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | |||
| + | ====== RRDTool | ||
| + | |||
| + | RRDTool est un outil qui permet de faire des bases de données (Round-Robin Database). Il permet aussi de faire des graphes. | ||
| + | |||
| + | |||
| + | ===== Exemple ===== | ||
| + | |||
| + | Dans ces bases de données on enregistre des informations telles que l' | ||
| + | |||
| + | Nous allons pouvoir faire plusieurs choses avec les données : | ||
| + | |||
| + | - Affichage des données en fonction du temps (par exemple un graphe pour le jour en cours, pour la semaine, pour le mois et l' | ||
| + | |||
| + | - Si la radio a plusieurs canaux différents par exemple une radio avec de la musique uniquement et l' | ||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | Il suffit d' | ||
| + | |||
| + | Maintenant nous allons attaquer les choses sérieuses ! | ||
| + | |||
| + | ===== Premiere base RRDTool ===== | ||
| + | |||
| + | Cet exemple permet de créer une base de donnée RRD Tool pour deux radios. | ||
| + | |||
| + | Pour ce qui est de l' | ||
| + | |||
| + | Note pour connaitre le timestamp plusieurs solutions : | ||
| + | |||
| + | * En ligne de commande | ||
| + | |||
| + | $ date +%s | ||
| + | |||
| + | * Sinon un petit plugin dans firefox qui se nomme : TimeStamp Converter est très pratique ;) | ||
| + | |||
| + | ===== Création de notre base RRDTool ===== | ||
| + | |||
| + | Nous allons créer une base RRD pour une Radio avec 2 flux : Rock et Alternative | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Reprenons ligne par ligne le fonctionnement : | ||
| + | * rrdtool create -> | ||
| + | * radios.rrd -> | ||
| + | * --start 1297810800 -> indique la date de départ de ma base de donnée (en Timestamp) ici le 16 Février 2011 à 0h00. | ||
| + | |||
| + | La seconde et la 3eme ligne sont des DS (DATA SOURCE) sources de données en Français. | ||
| + | |||
| + | * DS: | ||
| + | |||
| + | Explications : | ||
| + | |||
| + | * DS: | ||
| + | * ds-name -> | ||
| + | * GAUGE | COUNTER | DERIVE | ABSOLUTE -> DST (DATA SOURCE TYPE) | ||
| + | * COUNTER -> | ||
| + | * GAUGE -> | ||
| + | * DERIVE -> | ||
| + | * ABSOLUTE -> | ||
| + | |||
| + | Pour plus d' | ||
| + | |||
| + | |||
| + | |||
| + | Passons à la 4eme et 5eme ligne qui sont les Round Robin Archives. | ||
| + | |||
| + | Une archive se compose d'un certain nombre de valeurs de données ou des statistiques pour chacune des sources de données définies (DS) et est définie par une ligne RRA. | ||
| + | |||
| + | * RRA:AVERAGE | MIN | MAX | LAST: | ||
| + | * RRA: | ||
| + | * AVERAGE -> | ||
| + | * MIN -> | ||
| + | * MAX -> | ||
| + | * LAST -> | ||
| + | * 0.5 -> | ||
| + | * 1 -> nombre de valeur pour faire la moyenne (ici 1 donc aucune moyenne) | ||
| + | * 24 -> nombre d' | ||
| + | |||
| + | Idem pour la ligne suivante : | ||
| + | |||
| + | * 0.5 -> | ||
| + | * 6 -> nombre de valeur pour faire la moyenne (ici 6 donc une moyenne sur 6 enregistrements) | ||
| + | * 12 -> nombre d' | ||
| + | |||
| + | |||
| + | ===== Enregistrement des données ===== | ||
| + | |||
| + | rrdtool update radios.rrd | ||
| + | 1297810801: | ||
| + | 1297811101: | ||
| + | 1297811401: | ||
| + | 1297811701: | ||
| + | 1297812001: | ||
| + | 1297812301: | ||
| + | 1297812601: | ||
| + | 1297812901: | ||
| + | 1297813201: | ||
| + | 1297813501: | ||
| + | 1297813801: | ||
| + | 1297814101: | ||
| + | |||
| + | |||
| + | A 0h00:01 il y avait 0 auditeur sur les deux flux. (timestamp: | ||
| + | |||
| + | A 0h05:01 il y avait 5 auditeurs sur le flux rock et 1 auditeur sur le flux alternative | ||
| + | |||
| + | Et on continue d' | ||
| + | |||
| + | |||
| + | A savoir : je ne peux pas enregistrer ma première donnée à 0h00:00 car lors de la création de notre RRD nous avons précisé qu'il commence à 0h00:00 il faut donc ajouter une seconde pour le 1er enregistrement. Sinon vous aurez une erreur de ce type : ERROR: radios.rrd: illegal attempt to update using time 1297810800 when last update time is 1297810800 (minimum one second step). | ||
| + | |||
| + | |||
| + | ===== Affichage des données ===== | ||
| + | |||
| + | rrdtool graph radios1.png -s 1297810800 -e 1297814101 -h 300 -w 600 -t "Graph d' | ||
| + | DEF: | ||
| + | DEF: | ||
| + | | ||
| + | Avec cette commande on affiche les données de notre base RRD dans un fichier png. | ||
| + | |||
| + | * -s -> date (toujours en timestamp) de départ du graph pas forcement celle des données. | ||
| + | |||
| + | * -e -> date de fin du graph pas forcement celle des données. | ||
| + | |||
| + | * -h -> height hauteur du graph ici 300px | ||
| + | |||
| + | * -w -> width largeur du graph ici 600px | ||
| + | |||
| + | * -t -> titre du graphique | ||
| + | |||
| + | * DEF: -> fetch les datas depuis le fichier rrd | ||
| + | |||
| + | * rock: -> le nom de notre flux qu'on avait déjà défini (mais on peut en choisir un autre c'est un nom utilisé uniquement pour afficher la valeur) | ||
| + | |||
| + | * =radios.rrd -> le nom de notre fichier rrd | ||
| + | |||
| + | * rock: -> ici c'est le nom exact du Data Source | ||
| + | |||
| + | * AVERAGE -> pour dire qu'on veut une moyenne | ||
| + | |||
| + | * LINE3: | ||
| + | |||
| + | |||
| + | |||
| + | ===== Affichage du graphique ===== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Voilà pour l' | ||
| + | |||
| + | ===== Exemple clé en main ===== | ||
| + | |||
| + | Pour ceux qui souhaiteraient tenir à jour une base des données d' | ||
| + | Il permet de créer une Round Robin Database pour : | ||
| + | * le périphérique eth0 | ||
| + | * la charge système | ||
| + | * la température du processeur | ||
| + | * la mémoire vive | ||
| + | Il permet aussi d' | ||
| + | |||
| + | < | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | cat << FIN | ||
| + | ========= RRDTools Tool ========= | ||
| + | Choisissez parmi ces modes : | ||
| + | a) Créer la base de données | ||
| + | z) Alimenter la base de données | ||
| + | e) Afficher le graphe | ||
| + | r) Quitter | ||
| + | ================================= | ||
| + | FIN | ||
| + | date_immediate=$(date +%s) | ||
| + | Machine=$(echo " | ||
| + | ICI=$(cd $(dirname " | ||
| + | doss_image=" | ||
| + | doss_rrd=" | ||
| + | mkdir -p $doss_image | ||
| + | mkdir -p $doss_rrd | ||
| + | |||
| + | read touche | ||
| + | case " | ||
| + | a) # | ||
| + | # | ||
| + | #DS pour les octets transmis avec heartbeat (si passé ce délai, | ||
| + | # | ||
| + | #RRA 0.5 proportion de PDP *Unknown* pas de 5 (*60s) pour 2016 fois : 2016*5*60=604800s==1 semaine | ||
| + | clear | ||
| + | echo " | ||
| + | echo "a) Trafic sur l' | ||
| + | echo "z) Température du processeur" | ||
| + | echo "e) Utilisation CPU" | ||
| + | echo "r) Utilisation mémoire" | ||
| + | echo "t) Tous" | ||
| + | read touche | ||
| + | case " | ||
| + | a) | ||
| + | nom=trafic_eth0 | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | ;; | ||
| + | z) | ||
| + | nom=temperature | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | ;; | ||
| + | e) | ||
| + | nom=cpu | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | DS: | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | ;; | ||
| + | r) | ||
| + | nom=memoire | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | ;; | ||
| + | t) | ||
| + | nom=trafic_eth0 | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | nom=temperature | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | nom=cpu | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | DS: | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | nom=memoire | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | rrdtool create $nom_RRD -s 60 -b $date_immediate \ | ||
| + | DS: | ||
| + | DS: | ||
| + | RRA: | ||
| + | RRA: | ||
| + | echo " | ||
| + | ;; | ||
| + | esac | ||
| + | ;; | ||
| + | |||
| + | z) | ||
| + | # | ||
| + | clear | ||
| + | echo " | ||
| + | echo "a) Trafic sur l' | ||
| + | echo "z) Température du processeur" | ||
| + | echo "e) Utilisation CPU" | ||
| + | echo "r) Utilisation mémoire" | ||
| + | echo "t) Tous" | ||
| + | echo "y) Effacer tout" | ||
| + | read touche | ||
| + | case " | ||
| + | a) | ||
| + | nom=trafic_eth0 | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | crontab << FIN | ||
| + | $(crontab -l) | ||
| + | * * * * * | ||
| + | FIN | ||
| + | ;; | ||
| + | z) | ||
| + | nom=temperature | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | crontab << FIN | ||
| + | $(crontab -l) | ||
| + | * * * * * | ||
| + | FIN | ||
| + | ;; | ||
| + | e) | ||
| + | nom=cpu | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | crontab << FIN | ||
| + | $(crontab -l) | ||
| + | * * * * * | ||
| + | FIN | ||
| + | ;; | ||
| + | r) | ||
| + | nom=memoire | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | crontab << FIN | ||
| + | $(crontab -l) | ||
| + | * * * * * | ||
| + | FIN | ||
| + | ;; | ||
| + | t) | ||
| + | crontab << FIN | ||
| + | $(crontab -l) | ||
| + | * * * * * | ||
| + | FIN | ||
| + | ;; | ||
| + | y) | ||
| + | crontab << FIN | ||
| + | $(crontab -l | grep -v rrdupdate) | ||
| + | FIN | ||
| + | ;; | ||
| + | esac | ||
| + | echo " | ||
| + | crontab -l | ||
| + | ;; | ||
| + | |||
| + | e) | ||
| + | |||
| + | # | ||
| + | max_reception=8000000 | ||
| + | max_emission=800000 | ||
| + | nom=trafic_eth0 | ||
| + | unite=" | ||
| + | vertical=" | ||
| + | nom_RRD=" | ||
| + | derniere_date=$(date +%A%_d\ %B\ %Y,\ %Hh%M -d @$(rrdtool last $nom_RRD)) | ||
| + | titre=" | ||
| + | image=" | ||
| + | echo " | ||
| + | rrdtool graph $image -v " | ||
| + | DEF: | ||
| + | DEF: | ||
| + | HRULE: | ||
| + | HRULE: | ||
| + | COMMENT:" | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | COMMENT:" | ||
| + | # eog $image 2>/ | ||
| + | |||
| + | nom=temperature | ||
| + | unite=" | ||
| + | vertical=" | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | derniere_date=$(date +%A%_d\ %B\ %Y,\ %Hh%M -d @$(rrdtool last $nom_RRD)) | ||
| + | titre=" | ||
| + | image=" | ||
| + | echo " | ||
| + | rrdtool graph $image -v " | ||
| + | DEF: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | HRULE: | ||
| + | HRULE: | ||
| + | COMMENT:" | ||
| + | # eog $image 2>/ | ||
| + | |||
| + | nom=cpu | ||
| + | unite="" | ||
| + | vertical=" | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | derniere_date=$(date +%A%_d\ %B\ %Y,\ %Hh%M -d @$(rrdtool last $nom_RRD)) | ||
| + | titre=" | ||
| + | image=" | ||
| + | CPU=$(grep "model name" / | ||
| + | echo " | ||
| + | rrdtool graph $image -v " | ||
| + | DEF: | ||
| + | DEF: | ||
| + | DEF: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | HRULE: | ||
| + | HRULE: | ||
| + | COMMENT:" | ||
| + | # eog $image 2>/ | ||
| + | |||
| + | nom=memoire | ||
| + | unite=" | ||
| + | vertical=" | ||
| + | nom_RRD=$doss_rrd$nom.rrd | ||
| + | derniere_date=$(date +%A%_d\ %B\ %Y,\ %Hh%M -d @$(rrdtool last $nom_RRD)) | ||
| + | titre=" | ||
| + | image=" | ||
| + | echo " | ||
| + | rrdtool graph $image -v " | ||
| + | DEF: | ||
| + | DEF: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | AREA: | ||
| + | GPRINT: | ||
| + | GPRINT: | ||
| + | COMMENT:" | ||
| + | COMMENT:" | ||
| + | eog $image 2>/ | ||
| + | ;; | ||
| + | r) | ||
| + | exit | ||
| + | ;; | ||
| + | esac | ||
| + | echo " | ||
| + | read touche | ||
| + | killall eog | ||
| + | bash $0 | ||
| + | </ | ||
| + | |||
| + | Il est possible qu'une adaptation/ | ||
| + | Cela peut être une base pour administrer sa machine à distance; on peut le compléter avec un serveur léger de page web affichant les images comme sur la " | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| + | |||
| + | * **(en)** [[http:// | ||
| + | * dernier script librement inspiré d'un article issu de GNU-Linux Magazine/ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // Contributeurs : [[utilisateurs: | ||
