Il s'agit de la commande rrd-beginners qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
rrd-beginners - Guide du débutant RRDtool
SYNOPSIS
Aider les nouveaux utilisateurs de RRDtool à comprendre les bases de RRDtool
DESCRIPTION
Ce manuel est une tentative pour aider les débutants à comprendre les concepts de RRDtool. Ce
met en lumière les différences entre RRDtool et d'autres bases de données. A l'aide d'un exemple,
il explique la structure de la base de données RRDtool. Ceci est suivi d'un aperçu des
fonctionnalité « graphique » de RRDtool. À la fin, il contient des exemples de scripts qui illustrent le
utilisation/encapsulation de RRDtool dans les scripts Shell ou Perl.
Ce que fait Outil RRD so spécial?
RRDtool est un logiciel sous licence GNU développé par Tobias Oetiker, un gestionnaire de système au
Ecole polytechnique fédérale de Suisse. Bien qu'il s'agisse d'une base de données, il existe des
différences entre les bases de données RRDtool et d'autres bases de données, comme indiqué ci-dessous :
· RRDtool stocke les données ; cela en fait un outil back-end. Le jeu de commandes RRDtool permet
créer des graphiques ; cela en fait également un outil frontal. D'autres bases de données stockent simplement
données et ne peut pas créer de graphiques.
· Dans le cas de bases de données linéaires, de nouvelles données sont ajoutées au bas de la base de données
table. Ainsi sa taille ne cesse d'augmenter, alors que la taille d'une base de données RRDtool est
déterminé au moment de la création. Imaginez une base de données RRDtool comme le périmètre d'un cercle.
Les données sont ajoutées le long du périmètre. Lorsque de nouvelles données atteignent le point de départ, elles
écrase les données existantes. De cette façon, la taille d'une base de données RRDtool reste toujours
constant. Le nom "Round Robin" découle de ce comportement.
· D'autres bases de données stockent les valeurs telles qu'elles sont fournies. RRDtool peut être configuré pour calculer
le taux de changement de la valeur précédente à la valeur actuelle et stocker cette information
à la place.
· D'autres bases de données sont mises à jour lorsque des valeurs sont fournies. La base de données RRDtool est
structuré de telle manière qu'il a besoin de données à des intervalles de temps prédéfinis. Si c'est le cas
n'obtient pas de nouvelle valeur pendant l'intervalle, il stocke une valeur INCONNUE pour cet intervalle.
Ainsi, lors de l'utilisation de la base de données RRDtool, il est impératif d'utiliser des scripts qui s'exécutent à
intervalles réguliers pour assurer un flux de données constant pour mettre à jour la base de données RRDtool.
RRDtool est conçu pour stocker des séries temporelles de données. A chaque mise à jour des données, un
l'horodatage est enregistré. Le temps est toujours exprimé en secondes écoulées depuis l'époque (01-01-1970).
RRDtool peut être installé sur Unix ainsi que sur Windows. Il est livré avec un jeu de commandes à transporter
diverses opérations sur les bases de données RRD. Ce jeu de commandes est accessible à partir de la commande
ligne, ainsi qu'à partir de scripts Shell ou Perl. Les scripts agissent comme des wrappers pour accéder
données stockées dans les bases de données RRDtool.
LUMIÈRE SUR NOS by an (ici)
La structure d'une base de données RRD est différente de celle des autres bases de données linéaires. Autre
les bases de données définissent des tables avec des colonnes et de nombreux autres paramètres. Ces définitions
sont parfois très complexes, en particulier dans les grandes bases de données. Les bases de données RRDtool sont
principalement utilisés à des fins de surveillance et sont donc de structure très simple. Les
les paramètres qui doivent être définis sont des variables qui contiennent des valeurs et des archives de ces
valeurs. Étant sensibles au temps, quelques paramètres liés au temps sont également définis.
En raison de sa structure, la définition d'une base de données RRDtool comprend également une disposition
pour spécifier des actions spécifiques à entreprendre en l'absence de valeurs de mise à jour. Source de données (DS),
battement de coeur, type de source de date (DST), archive Round Robin (RRA) et fonction de consolidation
(CF) sont quelques-unes des terminologies liées aux bases de données RRDtool.
La structure d'une base de données et la terminologie qui lui est associée peuvent être mieux expliquées
avec un exemple.
rrdtool crée la cible.rrd \
--début 1023654125 \
--étape 300 \
DS:mem:JAUGE:600:0:671744 \
RRA:MOYEN:0.5:12:24 \
RRA:MOYEN:0.5:288:31
Cet exemple crée une base de données nommée cible.rrd. L'heure de début (1'023'654'125) est spécifiée
en nombre total de secondes depuis l'époque (temps en secondes depuis le 01-01-1970). Lors de la mise à jour
la base de données, l'heure de mise à jour est également spécifiée. Ce temps de mise à jour DOIT être plus long (plus tard)
que l'heure de début et DOIT être en secondes depuis l'époque.
Le pas de 300 secondes indique que la base de données attend de nouvelles valeurs toutes les 300 secondes.
Le script wrapper doit être planifié pour s'exécuter chaque étape secondes pour qu'il mette à jour le
base de données chaque étape secondes.
DS (Data Source) est la variable réelle qui se rapporte au paramètre sur l'appareil qui
est surveillé. Sa syntaxe est
DS:nom_variable:DST:pulsation:min:max
DS est un mot clé. "variable_name" est un nom sous lequel le paramètre est enregistré dans le
base de données. Il peut y avoir autant de DS dans une base de données que nécessaire. Après chaque intervalle de pas, un
une nouvelle valeur de DS est fournie pour mettre à jour la base de données. Cette valeur est également appelée primaire
Point de données (PDP). Dans notre exemple mentionné ci-dessus, un nouveau PDP est généré tous les 300
secondes.
Notez que si vous ne fournissez PAS de nouveaux points de données exactement toutes les 300 secondes, ce n'est pas un
problème, RRDtool interpolera les données en conséquence.
DST (Data Source Type) définit le type du DS. Elle peut être CONTRE, DERIVE, ABSOLUE,
JAUGE. Un DS déclaré comme COUNTER enregistrera le taux de changement de la valeur sur un pas
période. Cela suppose que la valeur est toujours croissante (la différence entre le
actuelle et la valeur précédente est supérieure à 0). Les compteurs de trafic sur un routeur sont un
candidat idéal pour utiliser COUNTER comme DST. DERIVE est le même que COUNTER, mais il permet
valeurs négatives aussi. Si vous voulez voir le taux de Change dans l'espace disque libre de votre
serveur, vous souhaiterez peut-être utiliser le type de données DERIVE. ABSOLUTE enregistre également le taux de
changer, mais il suppose que la valeur précédente est définie sur 0. La différence entre le
actuelle et la valeur précédente est toujours égale à la valeur actuelle. Ainsi, il ne fait que stocker
la valeur actuelle divisée par l'intervalle de pas (300 secondes dans notre exemple). JAUGE fait
pas enregistrer le taux de changement. Il enregistre la valeur réelle elle-même. Il n'y a pas de divisions ou
calculs. La consommation de mémoire dans un serveur est un exemple typique de jauge. La différence
entre les différents types de DST peut être mieux expliqué avec l'exemple suivant :
Valeurs = 300, 600, 900, 1200
Pas = 300 secondes
COMPTEUR DS = 1, 1, 1, 1
DÉRIVER DS = 1, 1, 1, 1
ABSOLU DS = 1, 2, 3, 4
JAUGE DS = 300, 600, 900, 1200
Le paramètre suivant est battement de coeur. Dans notre exemple, le rythme cardiaque est de 600 secondes. Si la base de données
n'obtient pas de nouveau PDP dans les 300 secondes, il attendra encore 300 secondes (total 600
secondes). S'il ne reçoit aucun PDP dans les 600 secondes, il enregistrera une valeur INCONNUE
dans la base de données. Cette valeur INCONNUE est une caractéristique spéciale de RRDtool - elle est bien meilleure
que de supposer qu'une valeur manquante était 0 (zéro) ou tout autre nombre qui pourrait également être un
valeur de données valide. Par exemple, le compteur de flux de trafic sur un routeur ne cesse d'augmenter.
Disons qu'une valeur est manquée pour un intervalle et que 0 est stocké au lieu de UNKNOWN. Maintenant, quand
la valeur suivante devient disponible, il calculera la différence entre le courant
valeur et la valeur précédente (0) qui n'est pas correcte. Donc, en insérant la valeur UNKNOWN
a beaucoup plus de sens ici.
Les deux paramètres suivants sont respectivement la valeur minimale et maximale. Si la variable
à stocker a des valeurs maximales et minimales prévisibles, cela doit être spécifié ici.
Toute valeur de mise à jour tombant en dehors de cette plage sera stockée comme INCONNU.
La ligne suivante déclare une archive round robin (RRA). La syntaxe pour déclarer un RRA est
RRA:CF:xff:step:lignes
RRA est le mot-clé pour déclarer les RRA. La fonction de consolidation (CF) peut être MOYENNE,
MINIMUM, MAXIMUM et DERNIER. Le concept de point de données consolidé (CDP) entre en
l'image ici. Un CDP est CFed (moyenne, valeur maximum/minimum ou dernière valeur) de étape
nombre de PDP. Ce RRA tiendra lignes CDP.
Regardons l'exemple ci-dessus. Pour le premier RRA, 12 (étapes) PDP (variables DS)
sont MOYENNES (CF) pour former un CDP. 24 (lignes) de thèses CDP sont archivés. Chaque PDP se produit
à 300 secondes. 12 PDP représentent 12 fois 300 secondes soit 1 heure. Cela signifie 1 CDP
(qui est égal à 12 PDP) représente des données d'une valeur de 1 heure. 24 de ces CDP représentent 1 jour (1
heure multipliée par 24 CDP). Cela signifie que ce RRA est une archive pour une journée. Après 24 CDP, CDP
le numéro 25 remplacera le 1er CDP. Le deuxième RRA permet d'économiser 31 CDP ; chaque DPC représente un
Valeur MOYENNE pour une journée (288 PDP, couvrant chacun 300 secondes = 24 heures). C'est pourquoi ce
RRA est une archive d'un mois. Une même base de données peut avoir plusieurs RRA. S'il y a
plusieurs DS, chaque RRA individuel enregistrera les données de tous les DS dans la base de données. Pour
exemple, si une base de données a 3 DS et que des RRA quotidiens, hebdomadaires, mensuels et annuels sont déclarés,
alors chaque RRA contiendra les données des 3 sources de données.
Graphique la magie
Une autre caractéristique importante de RRDtool est sa capacité à créer des graphiques. La commande "graphique"
utilise la commande "fetch" en interne pour récupérer les valeurs de la base de données. Avec le
valeurs récupérées il dessine des graphiques tels que définis par les paramètres fournis sur la commande
ligne. Un même graphique peut montrer différentes DS (sources de données) d'une base de données. C'est aussi
possible d'afficher les valeurs de plusieurs bases de données dans un seul graphique. Souvent, c'est
nécessaire d'effectuer quelques calculs sur les valeurs extraites de la base de données avant de tracer
eux. Par exemple, dans les réponses SNMP, les valeurs de consommation de mémoire sont généralement spécifiées dans
Les Ko et le flux de trafic sur les interfaces sont spécifiés en octets. Les graphiques de ces valeurs
être plus significatif si les valeurs sont représentées en Mo et en Mbit/s. La commande graphique RRDtool
permet de définir de telles conversions. Outre les calculs mathématiques, il est également
possible d'effectuer des opérations logiques telles que supérieur à, inférieur à et if/then/else.
Si une base de données contient plus d'une archive RRA, une question peut se poser : comment
RRDtool décide quelle archive RRA utiliser pour récupérer les valeurs ? RRDtool regarde
plusieurs choses au moment de faire son choix. Premièrement, il s'assure que le RRA couvre autant de
la période graphique que possible. Deuxièmement, il examine la résolution du RRA par rapport
à la résolution du graphe. Il essaie d'en trouver un qui a le même ou un meilleur meilleur
résolution. Avec l'option "-r", vous pouvez forcer RRDtool à adopter une résolution différente
que celui calculé à partir de la largeur en pixels du graphique.
Les valeurs de différentes variables peuvent être présentées sous 5 formes différentes dans un graphique - AREA,
LIGNE1, LIGNE2, LIGNE3 et PILE. AREA est représenté par une zone de couleur unie avec des valeurs telles que
la limite de cette zone. LINE1/2/3 (largeur croissante) ne sont que des lignes simples représentant
les valeurs. STACK est également une zone mais il est "empilé" sur le dessus AREA ou LINE1/2/3. Un autre
Il est important de noter que les variables sont tracées dans l'ordre dans lequel elles sont définies dans le
commande graphique. Par conséquent, il faut veiller à définir STACK uniquement après avoir défini AREA/LINE.
Il est également possible de mettre des commentaires formatés dans le graphique. Des instructions détaillées peuvent
se trouve dans le manuel du graphique.
Emballage Outil RRD dans les Coquillage/Perle scénario
Après avoir compris RRDtool, il est maintenant temps d'utiliser réellement RRDtool dans les scripts. Tâches
impliqués dans la gestion du réseau sont la collecte de données, le stockage de données et la récupération de données. Dans
l'exemple suivant, la base de données target.rrd précédemment créée est utilisée. Collecte de données
et le stockage des données se fait à l'aide de scripts Shell. La récupération des données et la génération de rapports sont effectuées
en utilisant des scripts Perl. Ces scripts sont présentés ci-dessous :
coquille scénario (collecte données, mises à jour base de données)
#!/ Bin / sh
a = 0
tandis que [ "$a" == 0 ]; faire
snmpwalk -c public 192.168.1.250 hrSWRunPerfMem > snmp_reply
total_mem=`awk 'COMMENCER {tot_mem=0}
{ si ($NF == "Koctets")
{tot_mem=tot_mem+$(NF-1)}
}
END {print tot_mem}' snmp_reply`
# Je peux utiliser N en remplacement de l'heure actuelle
rrdtool mise à jour cible.rrd N:$total_mem
# dormir jusqu'à ce que les 300 prochaines secondes soient pleines
perl -e 'sommeil 300 - temps % 300'
done # fin de la boucle while
Perl scénario (récupère données base de données et génère graphiques et statistiques)
#!/usr/bin/perl -w
# Ce script récupère les données de target.rrd, crée un graphique de mémoire
# consommation sur la cible (Dual P3 Processor 1 GHz, 656 Mo RAM)
# appeler le module perl RRD
utilisez lib qw( /usr/local/rrdtool-1.0.41/lib/perl ../lib/perl );
utiliser les RRD ;
mon $cur_time = heure(); # régler l'heure actuelle
mon $end_time = $cur_time - 86400 ; # définir l'heure de fin sur il y a 24 heures
mon $start_time = $end_time - 2592000 ; # définir le début 30 jours dans le passé
# récupère les valeurs moyennes de la base de données RRD entre l'heure de début et de fin
mon ($start,$step,$ds_names,$data) =
RRDs::fetch("target.rrd", "AVERAGE",
"-r", "600", "-s", "$start_time", "-e", "$end_time");
# enregistre les valeurs récupérées dans un tableau à 2 dimensions
mes $lignes = 0 ;
mes $colonnes = 0 ;
ma $time_variable = $start ;
foreach $ligne (@$données) {
$vals[$rows][$columns] = $time_variable ;
$variable_temps = $variable_temps + $pas ;
foreach $val (@$ligne) {
$vals[$lignes][++$colonnes] = $val;}
$lignes++ ;
$colonnes = 0 ;
}
mon $tot_time = 0 ;
mon compte $ = 0 ;
# enregistre les valeurs du tableau à 2 dimensions dans un tableau à 1 dimension
pour $i ( 0 .. $#vals ) {
$tot_mem[$count] = $vals[$i][1] ;
$ count ++;
}
mon $tot_mem_sum = 0 ;
# calculer le total de toutes les valeurs
pour $i ( 0 .. ($count-1) ) {
$tot_mem_sum = $tot_mem_sum + $tot_mem[$i] ;
}
# calcule la moyenne du tableau
mon $tot_mem_ave = $tot_mem_sum/($count);
# créer le graphique
RRDs::graph ("/images/mem_$count.png",
"--title= Utilisation de la mémoire",
"--vertical-label=Consommation de mémoire (Mo)",
"--start=$start_time",
"--end=$fin_heure",
"--color=BACK#CCCCCC",
"--color=CANVAS#CCFFFF",
"--color=SHADEB#9999CC",
"--hauteur=125",
"--limite-supérieure=656",
"--limite-inférieure=0",
"--rigide",
"--base=1024",
"DEF:tot_mem=target.rrd:mem:AVERAGE",
"CDEF:tot_mem_cor=tot_mem,0,671744,LIMIT,UN,0,tot_mem,IF,1024,/",
"CDEF:machine_mem=tot_mem,656,+,tot_mem,-",
"COMMENT:Consommation de mémoire entre $start_time",
"COMMENT: et $end_time ",
"HRULE:656#000000:Mémoire disponible maximale - 656 Mo",
"AREA:machine_mem#CCFFFF:Mémoire non utilisée",
"AREA:tot_mem_cor#6699CC:Mémoire totale consommée en Mo");
mon $err=RRDs::error;
if ($err) {print "problème de génération du graphique : $err\n" ;}
# imprimer la sortie
print "La consommation mémoire moyenne est de " ;
printf "%5.2f",$tot_mem_ave/1024;
print " Mo. La représentation graphique peut être trouvée dans /images/mem_$count.png.";
Utilisez rrd-beginners en ligne en utilisant les services onworks.net