Sie sind auf Seite 1von 56

RRDTool

Basis- und Hintergrundwissen

Simon Meggle
WIRECARD Technologies AG

Nagios-Workshop 2010, Nürnberg


Agenda

● 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!

RRDTool Basis­ und Hintergrundwissen 2
Grundlagen: Bestands- und Stromdaten

Unterscheidung von Kennzahlen nach


● Bestandsdaten
– Kontostand
– Anzahl Bundesbürger
– Kilometerzähler im Auto

RRDTool Basis­ und Hintergrundwissen 3
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 4
Grundlagen: Bestands- und Stromdaten

Wozu Stromgrößen erfassen?


Negativ-Beispiel für die Erfassung von Bestandsgrößen:

Nachteile:
● Graph skaliert schlecht

● „alles sieht gleich aus“

RRDTool Basis­ und Hintergrundwissen 5
Grundlagen: Bestands- und Stromdaten

Wozu Stromgrößen erfassen?


Negativ-Beispiel für die Erfassung von Bestandsgrößen:

Nachteile:
● Graph skaliert schlecht

● „alles sieht gleich aus“

● Interpretation nur anhand der Deltas möglich

RRDTool Basis­ und Hintergrundwissen 6
Grundlagen: Bestands- und Stromdaten

Berechnung von Stromdaten


= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):

∆y

∆x
t
RRDTool Basis­ und Hintergrundwissen 7
Grundlagen: Bestands- und Stromdaten

Berechnung von Stromdaten


= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):

Es seien:

∆y=50 Bytes in
● ∆x=10 Sekunden

übertragen worden.

∆y = 50

∆x = 10
t
RRDTool Basis­ und Hintergrundwissen 8
Grundlagen: Bestands- und Stromdaten

Berechnung von Stromdaten


= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):

Es seien:

∆y=50 Bytes in
● ∆x=10 Sekunden

übertragen worden.

50 Bytes Unbekannt:
Was geschah wirklich in ∆x?

… 2s nichts,
...in 5s 50 Bytes (=10 B/s) ,
∆y = 50 … 3s nichts ?

∆x = 10
t
RRDTool Basis­ und Hintergrundwissen 9
Grundlagen: Bestands- und Stromdaten

Berechnung von Stromdaten


= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):

Es seien:

∆y=50 Bytes in
● ∆x=10 Sekunden

übertragen worden.
50 Bytes

Unbekannt:
Was geschah wirklich in ∆x?

… 5s nichts,
...in 1s 50 Bytes (=50 B/s) ,
∆y = 50 … 4s nichts ?

∆x = 10
t
RRDTool Basis­ und Hintergrundwissen 10
Grundlagen: Bestands- und Stromdaten

Berechnung von Stromdaten


= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):

Es seien:

∆y=50 Bytes in
● ∆x=10 Sekunden

übertragen worden.
50 Bytes

Unbekannt:
Was geschah wirklich in ∆x?

… 1s nichts,
...in 2,5s 50 Bytes (=20 B/s) ,
∆y = 50 … 6,5s nichts ?

∆x = 10
t
RRDTool Basis­ und Hintergrundwissen 11
Grundlagen: Bestands- und Stromdaten

Berechnung von Stromdaten


= Veränderungen von Bestandsdaten (∆y) über Zeit (∆x):

EGAL!

Fakt ist:
50 Bytes in 10s übertragen!

Einzig berechenbare Bandbreite:


50 Bytes/10s = 5 Bytes/s

Die Bandbreite 5 Bytes/s über 10s


50 Bytes drückt die übertragene
∆y = 50 Datenmenge aus.

„Transformation“
∆x = 10
t
RRDTool Basis­ und Hintergrundwissen 12
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen

DS:ds-name:DST:heartbeat:min:max

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 UNKNOWN

gespeichert (= „Sanity-Check“, um z.b. „­800°C“ zu vermeiden)

RRDTool Basis­ und Hintergrundwissen 13
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen

DS:ds-name:DST:heartbeat:min:max

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 UNKNOWN

gespeichert (= „Sanity-Check“, um z.b. „­800°C“ zu vermeiden)

○/⬤: PNP: über Custom Templates pro Check justierbar (PNP 0.4 / 0.6)!
RRDTool Basis­ und Hintergrundwissen 14
Datenfluss in RRDTool

Wert,
timestamp
Data Type
Data
COUNTER
Type
DERIVE
Transformation Data
ABSOLUT
Type
(DS)
GAUGE

Normalisierung
(PDP)

Konsolidierung
RRA
(CDP)

RRDTool Basis­ und Hintergrundwissen 15
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
COUNTER DERIVE ABSOLUTE GAUGE
zunehmender wie COUNTER; wie COUNTER;
Wert
Counter-Wert zu-/abnehmend zählt immer ab 0
Input

gespeichert Wert wird


∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t
wird durchgereicht
Overflow-
Check 
Bytecounter, Temperatur,
Bidirektionale COUNTER mit
Beispiele Wasseruhr, Füllstand, Km/h,
Pumpe vielen Overflows
Kilometerzähler KWh

Stromdaten Bestandsdaten
RRDTool Basis­ und Hintergrundwissen 16
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
COUNTER DERIVE ABSOLUTE GAUGE
zunehmender wie COUNTER; wie COUNTER;
Wert
Counter-Wert zu-/abnehmend zählt immer ab 0
Input

gespeichert Wert wird


∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t
wird durchgereicht
Overflow-
Check 
Bytecounter, Temperatur,
Bidirektionale COUNTER mit
Beispiele Wasseruhr, Füllstand, Km/h,
Pumpe vielen Overflows
Kilometerzähler KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
120 1 1 2 120
180 1 1 3 180
300 2 2 5 300
60 -- -4 1 60

Stromdaten Bestandsdaten
RRDTool Basis­ und Hintergrundwissen 17
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
COUNTER DERIVE ABSOLUTE GAUGE
zunehmender wie COUNTER; wie COUNTER;
Wert
Counter-Wert zu-/abnehmend zählt immer ab 0
Input

gespeichert Wert wird


∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t
wird durchgereicht
Overflow-
Check 
Bytecounter, Temperatur,
Bidirektionale COUNTER mit
Beispiele Wasseruhr, Füllstand, Km/h,
Pumpe vielen Overflows
Kilometerzähler KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1
wert(aktuell) 1
!> wert(letzter) 60
120 1 1 2 120
180 1 1 3 180
300 2 2 5 300
60 -- -4 1 60

Stromdaten Bestandsdaten
RRDTool Basis­ und Hintergrundwissen 18
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
COUNTER DERIVE ABSOLUTE GAUGE
zunehmender wie COUNTER; wie COUNTER;
Wert
Counter-Wert zu-/abnehmend zählt immer ab 0
Input

gespeichert Wert wird


∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t
wird durchgereicht
Overflow-
Check 
Bytecounter, Temperatur,
Bidirektionale COUNTER mit
Beispiele Wasseruhr, Füllstand, Km/h,
Pumpe vielen Overflows
Kilometerzähler KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
∆wert = -240 !
120 1 1 2 120
180 1 1 3 180
300 2 2 5 300
60 -- -4 1 60

Stromdaten Bestandsdaten
RRDTool Basis­ und Hintergrundwissen 19
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
COUNTER DERIVE ABSOLUTE GAUGE
zunehmender wie COUNTER; wie COUNTER;
Wert
Counter-Wert zu-/abnehmend zählt immer ab 0
Input

gespeichert Wert wird


∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t
wird durchgereicht
Overflow-
Check 
Bytecounter, Temperatur,
Bidirektionale COUNTER mit
Beispiele Wasseruhr, Füllstand, Km/h,
Pumpe vielen Overflows
Kilometerzähler KWh
Beispiel-Werte (bei check_interval=60s)
wert = 300 !
60 1 1 1 60
120 1 1 2 120
180 1 1 3 180
300 2 2 5 300
60 -- -4 1 60

Stromdaten Bestandsdaten
RRDTool Basis­ und Hintergrundwissen 20
Datenfluss in RRDTool
Schritt 1: Transformation / Datentypen
COUNTER DERIVE ABSOLUTE GAUGE
zunehmender wie COUNTER; wie COUNTER;
Wert
Counter-Wert zu-/abnehmend zählt immer ab 0
Input

gespeichert Wert wird


∆ wert / ∆ t ∆ wert / ∆ t wert / ∆ t
wird durchgereicht
Overflow-
Check 
Bytecounter, Temperatur,
Bidirektionale COUNTER mit
Beispiele Wasseruhr, Füllstand, Km/h,
Pumpe vielen Overflows
Kilometerzähler KWh
Beispiel-Werte (bei check_interval=60s)
60 1 1 1 60
wert = 60 !
120 1 1 2 120
180 1 1 3 180
300 2 2 5 300
60 -- -4 1 60

Stromdaten Bestandsdaten
RRDTool Basis­ und Hintergrundwissen 21
Datenfluss in RRDTool

Wert,
timestamp
Data Type
Data
COUNTER
Type
DERIVE
Transformation Data
ABSOLUT
Type
(DS)
GAUGE

Normalisierung
(PDP)

Konsolidierung
RRA
(CDP)

RRDTool Basis­ und Hintergrundwissen 22
Datenfluss in RRDTool
Schritt 2: Normalisierung
Normalisierung = Ergebnisse mit unterschiedlicher Grundlage (hier: t)
vergleichbar machen

50
30
20
10 10 10
t

RRDTool Basis­ und Hintergrundwissen 23
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP1 =

60s

50

40

30

20

10

40

30

20

10

t
PDP1
RRDTool Basis­ und Hintergrundwissen 24
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP1 = 45s*10B/s

60s

50

40

30

20

10

40

30

20

10

t
PDP1
RRDTool Basis­ und Hintergrundwissen 25
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP1 = 45s*10B/s + 15s*20B/s

60s

50

40

30

20

10

40

30

20

10

t
PDP1
RRDTool Basis­ und Hintergrundwissen 26
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP1 = 45s*10B/s + 15s*20B/s
60s

60s

50

40

30

20

10

40

30

20

10

t
PDP1
RRDTool Basis­ und Hintergrundwissen 27
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP1 = 45s*10B/s + 15s*20B/s = 450B + 300B = 12,5 B/s
60s 60s

60s

50

40

30

20

10

40

30

20

10

t
PDP1
RRDTool Basis­ und Hintergrundwissen 28
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP2 = 30s*20B/s + 30s*10B/s = 600B + 300B = 15 B/s
60s 60s

60s 60s

50

40

30

20

10

40

30

20

10

t
PDP1 PDP2
RRDTool Basis­ und Hintergrundwissen 29
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP4 = 15s*50B/s + 45s*30B/s = 750B + 1350B = 35 B/s
60s 60s

60s 60s 60s 60s

50

40

30

20

10

40

30

20

10

t
PDP1 PDP2 PDP3 PDP4
RRDTool Basis­ und Hintergrundwissen 30
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP5 = 45s*10B/s + 15s*0B/s = 450B = 7,5 B/s
60s 60s

60s 60s

50

40

30

20

10

40

30

20

10

t
PDP4 PDP5
RRDTool Basis­ und Hintergrundwissen 31
Datenfluss in RRDTool
Schritt 2: Normalisierung zu PDPs = Primary Data Points
PDP 6 + 7= UNKNOWN
PDP 8 = KNOWN, da mehr als die Hälfte des Intervalls bekannt sind
60s 60s

50

40

30

20

10

Heartbeat = 120s t

40

30

20

10

t
PDP4 PDP5 PDP6 PDP7 PDP8
RRDTool Basis­ und Hintergrundwissen 32
Datenfluss in RRDTool

Wert,
timestamp
Data Type
Data
COUNTER
Type
DERIVE
Transformation Data
ABSOLUT
Type
(DS)
GAUGE

Normalisierung
(PDP)

Konsolidierung
RRA
(CDP)

RRDTool Basis­ und Hintergrundwissen 33
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs

RRA:CF:xff:steps:rows


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 Berechnung

eines CDP unknown sein dürfen; andernfalls CDP=unknown


(0..0.99999999)
● rows: Anzahl der CDPs, die das RRA speichern soll

RRDTool Basis­ und Hintergrundwissen 34
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs

RRA:AVERAGE:0:3:360

40

30

20

10

t
PDP1 PDP2 PDP3

40

30

20

10

t
CDP1

RRDTool Basis­ und Hintergrundwissen 35
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs

RRA:AVERAGE:0:3:360 RRA:MAX:0:3:360

40 40

30 30

20 20

10 10

t t
PDP1 PDP2 PDP3 PDP1 PDP2 PDP3

40 40

30 30

20 20

10 10

t t
CDP1 CDP1

RRDTool Basis­ und Hintergrundwissen 36
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs

RRA:AVERAGE:0:3:360 RRA:MAX:0:3:360 RRA:LAST:0:3:360

40 40 40

30 30 30

20 20 20

10 10 10

t t t
PDP1 PDP2 PDP3 PDP1 PDP2 PDP3 PDP1 PDP2 PDP3

40 40 40

30 30 30

20 20 20

10 10 10

t t t
CDP1 CDP1 CDP1

RRDTool Basis­ und Hintergrundwissen 37
Datenfluss in RRDTool
Schritt 3: Konsolidierung zu CDPs

RRA:AVERAGE:0:1:400 # 6,6h (1 PDP á 60s * 400)

RRDTool Basis­ und Hintergrundwissen 38
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 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)

RRA:AVERAGE:0:7:400 # 46,6h (7 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)

RRA:AVERAGE:0:15:400 # 100,0h (15 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)

„now“

RRDTool Basis­ und Hintergrundwissen 42
RRDTool lebt in der Vergangenheit!
(nach http://www.vandenbogaerdt.nl/rrdtool/)

Aufgabe:
Monitoring meiner
Geldbörse

RRDTool Basis­ und Hintergrundwissen 43
RRDTool lebt in der Vergangenheit!

RRDTool Basis­ und Hintergrundwissen 44
RRDTool lebt in der Vergangenheit!

Anlegen einer neuen RRD:

rrdtool create wallet.rrd
        ­­start 1130799600 # 00:00 Uhr

RRDTool Basis­ und Hintergrundwissen 45
RRDTool lebt in der Vergangenheit!

Anlegen einer neuen RRD:

rrdtool create wallet.rrd
        ­­start 1130799600 # 00:00 Uhr
        ­­step 3600 # stepsize = 1h

RRDTool Basis­ und Hintergrundwissen 46
RRDTool lebt in der Vergangenheit!

Anlegen einer neuen RRD:

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

RRDTool Basis­ und Hintergrundwissen 47
RRDTool lebt in der Vergangenheit!

Anlegen einer neuen RRD:

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)

RRDTool Basis­ und Hintergrundwissen 48
RRDTool lebt in der Vergangenheit!

Befüllen der RRD:

rrdtool update wallet.rrd 1130828400:75.00 # 08:00
rrdtool update wallet.rrd 1130832000:60.00 # 09:00
rrdtool update wallet.rrd 1130835600:55.00 # 10:00
rrdtool update wallet.rrd 1130842800:45.00 # 12:00
rrdtool update wallet.rrd 1130864400:25.00 # 18:00
rrdtool update wallet.rrd 1130868000:10.00 # 19:00
rrdtool update wallet.rrd 1130886000:0.00 # 24:00

RRDTool Basis­ und Hintergrundwissen 49
RRDTool lebt in der Vergangenheit!

Graph:

RRDTool Basis­ und Hintergrundwissen 50
RRDTool lebt in der Vergangenheit!

Problem:

Unsere Liste beschreibt die Zukunft,


= was wir haben...

RRDTool Basis­ und Hintergrundwissen 51
RRDTool lebt in der Vergangenheit!

Problem:

Unsere Liste beschreibt die Zukunft,


= was wir haben...
RRDTool beschreibt die Vergangenheit,
= was wir hatten!

RRDTool Basis­ und Hintergrundwissen 52
RRDTool lebt in der Vergangenheit!

Lösung:
Update der Datenbank, bevor sich der
Betrag in der Geldbörse ändert!

RRDTool Basis­ und Hintergrundwissen 53
RRDTool lebt in der Vergangenheit!

Lösung:
Update der Datenbank, bevor sich der
Betrag in der Geldbörse ändert!

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)

RRDTool Basis­ und Hintergrundwissen 54
RRDTool lebt in der Vergangenheit!

Lösung:
Update der Datenbank, bevor sich der
Betrag in der Geldbörse ändert!

RRDTool Basis­ und Hintergrundwissen 55
Q&A

RRDTool Basis­ und Hintergrundwissen 56