RRDToolBasis- und Hintergrundwissen
Simon MeggleWIRECARD Technologies AG
Nagios-Workshop 2010, Nürnberg
RRDTool Basis und Hintergrundwissen 2
● Grundlagen: Bestands- und Stromdaten● Unterscheidung von Kennzahlen
● Berechnung von Stromdaten
● Datenfluss in RRDTool● Datentypen
● Schritt 1: Transformierung zu Stromdaten
● Schritt 2: Normalisierung zu PDPs
● Schritt 3: Konsolidierung zu CDPs
● RRDTool lebt in der Vergangenheit!
Agenda
RRDTool Basis und Hintergrundwissen 3
Grundlagen: Bestands- und Stromdaten
Unterscheidung von Kennzahlen nach● Bestandsdaten
– Kontostand– Anzahl Bundesbürger– Kilometerzähler im Auto
RRDTool Basis und Hintergrundwissen 4
Grundlagen: Bestands- und Stromdaten
Unterscheidung von Kennzahlen nach● Bestandsdaten
– Kontostand– Anzahl Bundesbürger– Kilometerzähler im Auto
● Stromdaten (=Veränderungen von Bestandsdaten über einen Zeitraum)
– Geldbewegung pro Zeit● Einkommen (+)● Ausgaben (-)
– Demografische Entwicklung pro Zeit; Zahl der● Geburten (+)● Sterbefälle (-)● Zuwanderungen (+)● Abwanderungen (-)
– Gefahrene km pro Zeit (+)
RRDTool Basis und Hintergrundwissen 5
Grundlagen: Bestands- und Stromdaten
Nachteile:● Graph skaliert schlecht● „alles sieht gleich aus“
Wozu Stromgrößen erfassen?
Negativ-Beispiel für die Erfassung von Bestandsgrößen:
RRDTool Basis und Hintergrundwissen 6
Grundlagen: Bestands- und Stromdaten
Nachteile:● Graph skaliert schlecht● „alles sieht gleich aus“● Interpretation nur anhand der Deltas möglich
Wozu Stromgrößen erfassen?
Negativ-Beispiel für die Erfassung von Bestandsgrößen:
RRDTool Basis und Hintergrundwissen 7
Grundlagen: Bestands- und Stromdaten
Berechnung von Stromdaten
= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):
∆y
∆xt
RRDTool Basis und Hintergrundwissen 8
Grundlagen: Bestands- und Stromdaten
Berechnung von Stromdaten
∆y = 50
∆x = 10
= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):
Es seien:● ∆y=50 Bytes in● ∆x=10 Sekunden
übertragen worden.
t
RRDTool Basis und Hintergrundwissen 9
50 Bytes
Grundlagen: Bestands- und Stromdaten
Berechnung von Stromdaten
= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):
∆y = 50
∆x = 10
Es seien:● ∆y=50 Bytes in● ∆x=10 Sekunden
übertragen worden.
Unbekannt: Was geschah wirklich in ∆x?
… 2s nichts,...in 5s 50 Bytes (=10 B/s) ,… 3s nichts ?
t
RRDTool Basis und Hintergrundwissen 10
Grundlagen: Bestands- und Stromdaten
Berechnung von Stromdaten
50 Bytes
= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):
∆y = 50
∆x = 10
Es seien:● ∆y=50 Bytes in● ∆x=10 Sekunden
übertragen worden.
Unbekannt: Was geschah wirklich in ∆x?
… 5s nichts,...in 1s 50 Bytes (=50 B/s) ,… 4s nichts ?
t
RRDTool Basis und Hintergrundwissen 11
Grundlagen: Bestands- und Stromdaten
Berechnung von Stromdaten
50 B
ytes
Unbekannt: Was geschah wirklich?50 Bytes / 5s = 10 B/s ?50 Bytes / 1s = 50 B/s ?50 Bytes / 2,5s = 20 B/s ?
= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):
∆y = 50
∆x = 10
Es seien:● ∆y=50 Bytes in● ∆x=10 Sekunden
übertragen worden.
Unbekannt: Was geschah wirklich in ∆x?
… 1s nichts,...in 2,5s 50 Bytes (=20 B/s) ,… 6,5s nichts ?
t
RRDTool Basis und Hintergrundwissen 12
50 Bytes
Grundlagen: Bestands- und Stromdaten
Berechnung von Stromdaten
EGAL!
Fakt ist:50 Bytes in 10s übertragen!
Einzig berechenbare Bandbreite:50 Bytes/10s = 5 Bytes/s
Die Bandbreite 5 Bytes/s über 10s drückt die übertragene Datenmenge aus.
„Transformation“
= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):
∆y = 50
∆x = 10t
RRDTool Basis und Hintergrundwissen 13
Datenfluss in RRDTool
● DS (Datasources): Jede RRD besitzt ein oder mehrere DS; diese liefern die Datengrundlage für Primary Data Points (PDPs)
● ds-name: frei wählbarer Name der DS (1-19 Zeichen)● DST (DataSourceType):
● COUNTER● DERIVE ● ABSOLUTE● GAUGE● (COMPUTE: Verrechnung anderer DS, nicht in diesem Vortrag behandelt)
● heartbeat: maximaler Abstand zweier Updates mit Messwerten in Sek. (= „PDP-timeout“, wird hinter t=now „hinterhergezogen“)
● min/max: Werte außerhalb dieser Extrema werden als UNKNOWNgespeichert (= „Sanity-Check“, um z.b. „800°C“ zu vermeiden)
DS:ds-name:DST:heartbeat:min:max
Schritt 1: Transformation / Datentypen
RRDTool Basis und Hintergrundwissen 14
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
○/⬤: PNP: über Custom Templates pro Check justierbar (PNP 0.4 / 0.6)!
● DS (Datasources): Jede RRD besitzt ein oder mehrere DS; diese liefern die Datengrundlage für Primary Data Points (PDPs)
● ds-name: frei wählbarer Name der DS (1-19 Zeichen)● DST (DataSourceType):
● COUNTER● DERIVE ● ABSOLUTE● GAUGE● (COMPUTE: Verrechnung anderer DS, nicht in diesem Vortrag behandelt)
● heartbeat: maximaler Abstand zweier Updates mit Messwerten in Sek. (= „PDP-timeout“, wird hinter t=now „hinterhergezogen“)
● min/max: Werte außerhalb dieser Extrema werden als UNKNOWNgespeichert (= „Sanity-Check“, um z.b. „800°C“ zu vermeiden)
DS:ds-name:DST:heartbeat:min:max
RRDTool Basis und Hintergrundwissen 15
Datenfluss in RRDTool
Wert,timestamp
Transformation(DS)
Normalisierung(PDP)
Konsolidierung(CDP)
Data TypeCOUNTER
DERIVE
Data TypeABSOLUT
GAUGE
Data Type
RRA
RRDTool Basis und Hintergrundwissen 16
Datenfluss in RRDTool
COUNTER DERIVE ABSOLUTE GAUGE
Input
zunehmender Counter-Wert
wie COUNTER;zu-/abnehmend
wie COUNTER;zählt immer ab 0
Wert
gespeichert wird ∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t Wert wird
durchgereicht
Overflow-Check
BeispieleBytecounter, Wasseruhr, Kilometerzähler
Bidirektionale Pumpe
COUNTER mit vielen Overflows
Temperatur, Füllstand, Km/h, KWh
Stromdaten Bestandsdaten
Schritt 1: Transformation / Datentypen
RRDTool Basis und Hintergrundwissen 17
Datenfluss in RRDTool
COUNTER DERIVE ABSOLUTE GAUGE
Input
zunehmender Counter-Wert
wie COUNTER;zu-/abnehmend
wie COUNTER;zählt immer ab 0
Wert
gespeichert wird ∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t Wert wird
durchgereicht
Overflow-Check
BeispieleBytecounter, Wasseruhr, Kilometerzähler
Bidirektionale Pumpe
COUNTER mit vielen Overflows
Temperatur, Füllstand, Km/h, KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60120 1 1 2 120180 1 1 3 180300 2 2 5 30060 -- -4 1 60
Schritt 1: Transformation / Datentypen
Stromdaten Bestandsdaten
RRDTool Basis und Hintergrundwissen 18
Datenfluss in RRDTool
COUNTER DERIVE ABSOLUTE GAUGE
Input
zunehmender Counter-Wert
wie COUNTER;zu-/abnehmend
wie COUNTER;zählt immer ab 0
Wert
gespeichert wird ∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t Wert wird
durchgereicht
Overflow-Check
BeispieleBytecounter, Wasseruhr, Kilometerzähler
Bidirektionale Pumpe
COUNTER mit vielen Overflows
Temperatur, Füllstand, Km/h, KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
120 1 1 2 120180 1 1 3 180300 2 2 5 30060 -- -4 1 60
Schritt 1: Transformation / Datentypen
Stromdaten Bestandsdaten
wert(aktuell) !> wert(letzter)
RRDTool Basis und Hintergrundwissen 19
Datenfluss in RRDTool
COUNTER DERIVE ABSOLUTE GAUGE
Input
zunehmender Counter-Wert
wie COUNTER;zu-/abnehmend
wie COUNTER;zählt immer ab 0
Wert
gespeichert wird ∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t Wert wird
durchgereicht
Overflow-Check
BeispieleBytecounter, Wasseruhr, Kilometerzähler
Bidirektionale Pumpe
COUNTER mit vielen Overflows
Temperatur, Füllstand, Km/h, KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
120 1 1 2 120180 1 1 3 180300 2 2 5 30060 -- -4 1 60
Schritt 1: Transformation / Datentypen
Stromdaten Bestandsdaten
∆wert = -240 !
RRDTool Basis und Hintergrundwissen 20
Datenfluss in RRDTool
COUNTER DERIVE ABSOLUTE GAUGE
Input
zunehmender Counter-Wert
wie COUNTER;zu-/abnehmend
wie COUNTER;zählt immer ab 0
Wert
gespeichert wird ∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t Wert wird
durchgereicht
Overflow-Check
BeispieleBytecounter, Wasseruhr, Kilometerzähler
Bidirektionale Pumpe
COUNTER mit vielen Overflows
Temperatur, Füllstand, Km/h, KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
120 1 1 2 120180 1 1 3 180300 2 2 5 30060 -- -4 1 60
Schritt 1: Transformation / Datentypen
Stromdaten Bestandsdaten
wert = 300 !
RRDTool Basis und Hintergrundwissen 21
Datenfluss in RRDTool
COUNTER DERIVE ABSOLUTE GAUGE
Input
zunehmender Counter-Wert
wie COUNTER;zu-/abnehmend
wie COUNTER;zählt immer ab 0
Wert
gespeichert wird ∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t Wert wird
durchgereicht
Overflow-Check
BeispieleBytecounter, Wasseruhr, Kilometerzähler
Bidirektionale Pumpe
COUNTER mit vielen Overflows
Temperatur, Füllstand, Km/h, KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
120 1 1 2 120180 1 1 3 180300 2 2 5 30060 -- -4 1 60
Schritt 1: Transformation / Datentypen
Stromdaten Bestandsdaten
wert = 60 !
RRDTool Basis und Hintergrundwissen 22
Datenfluss in RRDTool
Wert,timestamp
Transformation(DS)
Normalisierung(PDP)
Konsolidierung(CDP)
Data TypeCOUNTER
DERIVE
Data TypeABSOLUT
GAUGE
Data Type
RRA
RRDTool Basis und Hintergrundwissen 23
1020
10
50
30
10
Datenfluss in RRDTool
Schritt 2: Normalisierung
Normalisierung = Ergebnisse mit unterschiedlicher Grundlage (hier: t) vergleichbar machen
t
RRDTool Basis und Hintergrundwissen 24
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP1 =
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
t
t
RRDTool Basis und Hintergrundwissen 25
Datenfluss in RRDTool
PDP1 = 45s*10B/s
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 26
Datenfluss in RRDTool
PDP1 = 45s*10B/s + 15s*20B/s
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 27
Datenfluss in RRDTool
PDP1 = 45s*10B/s + 15s*20B/s 60s
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 28
Datenfluss in RRDTool
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
PDP1 = 45s*10B/s + 15s*20B/s = 450B + 300B = 12,5 B/s 60s 60s
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 29
Datenfluss in RRDTool
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
PDP2 = 30s*20B/s + 30s*10B/s = 600B + 300B = 15 B/s 60s 60s
PDP2
60s
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 30
Datenfluss in RRDTool
PDP1
60s
10
20
10
30
40
50
10
20
10
30
40
PDP4 = 15s*50B/s + 45s*30B/s = 750B + 1350B = 35 B/s 60s 60s
PDP2
60s
PDP3
60s
PDP4
60s
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 31
Datenfluss in RRDTool
10
20
10
30
40
50
10
20
10
30
40
PDP5 = 45s*10B/s + 15s*0B/s = 450B = 7,5 B/s 60s 60s
60s
PDP5
60s
PDP4
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 32
Datenfluss in RRDTool
10
20
10
30
40
50
10
20
10
30
40
PDP 6 + 7= UNKNOWNPDP 8 = KNOWN, da mehr als die Hälfte des Intervalls bekannt sind
60s
PDP5
60s
PDP4 PDP6 PDP7 PDP8
Heartbeat = 120s
Schritt 2: Normalisierung zu PDPs = Primary Data Points
t
t
RRDTool Basis und Hintergrundwissen 33
Datenfluss in RRDTool
Wert,timestamp
Transformation(DS)
Normalisierung(PDP)
Konsolidierung(CDP)
Data TypeCOUNTER
DERIVE
Data TypeABSOLUT
GAUGE
Data Type
RRA
RRDTool Basis und Hintergrundwissen 34
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs
● RRA: Round-Robin-Archive speichern die Werte in Consolidated Data Points (CDPs) ( + Timestamp)
● steps: Anzahl der zu konsolidierenden PDPs● CF: Konsolidierungsfunktionen bestimmen, wie PDPs in CDPs
verrechnet werden:● AVERAGE: Mittelwert● MIN: Kleinster Wert● MAX: Höchster Wert● LAST: Letzter Wert
● xff (XfilesFactor): maximaler Anteil PDPs, die in der Berechnungeines CDP unknown sein dürfen; andernfalls CDP=unknown (0..0.99999999)
● rows: Anzahl der CDPs, die das RRA speichern soll
RRA:CF:xff:steps:rows
RRDTool Basis und Hintergrundwissen 35
Datenfluss in RRDTool
10
20
10
30
40
PDP1
10
20
10
30
40
PDP2 PDP3PDP1 PDP2 PDP3
CDP1
RRA:AVERAGE:0:3:360
Schritt 3: Konsolidierung zu CDPs
t
t
t
RRDTool Basis und Hintergrundwissen 36
Datenfluss in RRDTool
PDP1
10
20
10
30
40
PDP2 PDP3PDP1 PDP2 PDP3
RRA:AVERAGE:0:3:360
10
20
10
30
40
PDP1
10
20
10
30
40
PDP2 PDP3PDP1 PDP2 PDP3
CDP1
RRA:MAX:0:3:360
10
20
10
30
40
CDP1
Schritt 3: Konsolidierung zu CDPs
t
t
t t
t
t
RRDTool Basis und Hintergrundwissen 37
Datenfluss in RRDTool
PDP1
10
20
10
30
40
PDP2 PDP3PDP1 PDP2 PDP3
RRA:AVERAGE:0:3:360
PDP1
10
20
10
30
40
PDP2 PDP3PDP1 PDP2 PDP3
RRA:MAX:0:3:360
10
20
10
30
40
PDP1
10
20
10
30
40
PDP2 PDP3PDP1 PDP2 PDP3
CDP1
RRA:LAST:0:3:360
10
20
10
30
40
CDP1
10
20
10
30
40
CDP1
Schritt 3: Konsolidierung zu CDPs
tt
t
t t
t
tt
t
t
RRDTool Basis und Hintergrundwissen 38
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs
RRA:AVERAGE:0:1:400 # 6,6h (1 PDP á 60s * 400)
RRDTool Basis und Hintergrundwissen 39
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs
RRA:AVERAGE:0:1:400 # 6,6h (1 PDP á 60s * 400)
RRA:AVERAGE:0:3:400 # 20,0h (3 PDP á 60s * 400)
RRDTool Basis und Hintergrundwissen 40
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs
RRA:AVERAGE:0:1:400 # 6,6h (1 PDP á 60s * 400)
RRA:AVERAGE:0:3:400 # 20,0h (3 PDP á 60s * 400)
RRA:AVERAGE:0:7:400 # 46,6h (7 PDP á 60s * 400)
RRDTool Basis und Hintergrundwissen 41
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs
RRA:AVERAGE:0:1:400 # 6,6h (1 PDP á 60s * 400)
RRA:AVERAGE:0:3:400 # 20,0h (3 PDP á 60s * 400)
RRA:AVERAGE:0:7:400 # 46,6h (7 PDP á 60s * 400)
RRA:AVERAGE:0:15:400 # 100,0h (15 PDP á 60s * 400)
RRDTool Basis und Hintergrundwissen 42
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs
RRA:AVERAGE:0:1:400 # 6,6h (1 PDP á 60s * 400)
RRA:AVERAGE:0:3:400 # 20,0h (3 PDP á 60s * 400)
RRA:AVERAGE:0:7:400 # 46,6h (7 PDP á 60s * 400)
RRA:AVERAGE:0:15:400 # 100,0h (15 PDP á 60s * 400)
„now“
t
RRDTool Basis und Hintergrundwissen 43
RRDTool lebt in der Vergangenheit!(nach http://www.vandenbogaerdt.nl/rrdtool/)
Aufgabe:Monitoring meiner
Geldbörse
RRDTool Basis und Hintergrundwissen 44
RRDTool lebt in der Vergangenheit!RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 45
rrdtool create wallet.rrd start 1130799600 # 00:00 Uhr
Anlegen einer neuen RRD:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 46
rrdtool create wallet.rrd start 1130799600 # 00:00 Uhr step 3600 # stepsize = 1h
Anlegen einer neuen RRD:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 47
rrdtool create wallet.rrd start 1130799600 # 00:00 Uhr step 3600 # stepsize = 1h DS:content:GAUGE:86400:0:U # hb=1 Tag, min=0, max=U
Anlegen einer neuen RRD:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 48
rrdtool create wallet.rrd start 1130799600 # 00:00 Uhr step 3600 # stepsize = 1h DS:content:GAUGE:86400:0:U # hb=1 Tag, min=0, max=U RRA:AVERAGE:0:1:48 # xff=0, 1 step, 48 CDPs (48h)
Anlegen einer neuen RRD:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 49
rrdtool update wallet.rrd 1130828400:75.00 # 08:00rrdtool update wallet.rrd 1130832000:60.00 # 09:00rrdtool update wallet.rrd 1130835600:55.00 # 10:00rrdtool update wallet.rrd 1130842800:45.00 # 12:00rrdtool update wallet.rrd 1130864400:25.00 # 18:00rrdtool update wallet.rrd 1130868000:10.00 # 19:00rrdtool update wallet.rrd 1130886000:0.00 # 24:00
Befüllen der RRD:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 50
Graph:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 51
Unsere Liste beschreibt die Zukunft,= was wir haben...
Problem:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 52
Unsere Liste beschreibt die Zukunft,= was wir haben...
RRDTool beschreibt die Vergangenheit,= was wir hatten!
Problem:
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 53
Lösung:
Update der Datenbank, bevorbevor sich derBetrag in der Geldbörse ändert!
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 54
Lösung:
rrdtool update wallet.rrd 1130828400:0.00 # 08:00 (75.00)rrdtool update wallet.rrd 1130832000:75.00 # 09:00 (60.00)rrdtool update wallet.rrd 1130835600:60.00 # 10:00 (55.00)rrdtool update wallet.rrd 1130842800:55.00 # 12:00 (45.00)rrdtool update wallet.rrd 1130864400:45.00 # 18:00 (25.00)rrdtool update wallet.rrd 1130868000:25.00 # 19:00 (10.00)rrdtool update wallet.rrd 1130886000:10.00 # 24:00 (00.00)
Update der Datenbank, bevorbevor sich derBetrag in der Geldbörse ändert!
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 55
Lösung:
Update der Datenbank, bevorbevor sich derBetrag in der Geldbörse ändert!
RRDTool lebt in der Vergangenheit!
RRDTool Basis und Hintergrundwissen 56
Q & A