Definition av RRD-databas

RRDTool är en Linuxmjukvara som kan användas för att lagra data i Round-Robin Databaser för att sedan generera grafer utifrån den lagrade datan.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
MagnusM
Wannabe
Inlägg: 7
Blev medlem: 15 mar 2009, 19:38
Ort: Lidingö

Definition av RRD-databas

Inlägg av MagnusM »

Hej!

Jag har fått en databasdefinition av en kompis som fått den av en annan kompis, som har fått den av en tredje och vi båda är ganska så lost på hur och varför den är definierad på det sättet. Jag har suttit och läst och läst på rrdtools hemsida... men jag blir inte så mycket klokare. Behöver därför lite hjälp av er för att komma vidare.

Det jag vill veta är följande:
Nu måste jag logga 1gång per minut, annars får jag hack i grafen. Men om jag vill logga mer sällan, t.ex. var 10'e minut, hur ska databasen definieras om? (jag har inget gammalt data som ska sparas, så jag kan blåsa databasen)

Kod: Markera allt

rrdtool create temperatur-inne.rrd -s 180 DS:temp_inne:GAUGE:1200:0:U RRA:AVERAGE:0.5:1:175200 RRA:AVERAGE:0.5:20:87600
Vad betyder -s 180?
GAUGE: Den lagrar värdet som rapporteras och gör ingen beräkning på det.
1200: Heartbeat = 1200sec = 20 minuter = Varför är det satt och vad betyder det?
0: Miniumumvärde, men vad händer om det är negativt?
U: Maximum, inge begränsning?

RRA: Round Robin Definition
AVERAGE: Hur den ska beräkna värdena.. typ…
0.5: Ingen aning
1: Ingen aning
175000: Ingen aning
0.5
20
87600

Varför 2 ggr. Den lägger upp 2 ”spaces” i databasen för att generera 2 olika average? Uppenbarligen baserat på de siffror som finns ovan, men vad betyder de?
Användarvisningsbild
elf98
Hemautomation - det är mer än en hobby
Inlägg: 5434
Blev medlem: 27 okt 2006, 13:49
Ort: Linköping
Kontakt:

Re: Definition av RRD-databas

Inlägg av elf98 »

MagnusM skrev:

Kod: Markera allt

rrdtool create temperatur-inne.rrd -s 180 DS:temp_inne:GAUGE:1200:0:U RRA:AVERAGE:0.5:1:175200 RRA:AVERAGE:0.5:20:87600
-s (step) är databasens minsta upplösning i sekunder. Step är basen i RRA-definitionerna. Om du trycker in värden oftare eller mer sällan kommer mjukvaran att räkna fram värden för var 180de sekund.

Varje databas kan bestå av flera DS (DataSources).
GAUGE: Den lagrar värdet som rapporteras och gör ingen beräkning på det.
GAUGE: är vilken typ av data som lagras. Det finns flera varianter där de vanligaste är:

GAUGE "Mätare" ex temperatur, antal personer i ett rum, Hastighet.
COUNTER "Räknare" Värden som kontinuerligt ökar och aldrig minskar (förutom när räknaren når sitt maxvärde och börjar om från 0). Tex: Pulser från en elmätare, datatrafik på ett nätverkskort
DERIVE "Derivatan" Helt enkelt derivatan av linjen från det nuvarande till det senaste värdet. Kan användas i stället för GAUGE om du vill veta med vilken hastighet förändringen sker.
ABSOLUTE Räknare där värdet nollställs vid varje läsning.
1200: Heartbeat = 1200sec = 20 minuter = Varför är det satt och vad betyder det?
Heartbeat är hur lång tid det får gå mellan databasinmatningar (heartbeats!) innan ett värde klassas som okänt. Om du inte matar in värden på 20 minuter kommer det att stå NaN i databasen för den tiden. Om du matar in data med 19 minuters mellanrum kommer mjukvaran att räkna fram värden för var tredje minut och lägga in i databasen. (Under förutsättning att du har en RRA där 1 step utgör en datapunkt )
0: Miniumumvärde, men vad händer om det är negativt?
Om värdet som du försöker lägga in är mindre än min läggs inte något värde in.
U: Maximum, inge begränsning?
Exakt. Om du specar ett maxvärde fungerar det på samma sätt som min.

Nu kommer vi till själva databasspecifikationen. Du kan ha flera RRA (Round Robin Archive) och varje specad RRA gäller för varje definierad DS.
AVERAGE: Hur den ska beräkna värdena.. typ…
Anger hur RRDtool skall beräkna datapunkterna, har störst effekt på RRAer där du skall sammanställa över tid. (Vanligtvis så sparar du inte all data med högsta upplösningen under lång tid)
AVERAGE Medelvärde
MIN Det minsta värde
MAX Det största värdet
LAST Det senaste värdet

Hur man än gör tappar man information, vilken CF (consolidation function) som skall väljas beror helt på vad du vill åstadkomma. På temperatur.nu har jag AVERAGE, MIN & MAX - för att kunna få fram alla dessa värden även över tid.

0.5: Ingen aning
"xff The xfiles factor defines what part of a consolidation interval may be made up from *UNKNOWN* data while the consolidated value is still regarded as known. It is given as the ratio of allowed *UNKNOWN* PDPs to the number of PDPs in the interval. Thus, it ranges from 0 to 1 (exclusive)."

Jag har inte stenkoll på den har variabeln, sätter du den till 0 kommer du i längre sammanställningar tappa mycket information, sätter du den till 1 kommer medelvärdena att kunna bli lite knasiga.
1: Ingen aning
Hur många "Steps" - i ditt fall 180 sekunder - den här RRAn skall medelvärdesbilda över för varje datapunkt. I den här RRAn sparas värden för var 180de sekund.
175000: Ingen aning
Hur många datapunkter den här RRAn består av. Databasen kommer att sträcka sig över 1*180*175000=31500000sekunder. ~1 år
0.5
Samma som ovan.
20
I den här RRAn är varje datapunkt beräknad från 20 steps, dvs 20*180sek=1h.
87600
RRAn är uppbyggd av 87600 datapunkter, dvs 87600 timmar, ~10år.
Varför 2 ggr. Den lägger upp 2 ”spaces” i databasen för att generera 2 olika average? Uppenbarligen baserat på de siffror som finns ovan, men vad betyder de?
För att i ett kort perspektiv vill du kunna skapa detaljerade grafer. I ett längre perspektiv räcker det med lite sämre upplösning.
Det går ju mycket snabbare att skapa en graf över 1år med medelvärden över 1h (8760 punkter) än med medelvärden över 3min (175000 datapunkter).

Personligen tycker jag att det är overkill att spara högsta upplösningen i ett år. Jag skulle skapa en RRA där högsta upplösningen sparas i 3 månader, en RRA där medelvärden över 20 eller 30 minuter sparas i 1år och en RRA där medelvärden över 1h sparas i 10år.
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
MagnusM
Wannabe
Inlägg: 7
Blev medlem: 15 mar 2009, 19:38
Ort: Lidingö

Re: Definition av RRD-databas

Inlägg av MagnusM »

Woppa!! Många tusen tack! Nu tror jag mig förstå c:a 100% mer än tidigare.

Så med andra ord om jag loggar värden inom 20 minuter så borde jag inte få hack i min graf för att den räknar ut mellanskillnaden. Kan förklara varför det blev hack för jag loggade var 20'e minut.

Så om jag definierar om databasen till följande så borde jag gå enligt dina rekommendationer

Kod: Markera allt

rrdtool create temperatur-inne.rrd -s 180 DS:temp_inne:GAUGE:1200:-50:100 RRA:AVERAGE:0.5:1:43800 RRA:AVERAGE:0.5:6:29200 RRA:AVERAGE:0.5:20:87600
1*1*43800 = 3 mån, 3 minuters nogranhet
1*6*29200 = 1 år, 18 minuters nogranhet
1*20*87600 = 10 år, 1 timmes nogranhet
Användarvisningsbild
elf98
Hemautomation - det är mer än en hobby
Inlägg: 5434
Blev medlem: 27 okt 2006, 13:49
Ort: Linköping
Kontakt:

Re: Definition av RRD-databas

Inlägg av elf98 »

Helt korrekt.

Och du bör köra insamlingarna var tredje minut.
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
Skriv svar