Il s'agit de la commande rrdtutorial 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
rrdtutorial - Le tutoriel RRDtool d'Alex van den Bogaerdt
DESCRIPTION
RRDtool est écrit par Tobias Oetiker[email protected]> avec des contributions de nombreuses personnes
partout dans le monde. Ce document est écrit par Alex van den Bogaerdt
<[email protected]> pour vous aider à comprendre ce qu'est RRDtool et ce qu'il peut faire pour
vous.
La documentation fournie avec RRDtool peut être trop technique pour certaines personnes. Cette
tutoriel est là pour vous aider à comprendre les bases de RRDtool. Cela devrait vous préparer à
lisez vous-même la documentation. Il explique également les choses générales sur les statistiques
en mettant l'accent sur le réseautage.
TUTORIAL
Important
S'il vous plaît ne sautez pas en avant dans ce document! La première partie de ce document explique les
basiques et peut être ennuyeux. Mais si vous ne comprenez pas les bases, les exemples ne
être aussi significatif pour vous.
Parfois, les choses changent. Cet exemple fournissait des nombres tels que "0.04" au lieu de
"4.00000e-02". Ce sont vraiment les mêmes chiffres, juste écrits différemment. Ne pas
être alarmé si une future version de rrdtool affiche une forme de sortie légèrement différente.
Les exemples de ce document sont corrects pour la version 1.2.0 de RRDtool.
De plus, des bugs surviennent parfois. Ils peuvent également influencer le résultat des exemples.
L'exemple speed4.png en souffrait (le traitement de données inconnues dans un if-
déclaration était fausse). Les données normales seront parfaites (un bogue dans rrdtool ne durera pas longtemps)
mais les cas spéciaux comme NaN, INF et ainsi de suite peuvent durer un peu plus longtemps. Essayez une autre version si
vous pouvez, ou simplement vivre avec.
J'ai corrigé l'exemple speed4.png (et ajouté une note). Il peut y avoir d'autres exemples qui
souffrent du même bogue ou d'un bogue similaire. Essayez de le réparer vous-même, ce qui est une excellente
exercice. Mais s'il vous plaît ne soumettez pas votre résultat en tant que correctif à la source de ce document.
Discutez-en sur la liste des utilisateurs ou écrivez-moi.
Ce que is Outil RRD ?
RRDtool fait référence à l'outil Round Robin Database. Le round robin est une technique qui fonctionne avec un
quantité fixe de données et un pointeur vers l'élément actuel. Pensez à un cercle avec quelques
points tracés sur le bord. Ces points sont les endroits où les données peuvent être stockées. Dessinez un
flèche du centre du cercle à l'un des points ; c'est le pointeur. Quand le
les données actuelles sont lues ou écrites, le pointeur passe à l'élément suivant. Comme nous sommes sur un
cercle il n'y a ni début ni fin, vous pouvez continuer encore et encore. Après un
tandis que, toutes les places disponibles seront utilisées et le processus réutilise automatiquement les anciens
Emplacements. De cette façon, l'ensemble de données n'augmentera pas en taille et ne nécessite donc aucun
maintenance. RRDtool fonctionne avec les bases de données Round Robin (RRD). Il stocke et récupère
données d'eux.
Ce que données, vous be mettre développement an RRD ?
Vous l'appelez, cela conviendra probablement tant qu'il s'agit d'une sorte de données de séries chronologiques. Cette
signifie que vous devez être capable de mesurer une valeur à plusieurs moments et de fournir cette
informations à RRDtool. Si vous pouvez le faire, RRDtool pourra le stocker. Les valeurs
doivent être numériques mais ne doivent pas nécessairement être des entiers, comme c'est le cas avec MRTG (le prochain
section donnera plus de détails sur cette application plus spécialisée).
De nombreux exemples ci-dessous parlent de SNMP qui est un acronyme pour Simple Network Management
Protocole. "Simple" fait référence au protocole. Cela ne signifie pas qu'il est simple à gérer ou
surveiller un réseau. Après avoir parcouru ce document, vous devriez en savoir assez pour
être capable de comprendre de quoi les gens parlent. Pour l'instant, sachez que SNMP peut
être utilisé pour interroger les appareils sur les valeurs des compteurs qu'ils conservent. C'est la valeur de ceux
compteurs que nous voulons stocker dans le RRD.
Ce que vous I do avec ceci. outil?
RRDtool est issu de MRTG (Multi Router Traffic Grapher). MRTG a commencé comme un tout petit
script pour représenter graphiquement l'utilisation de la connexion d'une université à Internet. MRTG a été plus tard
(ab-) utilisé comme outil pour représenter graphiquement d'autres sources de données, notamment la température, la vitesse, la tension,
nombre d'impressions et autres.
Très probablement, vous commencerez à utiliser RRDtool pour stocker et traiter les données collectées via SNMP.
Les données seront très probablement des octets (ou bits) transférés depuis et vers un réseau ou un
ordinateur. Mais il peut également être utilisé pour afficher les raz de marée, le rayonnement solaire, la puissance
consommation, nombre de visiteurs d'un salon, niveau sonore à proximité d'un aéroport,
température sur votre lieu de vacances préféré, température dans le réfrigérateur et quel que soit votre
l'imagination peut venir avec.
Vous n'avez besoin que d'un capteur pour mesurer les données et pouvoir alimenter les chiffres dans RRDtool.
RRDtool vous permet ensuite de créer une base de données, d'y stocker des données, de récupérer ces données et de créer
graphiques au format PNG pour l'affichage sur un navigateur Web. Ces images PNG dépendent du
les données que vous avez collectées et pourraient être, par exemple, un aperçu de l'utilisation moyenne du réseau,
ou les pics qui se sont produits.
Ce que if I toujours avons d'ouvrabilité après lire ceci. documenter?
Tout d'abord : relisez-le ! Vous avez peut-être raté quelque chose. Si vous n'arrivez pas à compiler
les sources et vous avez un OS assez commun, ce ne sera probablement pas la faute de RRDtool.
Il peut y avoir des versions pré-compilées sur Internet. S'ils viennent de confiance
sources, obtenez-en une.
Si par contre le programme fonctionne mais ne vous donne pas les résultats escomptés, il
être un problème avec sa configuration. Passez en revue votre configuration et comparez-la avec la
exemples qui suivent.
Il y a une liste de diffusion et une archive de celle-ci. Lisez la liste pendant quelques semaines et recherchez le
archiver. Il est considéré comme impoli de poser une question sans chercher dans les archives : votre
le problème a peut-être déjà été résolu pour quelqu'un d'autre ! C'est vrai pour la plupart, sinon
tous, listes de diffusion et pas seulement pour celui-ci en particulier. Regardez dans la documentation qui
est venu avec RRDtool pour l'emplacement et l'utilisation de la liste.
Je vous suggère de prendre un moment pour vous inscrire à la liste de diffusion dès maintenant en envoyant un e-mail
à[email protected]> avec un sujet de "s'abonner". Si jamais tu veux
quitter cette liste, il suffit d'écrire un e-mail à la même adresse mais maintenant avec un sujet de
"Se désabonner".
Comment sera vous vous aider moi?
En vous donnant des descriptions détaillées avec des exemples détaillés. je suppose qu'en suivant
les instructions dans l'ordre présenté vous donneront une connaissance suffisante de RRDtool pour
expérimentez par vous-même. Si cela ne fonctionne pas du premier coup, n'abandonnez pas. Relisez le
des choses que vous avez comprises, vous avez peut-être raté quelque chose.
En suivant les exemples, vous obtenez une expérience pratique et, plus important encore, certains
informations générales sur son fonctionnement.
Vous aurez besoin de savoir quelque chose sur les nombres hexadécimaux. Si vous ne le faites pas, commencez par
lire bin_dec_hex avant de continuer ici.
Votre premier Rond rouge-gorge Base de données
À mon avis, la meilleure façon d'apprendre quelque chose est de le faire réellement. Pourquoi ne pas commencer du bon pied
maintenant? Nous allons créer une base de données, y mettre des valeurs et extraire à nouveau ces données. Ton
la sortie doit être la même que la sortie qui est incluse dans ce document.
Nous allons commencer par des choses simples et comparer une voiture avec un routeur, ou comparer les kilomètres
(miles si vous le souhaitez) avec des bits et des octets. C'est tout de même : un certain nombre sur un certain temps.
Supposons que nous ayons un appareil qui transfère des octets vers et depuis Internet. Cet appareil garde
un compteur qui commence à zéro lorsqu'il est allumé, augmentant avec chaque octet qui est
transféré. Ce compteur aura probablement une valeur maximale. Si cette valeur est atteinte et
un octet supplémentaire est compté, le compteur recommence à zéro. C'est la même chose que beaucoup
compteurs dans le monde, comme le compteur kilométrique d'une voiture.
La plupart des discussions sur la mise en réseau parlent de bits par seconde, alors habituons-nous à cela
tout de suite. Supposons qu'un octet est de huit bits et commencez à penser en bits et non en octets. Le compteur,
cependant, compte toujours les octets ! Dans le monde SNMP, la plupart des compteurs sont de 32 bits. Cette
signifie qu'ils comptent de 0 à 4294967295. Nous utiliserons ces valeurs dans les exemples.
L'appareil, lorsqu'il est demandé, renvoie la valeur actuelle du compteur. Nous connaissons le temps que
a passé depuis notre dernière demande, donc nous savons maintenant combien d'octets ont été transférés ***sur
moyenne*** par seconde. Ce n'est pas très difficile à calculer. D'abord en mots, puis en
calculs :
1. Prenez le compteur actuel, soustrayez-y la valeur précédente.
2. Faites de même avec l'heure actuelle et l'heure précédente (en secondes).
3. Divisez le résultat de (1) par le résultat de (2), le résultat est le nombre d'octets par
seconde. Multipliez par huit pour obtenir le nombre de bits par seconde (bps).
bps = (counter_now - counter_before) / (time_now - time_before) * 8
Pour certaines personnes, il peut être utile de traduire cela en exemple automobile. N'essaie pas ça
exemple, et si vous le faites, ne me blâmez pas pour les résultats !
Les personnes qui ne sont pas habituées à penser en kilomètres par heure peuvent traduire le plus en miles par
heure en divisant le km par 1.6 (assez proche). J'utiliserai les abréviations suivantes :
m : mètre
km : kilomètre (= 1000 mètres).
h : heure
s : seconde
km/h : kilomètres par heure
m/s : mètres par seconde
Vous conduisez une voiture. A 12h05 tu lis le compteur dans le tableau de bord et il te dit
que la voiture a parcouru 12345 km jusqu'à ce moment. A 12h10 tu regardes à nouveau, il lit
12357 km. Cela signifie que vous avez parcouru 12 km en cinq minutes. Un scientifique traduirait
cela en mètres par seconde et cela fait une belle comparaison avec le problème de (octets
par cinq minutes) par rapport à (bits par seconde).
Nous avons parcouru 12 kilomètres soit 12000 mètres. Nous l'avons fait en cinq minutes ou 300
secondes. Notre vitesse est de 12000m/300s ou 40 m/s.
On pourrait aussi calculer la vitesse en km/h : 12 fois 5 minutes font une heure, il faut donc
multipliez 12 km par 12 pour obtenir 144 km/h. Pour nos amis anglophones natifs : ça fait 90
mph alors n'essayez pas cet exemple à la maison ou là où j'habite :)
N'oubliez pas que ces chiffres ne sont que des moyennes. Il n'y a aucun moyen de comprendre à partir du
chiffres, si vous conduisez à vitesse constante. Il y a un exemple plus loin dans ce tutoriel
cela explique cela.
J'espère que vous comprenez qu'il n'y a pas de différence dans le calcul du m/s ou du bps ; seulement le chemin
nous collectons les données est différent. Même le k du kilo est le même qu'en termes de réseau
k signifie aussi 1000.
Nous allons maintenant créer une base de données où nous pourrons conserver tous ces numéros intéressants. La méthode
utilisé pour démarrer le programme peut différer légèrement d'un système d'exploitation à l'autre, mais je suppose que vous pouvez comprendre
si cela fonctionne différemment sur le vôtre. Assurez-vous de ne pas écraser de fichier sur votre
système lors de l'exécution de la commande suivante et tapez la ligne entière comme une longue ligne (je
dû le diviser pour plus de lisibilité) et ignorer tous les caractères '\'.
rrdtool crée test.rrd \
--début 920804400 \
DS:vitesse:COUNTER:600:U:U \
RRA:MOYEN:0.5:1:24 \
RRA:MOYEN:0.5:6:10
(Alors entrez: "rrdtool create test.rrd --start 920804400 DS ...")
Ce que a était établi?
Nous avons créé la base de données à tour de rôle appelée test (test.rrd) qui commence à midi le jour où j'ai
commencé à écrire ce document, le 7 mars 1999 (cette date se traduit par 920804400
secondes comme expliqué ci-dessous). Notre base de données contient une source de données (DS) nommée « vitesse » qui
représente un compteur. Ce compteur est lu toutes les cinq minutes (c'est la valeur par défaut
vous n'avez donc pas besoin de mettre "--step=300"). Dans la même base de données deux round robin
les archives (RRA) sont conservées, on fait la moyenne des données à chaque lecture (par exemple, il y a
rien à faire en moyenne) et conserve 24 échantillons (24 fois 5 minutes font 2 heures). L'autre
fait la moyenne de 6 valeurs (une demi-heure) et contient 10 de ces moyennes (par exemple 5 heures).
RRDtool fonctionne avec des horodatages spéciaux provenant du monde UNIX. Cet horodatage est le
nombre de secondes écoulées depuis le 1er janvier 1970 UTC. La valeur d'horodatage est
traduit en heure locale et sera donc différent selon les fuseaux horaires.
Il y a de fortes chances que vous ne soyez pas dans la même partie du monde que moi. Cela signifie votre temps
zone est différente. Dans tous les exemples où je parle de temps, les heures peuvent être fausses pour
tu. Cela a peu d'effet sur les résultats des exemples, il suffit de corriger les heures tout en
en train de lire. Par exemple : là où je verrai "12:05", les gens du Royaume-Uni verront "11:05".
Nous devons maintenant remplir notre base de données avec quelques chiffres. On fera semblant d'avoir lu le
numéros suivants :
12h05 12345km
12h10 12357km
12h15 12363km
12h20 12363km
12h25 12363km
12h30 12373km
12h35 12383km
12h40 12393km
12h45 12399km
12h50 12405km
12h55 12411km
13h00 12415km
13h05 12420km
13h10 12422km
13h15 12423km
Nous remplissons la base de données comme suit :
rrdtool mise à jour test.rrd 920804700:12345 920805000:12357 920805300:12363
rrdtool mise à jour test.rrd 920805600:12363 920805900:12363 920806200:12373
rrdtool mise à jour test.rrd 920806500:12383 920806800:12393 920807100:12399
rrdtool mise à jour test.rrd 920807400:12405 920807700:12411 920808000:12415
rrdtool mise à jour test.rrd 920808300:12420 920808600:12422 920808900:12423
Cela se lit comme suit : mettre à jour notre base de données de test avec les numéros suivants
heure 920804700, valeur 12345
heure 920805000, valeur 12357
etc.
Comme vous pouvez le voir, il est possible d'introduire plus d'une valeur dans la base de données en une seule
commander. J'ai dû m'arrêter à trois pour la lisibilité mais le vrai maximum par ligne est OS
dépendant.
Nous pouvons maintenant récupérer les données de notre base de données en utilisant "rrdtool fetch":
rrdtool fetch test.rrd MOYENNE --start 920804400 --end 920809200
Il doit renvoyer la sortie suivante :
vitesse
920804700 : nan
920805000 : 4.0000000000e-02
920805300 : 2.0000000000e-02
920805600 : 0.0000000000e+00
920805900 : 0.0000000000e+00
920806200 : 3.3333333333e-02
920806500 : 3.3333333333e-02
920806800 : 3.3333333333e-02
920807100 : 2.0000000000e-02
920807400 : 2.0000000000e-02
920807700 : 2.0000000000e-02
920808000 : 1.3333333333e-02
920808300 : 1.6666666667e-02
920808600 : 6.6666666667e-03
920808900 : 3.3333333333e-03
920809200 : nan
920809500 : nan
Notez que vous pourriez obtenir plus de lignes que prévu. La raison en est que vous demandez
une plage de temps qui se termine le 920809200. Le nombre qui est écrit derrière 920809200 : dans le
liste ci-dessus couvre la plage de temps de 920808900 à 920809200, À L'EXCLUSION 920809200. Par conséquent
pour être sûr, vous recevez également l'entrée de 920809200 à 920809500 car elle
INCLUT 920809200. Vous pouvez également voir "NaN" au lieu de "nan", cela dépend du système d'exploitation. "NaN"
signifie "Pas un numéro". Si votre système d'exploitation écrit « U » ou « UNKN » ou quelque chose de similaire, c'est
d'accord. Si quelque chose d'autre ne va pas, cela sera probablement dû à une erreur que vous avez commise (en supposant
que mon tutoriel est correct bien sûr :-). Dans ce cas : supprimez la base de données et essayez
nouveau.
La signification de la sortie ci-dessus deviendra claire ci-dessous.
Heure à engendrent quelques graphique
Essayez la commande suivante :
rrdtool graphique speed.png \
--début 920804400 --fin 920808000 \
DEF:mavitesse=test.rrd:vitesse:AVERAGE \
LIGNE2 :mavitesse#FF0000
Cela créera speed.png qui commence à 12h00 et se termine à 13h00. il y a une définition
d'une variable appelée myspeed, en utilisant les données de RRA "speed" hors de la base de données "test.rrd".
La ligne tracée fait 2 pixels de haut et représente la variable myspeed. La couleur est rouge
(spécifié par sa représentation rgb, voir ci-dessous).
Vous remarquerez que le début du graphique n'est pas à 12h00 mais à 12h05. Ceci est dû au fait
nous n'avons pas suffisamment de données pour donner la moyenne avant cette date. Cela ne se produira que lorsque
vous manquez quelques échantillons, cela n'arrivera pas beaucoup, espérons-le.
Si cela a fonctionné : félicitations ! Sinon, vérifiez ce qui s'est mal passé.
Les couleurs sont constituées de rouge, vert et bleu. Pour chacun des composants, vous spécifiez
combien utiliser en hexadécimal où 00 signifie non inclus et FF signifie entièrement inclus.
La "couleur" blanche est un mélange de rouge, vert et bleu : FFFFFF La "couleur" noire est tout
couleurs désactivées : 000000
rouge #FF0000
vert #00FF00
bleu #0000FF
magenta #FF00FF (mélangé de rouge et de bleu)
gris #555555 (un tiers de tous les composants)
De plus, vous pouvez (avec un RRDtool récent) ajouter un canal alpha (transparence). Les
la valeur par défaut sera « FF », ce qui signifie non transparent.
Le PNG que vous venez de créer peut être affiché à l'aide de votre visionneuse d'images préférée. Navigateurs Web
affichera le PNG via l'URL "file:///the/path/to/speed.png"
Graphiques avec quelques math
En regardant l'image, vous remarquez que l'axe horizontal est étiqueté 12:10, 12:20,
12h30, 12h40 et 12h50. Parfois, une étiquette ne convient pas (12h00 et 13h00 seraient probablement
candidats) afin qu'ils soient ignorés.
L'axe vertical affiche la plage que nous avons saisie. Nous avons fourni des kilomètres et une fois divisés
par 300 secondes, nous obtenons de très petits nombres. Pour être exact, la première valeur était de 12
(12357-12345) et divisé par 300 cela fait 0.04, qui est affiché par RRDtool comme "40 m"
signifiant "40/1000". Le "m" (milli) n'a rien à voir avec les mètres (aussi m), les kilomètres ou
millimètres ! RRDtool ne connaît pas les unités physiques de nos données, il fonctionne simplement avec
nombres sans dimension.
Si nous avions mesuré nos distances en mètres, cela aurait été (12357000-12345000)/300 =
12000 / 300 = 40.
Comme la plupart des gens ont une meilleure idée des nombres dans cette plage, nous allons corriger cela. Nous pourrions
recréer notre base de données et stocker les données correctes, mais il y a un meilleur moyen : nous faisons quelques
calculs lors de la création du fichier png !
rrdtool graphique speed2.png \
--début 920804400 --fin 920808000 \
--étiquette-verticale m/s \
DEF:mavitesse=test.rrd:vitesse:AVERAGE \
CDEF:realspeed=mavitesse,1000,\* \
LIGNE2 : vitesse réelle#FF0000
Remarque : Je dois échapper à l'opérateur de multiplication * avec une barre oblique inverse. Si je ne le fais pas, le
le système d'exploitation peut l'interpréter et l'utiliser pour l'expansion du nom de fichier. Vous pouvez également placer
la ligne entre guillemets comme ceci :
"CDEF:realspeed=mavitesse,1000,*" \
Cela se résume à : c'est RRDtool qui devrait voir *, pas votre shell. Et c'est ta coquille
interprétant \, pas RRDtool. Vous devrez peut-être ajuster les exemples en conséquence s'il vous arrive de
utiliser un système d'exploitation ou un shell qui se comporte différemment.
Après avoir visionné ce PNG, vous remarquez que le "m" (milli) a disparu. C'est ce que le
résultat correct serait. De plus, une étiquette a été ajoutée à l'image. A part les choses
mentionné ci-dessus, le PNG devrait avoir le même aspect.
Les calculs sont précisés dans la partie CDEF ci-dessus et sont en Notation Polonaise Inverse
(« RPN »). Ce que nous avons demandé à RRDtool de faire est : "prendre la source de données myspeed et le nombre
1000 ; multipliez-les". Ne vous embêtez pas avec RPN pour le moment, cela sera expliqué plus tard dans plus
détail. En outre, vous voudrez peut-être lire mon didacticiel sur les CDEF et le didacticiel de Steve Rader sur RPN.
Mais terminez d'abord ce tutoriel.
Attendez! Si on peut multiplier les valeurs par 1000, il devrait aussi être possible d'afficher
kilomètres par heure à partir des mêmes données !
Pour modifier une valeur mesurée en mètres par seconde :
Calculer les mètres par heure : valeur * 3600
Calculer les kilomètres par heure : valeur / 1000
Ensemble, cela fait : valeur * (3600/1000) ou valeur * 3.6
Dans notre exemple de base de données, nous avons fait une erreur et nous devons compenser cela en
en multipliant par 1000. En appliquant cette correction :
valeur * 3.6 * 1000 == valeur * 3600
Créons maintenant ce PNG et ajoutons un peu plus de magie ...
rrdtool graphique speed3.png \
--début 920804400 --fin 920808000 \
--étiquette-verticale km/h \
DEF:mavitesse=test.rrd:vitesse:AVERAGE \
"CDEF:kmh=mavitesse,3600,*" \
CDEF:rapide=kmh,100,GT,kmh,0,SI \
CDEF:bon=kmh,100,GT,0,kmh,SI \
HRULE : 100#0000FF : "Maximum autorisé" \
AREA:good#00FF00:"Bonne vitesse" \
AREA:fast#FF0000:"Trop rapide"
Remarque : nous utilisons ici un autre moyen pour échapper à l'opérateur * en enfermant la chaîne entière dans
double citation.
Ce graphique est bien meilleur. La vitesse est indiquée en km/h et il y a même une ligne supplémentaire avec
la vitesse maximale autorisée (sur la route sur laquelle je me déplace). J'ai aussi changé les couleurs utilisées pour
vitesse d'affichage et l'a changé d'une ligne en une zone.
Les calculs sont maintenant plus complexes. Pour les mesures de vitesse dans la limite de vitesse, ils
sont:
Vérifiez si kmh est supérieur à 100 ( kmh,100 ) GT
Si oui, retournez 0, sinon kmh ((( kmh,100 ) GT ), 0, kmh) SI
Pour les valeurs supérieures à la limite de vitesse :
Vérifiez si kmh est supérieur à 100 ( kmh,100 ) GT
Si oui, retourne kmh, sinon retourne 0 ((( kmh,100) GT ), kmh, 0) SI
Graphiques la magie
J'aime croire qu'il n'y a pratiquement aucune limite à la façon dont le graphique RRDtool peut manipuler les données.
Je ne vais pas expliquer comment cela fonctionne, mais regardez le PNG suivant :
rrdtool graphique speed4.png \
--début 920804400 --fin 920808000 \
--étiquette-verticale km/h \
DEF:mavitesse=test.rrd:vitesse:AVERAGE \
CDEF:nonans=mavitesse,UN,0,mavitesse,SI \
CDEF:kmh=nonans,3600,* \
CDEF:rapide=kmh,100,GT,100,0,SI \
CDEF:plus=kmh,100,GT,kmh,100,-,0,IF \
CDEF:bon=kmh,100,GT,0,kmh,SI \
HRULE : 100#0000FF : "Maximum autorisé" \
AREA:good#00FF00:"Bonne vitesse" \
AREA:fast#550000:"Trop rapide" \
STACK:over#FF0000:"Sur vitesse"
Rappelez-vous la note au début? J'ai dû supprimer des données inconnues de cet exemple. Les
Le CDEF 'nonans' est nouveau, et la 6ème ligne (qui était la 5ème ligne) lisait
'CDEF:kmh=mavitesse,3600,*'
Créons une page HTML rapide et sale pour afficher les trois PNG :
La vitesse
Nommez le fichier "speed.html" ou similaire, et regardez-le dans votre navigateur Web.
Il ne vous reste plus qu'à mesurer régulièrement les valeurs et mettre à jour la base de données. Lorsque vous
souhaitez afficher les données, recréez les fichiers PNG et assurez-vous de les actualiser dans votre navigateur.
(Remarque : il se peut que le simple fait de cliquer sur recharger ne suffise pas, en particulier lorsque des proxys sont impliqués. Essayez
shift-reload ou ctrl-F5).
Mises à jour in Réalité
Nous avons déjà utilisé la commande "update" : elle prenait un ou plusieurs paramètres sous forme de
" : ". Vous serez heureux de savoir que vous pouvez spécifier l'heure actuelle en remplissant
dans un "N" comme le temps. Ou vous pouvez utiliser la fonction "time" en Perl (l'exemple le plus court
dans ce tutoriel):
perl -e 'heure d'impression, "\n" '
Comment exécuter un programme à intervalles réguliers est spécifique au système d'exploitation. Mais voici un exemple en pseudo
code:
- Récupérer la valeur et la mettre dans la variable "$speed"
- vitesse de mise à jour de rrdtool.rrd N:$speed
(n'essayez pas cela avec notre base de données de test, nous l'utiliserons dans d'autres exemples)
C'est tout. Exécutez le script ci-dessus toutes les cinq minutes. Lorsque vous avez besoin de savoir ce que
graphiques ressemblent, exécutez les exemples ci-dessus. Vous pouvez également les mettre dans un script. Après
exécutant ce script, affichez la page index.html que nous avons créée ci-dessus.
Certain gentils on SNMP
Je peux imaginer très peu de gens qui pourront obtenir des données réelles de leur voiture tous les cinq
minutes. Toutes les autres personnes devront se contenter d'un autre type de compteur. Vous pourriez
mesurer le nombre de pages imprimées par une imprimante, par exemple, les tasses de café faites par
la machine à café, un appareil qui compte l'électricité consommée, peu importe. Toute incrémentation
compteur peut être surveillé et représenté graphiquement en utilisant les choses que vous avez apprises jusqu'à présent. Plus tard, nous allons
également être en mesure de surveiller d'autres types de valeurs comme la température.
De nombreuses personnes intéressées par RRDtool utiliseront le compteur qui garde une trace des octets (octets)
transféré par un périphérique réseau. Faisons donc juste cela ensuite. Nous commencerons par un
description de la façon de collecter des données.
Certaines personnes feront remarquer qu'il existe des outils qui peuvent faire cette collecte de données pour
tu. Ils ont raison! Cependant, je pense qu'il est important que vous compreniez qu'ils ne sont pas
nécessaire. Lorsque vous devez déterminer pourquoi les choses ont mal tourné, vous devez savoir comment elles
.
Un outil utilisé dans l'exemple a été évoqué très brièvement au début de ce
document, il s'appelle SNMP. C'est une façon de communiquer avec les équipements en réseau. L'outil que j'utilise
ci-dessous s'appelle "snmpget" et voici comment cela fonctionne :
OID du mot de passe de l'appareil snmpget
or
snmpget -v[version] -c[mot de passe] OID de périphérique
Pour appareil, vous remplacez le nom ou l'adresse IP de votre appareil. Pour mot de passe vous
utilisez la "community read string" comme on l'appelle dans le monde SNMP. Pour certains appareils, le
la valeur par défaut de "public" peut fonctionner, mais cela peut être désactivé, modifié ou protégé pour
raisons de confidentialité et de sécurité. Lisez la documentation fournie avec votre appareil ou
.
Ensuite, il y a ce paramètre, appelé OID, qui signifie "identifiant d'objet".
Lorsque vous commencez à vous renseigner sur SNMP, cela semble très déroutant. Ce n'est pas si difficile
lorsque vous regardez la base d'informations de gestion (« MIB »). C'est un arbre à l'envers qui
décrit les données, avec un seul nœud comme racine et à partir de là un certain nombre de branches. Ces
les branches finissent dans un autre nœud, elles se ramifient, etc. Toutes les branches ont un nom et
ils forment le chemin que nous suivons jusqu'en bas. Les branches que nous suivons sont
nommé : iso, org, dod, internet, mgmt et mib-2. Ces noms peuvent également être écrits comme
nombres et sont 1 3 6 1 2 1.
iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)
Il y a beaucoup de confusion au sujet du point de départ utilisé par certains programmes. Il n'y a pas*
point de départ dans un OID. Cependant, certains programmes peuvent utiliser la partie ci-dessus des OID comme
défaut. Pour indiquer la différence entre les OID abrégés et les OID complets, ils ont besoin d'un
point de départ lorsque vous spécifiez l'OID complet. Souvent, ces programmes omettent le
partie par défaut lors du retour des données. Pour aggraver les choses, ils ont plusieurs
préfixes par défaut...
Ok, continuons au début de notre OID : nous avions 1.3.6.1.2.1 A partir de là, nous sommes
particulièrement intéressé par la branche "interfaces" qui a le numéro 2 (par exemple, 1.3.6.1.2.1.2
ou 1.3.6.1.2.1.interfaces).
Tout d'abord, nous devons obtenir un programme SNMP. Regardez d'abord s'il existe un package pré-compilé
disponible pour votre système d'exploitation. C'est la méthode préférée. Sinon, vous devrez obtenir le
sources vous-même et compilez-les. Internet regorge de sources, de programmes, etc.
informations en utilisant un moteur de recherche ou ce que vous préférez.
Supposons que vous ayez le programme. Essayez d'abord de collecter des données disponibles sur la plupart des
systèmes. N'oubliez pas : il y a un nom court pour la partie de l'arbre qui nous intéresse le plus
dans le monde dans lequel nous vivons !
Je vais donner un exemple qui peut être utilisé sur Fedora Core 3. Si cela ne fonctionne pas pour vous,
parcourez le manuel de snmp et adaptez l'exemple pour le faire fonctionner.
snmpget -v2c -c public monrouteur system.sysDescr.0
L'appareil doit répondre avec une description de lui-même, peut-être vide. Jusqu'à ce que tu aies
une réponse valide d'un appareil, peut-être en utilisant un autre "mot de passe", ou un autre appareil,
il ne sert à rien de continuer.
snmpget -v2c -c public myrouter interfaces.ifNumber.0
J'espère que vous obtenez un nombre en conséquence, le nombre d'interfaces. Si oui, vous pouvez continuer
et essayez un autre programme appelé "snmpwalk".
snmpwalk -v2c -c public myrouter interfaces.ifTable.ifEntry.ifDescr
S'il revient avec une liste d'interfaces, vous y êtes presque. Voici un exemple :
[utilisateur@hôte /home/alex]$ snmpwalk -v2c -c public Cisco 2.2.1.2
interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0 : canal B 1"
interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0 : canal B 2"
interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex : 42 52 49 30
interfaces.ifTable.ifEntry.ifDescr.4 = "Ethernet0"
interfaces.ifTable.ifEntry.ifDescr.5 = "Loopback0"
Sur cet équipement Cisco, je souhaite surveiller l'interface "Ethernet0" et depuis le
au-dessus de la sortie, je vois que c'est le numéro quatre. J'essaie:
[user@host /home/alex]$ snmpget -v2c -c public Cisco 2.2.1.10.4 2.2.1.16.4
interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519
Alors maintenant, j'ai deux OID à surveiller et ils sont (en entier, cette fois) :
1.3.6.1.2.1.2.2.1.10
et
1.3.6.1.2.1.2.2.1.16
les deux avec un numéro d'interface de 4.
Ne vous y trompez pas, ce n'était pas mon premier essai. Moi aussi j'ai mis du temps à comprendre
que signifient tous ces chiffres. Cela aide beaucoup quand ils sont traduits en descriptifs
text... Au moins, quand les gens parlent de MIB et d'OID, vous savez de quoi il s'agit
À propos. N'oubliez pas le numéro d'interface (0 s'il ne dépend pas de l'interface) et essayez
snmpwalk si vous n'obtenez pas de réponse de snmpget.
Si vous comprenez la section ci-dessus et obtenez les numéros de votre appareil, continuez avec
ce tutoriel. Sinon, revenez en arrière et relisez cette partie.
A Real Monde Exemple
Que la fête commence. Tout d'abord, créez une nouvelle base de données. Il contient les données de deux compteurs,
appelé entrée et sortie. Les données sont mises dans des archives qui en font la moyenne. Ils prennent 1, 6, 24
ou 288 échantillons à la fois. Ils entrent également dans des archives qui en conservent le maximum. Cette
sera expliqué plus tard. Le temps entre les échantillons est de 300 secondes, un bon départ
point, ce qui équivaut à cinq minutes.
1 échantillon "moyen" reste 1 période de 5 minutes
6 échantillons moyennés deviennent une moyenne sur 30 minutes
24 échantillons moyennés deviennent une moyenne sur 2 heures
288 échantillons moyennés deviennent une moyenne sur 1 jour
Essayons d'être compatible avec MRTG qui stocke environ la quantité de données suivante :
600 échantillons de 5 minutes : 2 jours et 2 heures
600 échantillons de 30 minutes : 12.5 jours
600 échantillons de 2 heures : 50 jours
732 échantillons 1 jour : 732 jours
Ces plages sont ajoutées, de sorte que la quantité totale de données stockées dans la base de données est
environ 797 jours. RRDtool stocke les données différemment, il ne démarre pas le "hebdomadaire"
archive où l'archive "quotidienne" s'est arrêtée. Pour les deux archives, les données les plus récentes seront
proche de « maintenant » et nous devrons donc conserver plus de données que MRTG !
Nous aurons besoin:
600 échantillons de 5 minutes (2 jours et 2 heures)
700 échantillons de 30 minutes (2 jours et 2 heures, plus 12.5 jours)
775 échantillons de 2 heures (au-dessus de + 50 jours)
797 échantillons de 1 jour (au-dessus de + 732 jours, arrondi à 797)
rrdtool crée monrouteur.rrd \
DS:entrée:COUNTER:600:U:U \
DS:sortie:COUNTER:600:U:U \
RRA:MOYEN:0.5:1:600 \
RRA:MOYEN:0.5:6:700 \
RRA:MOYEN:0.5:24:775 \
RRA:MOYEN:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797
La prochaine chose à faire est de collecter des données et de les stocker. Voici un exemple. Il est écrit
partiellement en pseudo code, il va falloir savoir quoi faire exactement sur votre OS pour faire
ça marche.
alors que ce n'est pas la fin de l'univers
do
obtenir le résultat de
communauté du routeur snmpget 2.2.1.10.4
en variable $in
obtenir le résultat de
communauté du routeur snmpget 2.2.1.16.4
dans la variable $out
rrdtool met à jour monrouteur.rrd N:$in:$out
attendre 5 minutes
fait
Ensuite, après avoir collecté des données pendant une journée, essayez de créer une image en utilisant :
rrdtool graphique myrouter-day.png --start -86400 \
DEF:inoctets=monrouteur.rrd:input:AVERAGE \
DEF:outoctets=monrouteur.rrd:output:AVERAGE \
AREA:inoctets#00FF00:"En trafic" \
LINE1:outoctets#0000FF:"Trafic sortant"
Cela devrait produire une image avec une journée de trafic. Un jour c'est 24 heures sur 60
minutes de 60 secondes : 24*60*60=86400, nous commençons maintenant à moins 86400 secondes. Nous définissons
(avec DEFs) inoctets et outoctets comme valeurs moyennes de la base de données myrouter.rrd
et tracez une zone pour le trafic "d'entrée" et une ligne pour le trafic "de sortie".
Affichez l'image et continuez à enregistrer les données pendant quelques jours de plus. Si vous le souhaitez, vous pouvez essayer le
exemples de la base de données de test et voyez si vous pouvez obtenir diverses options et calculs pour
.
Suggestion : Affichage en octets par seconde et en bits par seconde. Faire les graphiques Ethernet
passer au rouge s'ils dépassent quatre mégabits par seconde.
Consolidation Les fonctions
Il y a quelques paragraphes, j'évoquais la possibilité de conserver les valeurs maximales au lieu de
les valeurs moyennes. Allons-y un peu plus.
Rappelez-vous toutes les choses sur la vitesse de la voiture. Supposons que nous ayons roulé à 144 km/h pendant 5
minutes, puis ont été arrêtés par la police pendant 25 minutes. A la fin de la conférence, nous
prendrait notre ordinateur portable et créerait et afficherait l'image prise à partir de la base de données. Si nous regardons
le deuxième RRA que nous avons créé, nous aurions la moyenne de 6 échantillons. Les échantillons
mesuré serait 144+0+0+0+0+0=144, divisé par 30 minutes, corrigé de l'erreur par
1000, traduit en km/h, avec un résultat de 24 km/h. J'aurais quand même un ticket mais pas
pour excès de vitesse plus :)
Évidemment, dans ce cas, il ne faut pas regarder les moyennes. Dans certains cas, ils sont pratiques.
Si vous voulez savoir combien de km vous avez parcourus, l'image moyenne serait la bonne
un à regarder. Par contre, pour la vitesse à laquelle nous avons voyagé, les nombres maximum
vu est beaucoup plus intéressant. Plus tard, nous verrons plus de types.
Il en est de même pour les données. Si vous voulez connaître le montant, regardez les moyennes. Si tu veux
pour connaître le taux, regardez au maximum. Au fil du temps, ils s'éloigneront de plus en plus. Dans
la dernière base de données que nous avons créée, il y a deux archives qui conservent des données par jour. Les
l'archive qui conserve les moyennes affichera des nombres faibles, l'archive qui affiche les maxima aura
nombres plus élevés.
Pour ma voiture, cela se traduirait par des moyennes par jour de 96/24 = 4 km/h (car je voyage environ 94
kilomètres par jour) pendant les jours ouvrables, et des maxima de 120 km/h (ma vitesse de pointe que j'ai
atteindre tous les jours).
Grande différence. Ne regardez pas le deuxième graphique pour estimer les distances que je parcoure
et ne regarde pas le premier graphique pour estimer ma vitesse. Cela fonctionnera si les échantillons sont
rapprochés, comme ils le sont en cinq minutes, mais pas si vous faites la moyenne.
Certains jours, je pars pour une longue balade. Si je traverse l'Europe et voyage pendant 12 heures, le
premier graphique s'élèvera à environ 60 km/h. Le second affichera 180 km/h. Cela signifie que
J'ai parcouru une distance de 60 km/h fois 24 h = 1440 km. Je l'ai fait avec une vitesse plus élevée et
un maximum autour de 180 km/h. Cependant, cela ne signifie probablement pas que j'ai voyagé pendant 8 heures
à une vitesse constante de 180 km/h !
C'est un exemple concret : suivre le courant à travers l'Allemagne (vite !) et s'arrêter quelques fois pour
gaz et café. Conduisez lentement à travers l'Autriche et les Pays-Bas. Soyez prudent dans le
montagnes et villages. Si vous regardez les graphiques créés à partir des cinq minutes
moyennes, vous obtiendrez une image totalement différente. Vous verriez les mêmes valeurs sur le
graphiques de moyenne et de maximum (à condition que je mesure toutes les 300 secondes). Vous seriez en mesure de
voir quand je me suis arrêté, quand j'étais en vitesse supérieure, quand je conduisais sur des autoroutes rapides, etc.
la granularité des données est beaucoup plus élevée, vous pouvez donc en voir plus. Cependant, cela prend 12
échantillons par heure, ou 288 valeurs par jour, ce serait donc beaucoup de données sur une période plus longue
de temps. Par conséquent, nous en faisons la moyenne, éventuellement à une valeur par jour. A partir de cette valeur, nous
ne peut pas voir beaucoup de détails, bien sûr.
Assurez-vous de bien comprendre les derniers paragraphes. Il n'y a pas de valeur dans seulement une ligne et un
quelques axes, vous devez savoir ce qu'ils signifient et interpréter les données de manière appropriée.
Ceci est vrai pour toutes les données.
La plus grosse erreur que vous puissiez commettre est d'utiliser les données collectées pour quelque chose qui n'est pas
convient à. Vous seriez mieux si vous n'aviez pas du tout le graphique.
Discutons évaluation est ce que nous faisons vous maintenant devrait savoir
Vous savez créer une base de données et pouvez y mettre des données. Vous pouvez sortir les chiffres
encore une fois en créant une image, faites des calculs sur les données de la base de données et visualisez le résultat
au lieu des données brutes. Vous connaissez la différence entre les moyennes et les maximums, et
quand utiliser lequel (ou au moins vous devriez avoir une idée).
RRDtool peut faire plus que ce que nous avons appris jusqu'à présent. Avant de continuer avec le reste
de cette doc, je vous recommande de relire depuis le début et d'essayer quelques modifications sur le
exemples. Assurez-vous de bien tout comprendre. Cela en vaudra la peine et aidera
vous non seulement avec le reste de ce tutoriel, mais aussi dans votre surveillance quotidienne
après avoir lu cette introduction.
Sauvegarde de La Source Types
D'accord, tu as envie de continuer. Bon retour et préparez-vous pour une vitesse accrue dans
les exemples et explications.
Vous savez que pour visualiser un compteur dans le temps, vous devez prendre deux nombres et
diviser la différence entre eux entre le temps écoulé. C'est logique pour les exemples
Je t'ai donné mais il y a d'autres possibilités. Par exemple, je suis en mesure de récupérer le
température de mon routeur à trois endroits, à savoir l'entrée, le point chaud et
l'échappement. Ces valeurs ne sont pas des compteurs. Si je prends la différence des deux échantillons
et divisez cela par 300 secondes, je demanderais le changement de température par seconde.
Espérons que ce soit zéro ! Sinon, la salle informatique est probablement en feu :)
Alors, que pouvons-nous faire? Nous pouvons dire à RRDtool de stocker les valeurs que nous mesurons directement car elles
sont (ce n'est pas tout à fait vrai mais assez proche). Les graphiques que nous faisons auront l'air beaucoup
mieux, ils montreront une valeur assez constante. Je sais quand le routeur est occupé (ça marche
-> il consomme plus d'électricité -> il génère plus de chaleur -> la température monte). je connais
lorsque les portes sont laissées ouvertes (la pièce est climatisée) -> l'air chaud du reste
du bâtiment se déverse dans la salle informatique -> la température d'entrée augmente). Etc. Le
type de données que nous utilisons lors de la création de la base de données avant était compteur, nous avons maintenant un autre
type de données et donc un nom différent pour celui-ci. Il s'appelle JAUGE. Il y a plus de telles données
les types:
- COUNTER nous connaissons déjà celui-ci
- JAUGE nous venons d'apprendre celui-ci
- DÉRIVER
- ABSOLU
Les deux types supplémentaires sont DERIVE et ABSOLUTE. Absolute peut être utilisé comme compteur avec
une différence : RRDtool suppose que le compteur est réinitialisé lorsqu'il est lu. C'est-à-dire : son delta est
connu sans calcul par RRDtool alors que RRDtool doit le calculer pour le compteur
taper. Exemple : notre premier exemple (12345, 12357, 12363, 12363) indiquerait : inconnu, 12, 6,
0. Le reste des calculs reste le même. L'autre, dériver, est comme un compteur.
Contrairement au compteur, il peut également diminuer pour avoir un delta négatif. Encore une fois, le reste de
les calculs restent les mêmes.
Essayons-les tous :
rrdtool crée tout.rrd --start 978300900 \
DS:a:COMPTEUR:600:U:U \
DS:b:JAUGE:600:U:U \
DS:c:DERIVE:600:U:U \
DS:d:ABSOLU:600:U:U \
RRA:MOYEN:0.5:1:10
rrdtool mettre à jour tout.rrd \
978301200:300:1:600:300 \
978301500:600:3:1200:600 \
978301800:900:5:1800:900 \
978302100:1200:3:2400:1200 \
978302400:1500:1:2400:1500 \
978302700:1800:2:1800:1800 \
978303000:2100:4:0:2100 \
978303300:2400:6:600:2400 \
978303600:2700:4:600:2700 \
978303900:3000:2:1200:3000
rrdtool graphique all1.png -s 978300600 -e 978304200 -h 400 \
DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:"Ligne A" \
DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:"Ligne B" \
DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Ligne C" \
DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:"Ligne D"
Outil RRD sous le Microscope
· La ligne A est de type COUNTER, elle doit donc s'incrémenter en continu et RRDtool doit calculer
les différences. De plus, RRDtool doit diviser la différence par le temps
caduc. Cela devrait se terminer par une ligne droite à 1 (les deltas sont 300, le temps est
300).
· La ligne B est de type GAUGE. Ce sont des valeurs « réelles », elles doivent donc correspondre à ce que nous mettons : un
une sorte de vague.
· La ligne C est de type DERIVE. Ce devrait être un compteur qui peut diminuer. Il le fait entre
2400 et 0, avec 1800 intermédiaires.
· La ligne D est de type ABSOLUTE. C'est comme le compteur mais ça marche sur des valeurs sans
calcul de la différence. Les chiffres sont les mêmes et comme vous pouvez le voir (espérons-le) ceci
a un résultat différent.
Cela se traduit par les valeurs suivantes, commençant à 23:10 et se terminant à 00:10 le prochain
jour (où "u" signifie inconnu/non tracé) :
- Ligne A : uu 1 1 1 1 1 1 1 1 1 u
- Ligne B : u 1 3 5 3 1 2 4 6 4 2 u
- Ligne C : uu 2 2 2 0 -2 -6 2 0 2 u
- Ligne D : u 1 2 3 4 5 6 7 8 9 10 u
Si votre PNG montre tout cela, vous savez que vous avez entré les données correctement, le RRDtool
l'exécutable fonctionne correctement, votre visionneuse ne vous trompe pas et vous êtes entré avec succès
l'an 2000 :)
Vous pouvez essayer le même exemple quatre fois, chaque fois avec une seule des lignes.
Reprenons les données :
· Ligne A : 300,600,900 300 XNUMX et ainsi de suite. Le compteur delta est une constante XNUMX et le temps aussi
delta. Un nombre divisé par lui-même est toujours 1 (sauf lors de la division par zéro qui est
indéfini/illégal).
Pourquoi le premier point est-il inconnu ? Nous savons ce que nous mettons dans la base de données,
droit? Vrai, mais nous n'avions pas de valeur pour calculer le delta, donc nous ne savons pas
où nous avons commencé. Il serait faux de supposer que nous avons commencé à zéro alors nous ne le faisons pas !
· Ligne B : Il n'y a rien à calculer. Les chiffres sont comme ils sont.
· Ligne C : Encore une fois, la valeur de départ est inconnue. La même histoire est vraie que pour la ligne A. Dans
dans ce cas, les deltas ne sont pas constants, donc la ligne ne l'est pas non plus. Si nous mettions
les mêmes nombres dans la base de données que pour la ligne A, nous aurions eu le même
ligne. Contrairement au type compteur, ce type peut diminuer et j'espère vous montrer plus tard pourquoi
cela fait une différence.
· Ligne D : Ici, l'appareil calcule les deltas. Par conséquent, nous connaissons le premier delta et
c'est tracé. Nous avons eu la même entrée qu'avec la ligne A, mais la signification de cette entrée est
différent et donc la ligne est différente. Dans ce cas les deltas augmentent à chaque fois
avec 300. Le delta de temps reste constant à 300 et donc la division des deux
donne des valeurs croissantes.
Counter Wraps
Il y a quelques autres bases à montrer. Certaines options importantes doivent encore être couvertes et nous
Je n'ai pas encore regardé les emballages de comptoir. D'abord le contre-enroulement : Dans notre voiture, nous remarquons que le
compteur affiche 999987. Nous parcourons 20 km et le compteur devrait aller à 1000007. Malheureusement,
il n'y a que six chiffres sur notre compteur donc il montre vraiment 000007. Si nous pouvions tracer cela
sur un type DERIVE, cela signifierait que le compteur a été reculé de 999980 km. Ce n'était pas le cas, et
il doit y avoir une certaine protection pour cela. Cette protection n'est disponible que pour le type
COUNTER qui devrait être utilisé pour ce genre de compteur de toute façon. Comment ça marche? Taper
compteur ne devrait jamais diminuer et donc RRDtool doit supposer qu'il est enveloppé s'il le fait
diminuer! Si le delta est négatif, cela peut être compensé en ajoutant le maximum
valeur du compteur + 1. Pour notre voiture ce serait :
Delta = 7 - 999987 = -999980 (au lieu de 1000007-999987=20)
Delta réel = -999980 + 999999 + 1 = 20
Au moment de la rédaction de ce document, RRDtool connaît des compteurs de 32 bits ou
64 bits de taille. Ces compteurs peuvent gérer les différentes valeurs suivantes :
- 32 bits : 0 .. 4294967295
- 64 bits : 0 .. 18446744073709551615
Si ces nombres vous paraissent étranges, vous pouvez les visualiser sous leur forme hexadécimale :
- 32 bits : 0 ..FFFFFFFF
- 64 bits : 0 .. FFFFFFFFFFFFFFFF
RRDtool gère les deux compteurs de la même manière. Si un débordement se produit et que le delta serait
négatif, RRDtool ajoute d'abord le maximum d'un petit compteur + 1 au delta. Si le delta
est toujours négatif, ce devait être le grand comptoir qui s'est enroulé. Ajouter le maximum possible
valeur du grand compteur + 1 et soustraire la petite valeur ajoutée par erreur.
Il y a un risque à cela : supposons que le grand compteur soit enroulé tout en ajoutant un énorme delta, il
pourrait arriver, théoriquement, que l'ajout de la valeur la plus petite rende le delta positif.
Dans ce cas improbable, les résultats ne seraient pas corrects. L'augmentation devrait être presque aussi
élevé comme valeur de compteur maximale pour que cela se produise, il y a donc des chances que vous ayez
plusieurs autres problèmes également et ce problème particulier ne vaudrait même pas la peine
penser. Même si, j'ai inclus un exemple, afin que vous puissiez juger par vous-même.
La section suivante vous donne quelques exemples numériques de contre-enveloppes. Essayez de faire le
calculs vous-même ou croyez-moi si votre calculatrice ne peut pas gérer les nombres :)
Numéros de correction :
- 32 bits : (4294967295 + 1) = 4294967296
- 64 bits : (18446744073709551615 + 1)
-correction1 = 18446744069414584320
Avant: 4294967200
Augmentation: 100
Devrait devenir : 4294967300
Mais c'est vraiment : 4
Delta : -4294967196
Correction1 : -4294967196 + 4294967296 = 100
Avant: 18446744073709551000
Augmentation: 800
Devrait devenir : 18446744073709551800
Mais c'est vraiment : 184
Delta : -18446744073709550816
Correction1 : -18446744073709550816
+ 4294967296 = -18446744069414583520
Correction2 : -18446744069414583520
+ 18446744069414584320 = 800
Avant : 18446744073709551615 ( valeur maximale )
Augmentation : 18446744069414584320 (augmentation absurde, minimum pour
Devrait devenir: 36893488143124135935 cet exemple pour fonctionner)
Mais c'est vraiment : 18446744069414584319
Delta : -4294967296
Correction1 : -4294967296 + 4294967296 = 0
(pas négatif -> pas de correction2)
Avant : 18446744073709551615 ( valeur maximale )
Augmentation : 18446744069414584319 (une augmentation de moins)
Devrait devenir : 36893488143124135934
Mais c'est vraiment : 18446744069414584318
Delta : -4294967297
Correction1 : -4294967297 + 4294967296 = -1
Correction2 : -1 + 18446744069414584320 = 18446744069414584319
Comme vous pouvez le voir dans les deux derniers exemples, vous avez besoin de nombres étranges pour que RRDtool échoue
(à condition que ce soit sans bug bien sûr), donc cela ne devrait pas arriver. Cependant, SNMP ou autre
méthode que vous choisissez pour collecter les données, peut également signaler occasionnellement des chiffres erronés. Nous
ne peut pas empêcher toutes les erreurs, mais il y a certaines choses que nous pouvons faire. L'outil RRD "créer"
La commande prend deux paramètres spéciaux pour cela. Ils définissent le minimum et le maximum autorisés
valeurs. Jusqu'à présent, nous utilisions « U », signifiant « inconnu ». Si vous fournissez des valeurs pour l'un ou les deux
d'entre eux et si RRDtool reçoit des points de données qui sont en dehors de ces limites, il ignorera
ces valeurs. Pour un thermomètre en degrés Celsius, le minimum absolu est juste en dessous
-273. Pour mon routeur, je peux supposer que ce minimum est beaucoup plus élevé, donc je le définirais sur 10,
où comme température maximale je réglerais à 80. Plus haut et l'appareil serait éteint
d'ordre.
Pour la vitesse de ma voiture, je ne m'attendrais jamais à des chiffres négatifs et je ne m'attendrais pas non plus à
une vitesse supérieure à 230. Rien d'autre, et il doit y avoir eu une erreur. Se souvenir du
contraire n'est pas vrai, si les nombres passent ce contrôle, cela ne signifie pas qu'ils sont
correct. Jugez toujours le graphique avec une bonne dose de méfiance s'il vous semble étrange.
Sauvegarde de Rééchantillonnage
Une caractéristique importante de RRDtool n'a pas encore été expliquée : il est pratiquement impossible de
collecter des données et les alimenter dans RRDtool à des intervalles exacts. RRDtool interpole donc
les données, de sorte qu'elles sont stockées à des intervalles exacts. Si vous ne savez pas ce que cela signifie ou comment
ça marche, alors voici l'aide que vous cherchez:
Supposons qu'un compteur augmente d'exactement un pour chaque seconde. Vous voulez le mesurer en 300
intervalles de secondes. Vous devez récupérer des valeurs qui sont exactement 300 à part. Cependant, en raison de
diverses circonstances, vous avez quelques secondes de retard et l'intervalle est de 303. Le delta
également être 303 dans ce cas. Évidemment, RRDtool ne devrait pas mettre 303 dans la base de données et faire
vous pensez que le compteur a augmenté de 303 en 300 secondes. C'est là que RRDtool
interpole : il modifie la valeur 303 comme si elle avait été stockée plus tôt et il
être 300 en 300 secondes. La prochaine fois, vous êtes exactement au bon moment. Cela signifie que le
l'intervalle actuel est de 297 secondes et le compteur a également augmenté de 297. Encore une fois, RRDtool
interpole et stocke 300 comme il se doit.
dans le RRD en réalité
heure+000 : 0 delta="U" heure+000 : 0 delta="U"
temps+300 : 300 delta=300 temps+300 : 300 delta=300
temps+600 : 600 delta=300 temps+603 : 603 delta=303
temps+900 : 900 delta=300 temps+900 : 900 delta=297
Créons deux bases de données identiques. J'ai choisi la plage de temps 920805000 à 920805900 comme
cela va très bien avec les numéros d'exemple.
rrdtool crée seconds1.rrd \
--début 920804700 \
DS:secondes:COUNTER:600:U:U \
RRA:MOYEN:0.5:1:24
Faire une copie
pour Unix : cp seconds1.rrd seconds2.rrd
pour Dos : copiez seconds1.rrd seconds2.rrd
pour vms : comment pourrais-je savoir :)
Mettre quelques données
rrdtool mise à jour seconds1.rrd \
920805000:000 920805300:300 920805600:600 920805900:900
rrdtool mise à jour seconds2.rrd \
920805000:000 920805300:300 920805603:603 920805900:900
Créer une sortie
rrdtool graphique seconds1.png \
--début 920804700 --fin 920806200 \
--hauteur 200 \
--limite-supérieure 1.05 --limite-inférieure 0.95 --rigide \
DEF:secondes=secondes1.rrd:seconds:AVERAGE \
CDEF:inconnu=secondes,UN \
LIGNE2:secondes#0000FF \
ZONE : inconnue#FF0000
rrdtool graphique seconds2.png \
--début 920804700 --fin 920806200 \
--hauteur 200 \
--limite-supérieure 1.05 --limite-inférieure 0.95 --rigide \
DEF:secondes=secondes2.rrd:seconds:AVERAGE \
CDEF:inconnu=secondes,UN \
LIGNE2:secondes#0000FF \
ZONE : inconnue#FF0000
Affichez les deux images ensemble (ajoutez-les à votre fichier index.html) et comparez. Les deux graphiques
devrait afficher la même chose, bien que l'entrée soit différente.
EMBALLER
Il est maintenant temps de terminer ce tutoriel. Nous avons couvert toutes les bases pour que vous puissiez
travailler avec RRDtool et lire la documentation supplémentaire disponible. Il y a bien plus
à découvrir sur RRDtool et vous trouverez de plus en plus d'utilisations pour ce package. Vous pouvez
créez facilement des graphiques en utilisant uniquement les exemples fournis et en utilisant uniquement RRDtool. Vous pouvez également
utilisez l'un des frontaux disponibles pour RRDtool.
LISTE DE DIFFUSION
N'oubliez pas de vous inscrire à la liste de diffusion RRDtool. Même si vous ne répondez pas aux mails
qui viennent, cela aide à la fois vous et le reste des utilisateurs. Beaucoup de choses que je connais
sur MRTG (et donc sur RRDtool) que j'ai appris en lisant la liste sans
poster dessus. Je n'ai pas eu besoin de poser les questions de base car elles sont répondues dans la FAQ
(lisez-le !) et dans divers mails d'autres utilisateurs. Avec des milliers d'utilisateurs partout dans le
monde, il y aura toujours des gens qui poseront des questions auxquelles vous pourrez répondre parce que vous lisez
ceci et d'autres documents et ils ne l'ont pas fait.
Utilisez rrdtutorial en ligne en utilisant les services onworks.net