Problem med rrdtool graph

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!
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Problem med rrdtool graph

Inlägg av patriko »

Har börjat att kolla lite på rrdtool.

Har fått in gång en rrd databas fil. Som lagrar info lite då & då.

Där ifrån kan jag skapa grafer utan några problem.

Men om jag vill att ex. ett max värde i rutan blir det problem
Jag använder denna raden i scriptet.
GPRINT:temp1:MAX:"%5.1lf °C"
när jag lägger till en här raden står den jätte länge.

Efter ett tag har den gjort färdigt bilden. Då har jag fått en massa siffror längst ner istället för min Max temp siffra.

Är det någon som känner igen detta problem?

//Patrik
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: Problem med rrdtool graph

Inlägg av Plutonium »

Så här ser min ut:
"GPRINT:temp:MIN: Min\\: %6.1lf",
"GPRINT:temp:MAX: Max\\: %6.1lf",

Hela mitt skript finner du här..
http://www.temperatur.nu/forum/viewtopi ... 1790#p1790
http://essunga.org
Moderator - Temperatur.nu
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Nopp.

Har redan testat det.
Har kollat in ditt script.

Skillnaden är att du har skrivit ditt i perl
mitt är i bash.

Kanske måste skriva om mitt.
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Nu har jag skrivit om skriptet.

Så här blev de.

Kod: Markera allt

#!/usr/bin/perl
#
# rrd_tempsensor.pl

    use lib qw(/usr/local/rrdtool-1.2.15/lib/perl);
    use RRDs;

    # define location of rrdtool databases
    my $rrd = './';
    # define location of images
    my $img = './';




            # create graphs for current sensor
            &CreateGraph($_[0], "day", $_[1]);
            &CreateGraph($_[0], "week", $_[1]);
            &CreateGraph($_[0], "month", $_[1]);
            &CreateGraph($_[0], "year", $_[1]);

    sub CreateGraph
    {
    # creates graph
    # inputs: $_[0]: sensor number (ie, 0/1/2/etc)
    #         $_[1]: interval (ie, day, week, month, year)
    #         $_[2]: sensor description

            RRDs::graph "$img/temps2.png",
                    "-s -1$_[1]",
                    "-t $_[2]",
                    "--lazy",
                    "-h", "150", "-w", "475",
                    "-a", "PNG",
                    "--slope-mode",
                    "DEF:ute=$rrd/temps2.rrd:ute:AVERAGE",
                    "LINE2:ute#0000FF::",
                    "GPRINT:ute:MIN: Min\\: %6.1lf",
                    "GPRINT:ute:MAX: Max\\: %6.1lf"
    }
Problemet kvar står. När jag har raderna GPRINT med tar det lång tid att skapa bilden.
Under den tiden jobbar rrdtool på nästa 99%.

Och väl det är färdigt så har jag massa roliga siffror lägst ner i bilden. (Se bilaga)

Kan det vara fel på databasen??

Någon som har någon ide?
Bilagor
Bild
Bild
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: Problem med rrdtool graph

Inlägg av Plutonium »

Det ser så ut att du har fel på din databas..

Har du skapat din rrd databas på följande?

RRDs::create "tempute.rrd",
"-s 300",
"DS:temp:GAUGE:600:U:U",
"RRA:AVERAGE:0.5:1:2016",
"RRA:AVERAGE:0.5:6:1344",
"RRA:AVERAGE:0.5:24:2190",
"RRA:AVERAGE:0.5:144:3650";
http://essunga.org
Moderator - Temperatur.nu
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Det har jag också gjort nu.

Samma sak.

Funderar på en sak.

Jag har testat med ditt skript men jag måste skriva om det pga. att jag använder inte digtemp utan owfs.
När jag kör skriptet så spottar den ut detta.
sensor 0: 11.0625 degrees C
update rrd database for temp sensor 0...
......

Där står det 11,0625
Har du också decimaler från digitemp?

Det är kanske det som ställer till problemen!
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Har testat mera med utan decimaler.
Samma sak.
Tar lång tid. Och jag får en massa siffror längst ner.
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: Problem med rrdtool graph

Inlägg av elf98 »

Intressant!

Hur ser det ut om du fetchar lite data från databasen? (rrdtool fetch <databas> AVERAGE -s -20min)

Hur ser informationen till databasen ut? (rrdtool info <databas>)
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Ok.

Skall testa detta.

Men jag har börjat att installerat om rrdtool.
Sitter och kompelerar. Tar en stund.
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

server:~/rrd# rrdtool fetch temps.rrd AVERAGE -s -20min
ute server vrum

1220992200: nan nan nan
1220992500: nan nan nan
1220992800: nan nan nan
1220993100: nan nan nan
1220993400: nan nan nan

Fattar inte vad detta är!
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: Problem med rrdtool graph

Inlägg av elf98 »

Det har inte lagts in några värden på 20 minuter. nan är okända värden. testa lite längre tidsperspektiv!

info om databasen då?
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Ok.

Har inte haft ingån loggen på ett tag.

Men lite gammal info
server:~/rrd# rrdtool fetch temps.rrd MIN -s -1700min | grep nan -v
ute server vrum

Kod: Markera allt

1220900400: 1.3250000000e+01 2.5562500000e+01 1.6625000000e+01
1220900700: 1.3202286045e+01 2.5587983074e+01 1.6504089015e+01
1220901000: 1.3187500000e+01 2.5577052529e+01 1.6293657586e+01
1220901300: 1.3117758017e+01 2.5562500000e+01 1.6180258018e+01
1220901600: 1.2934038140e+01 2.5562500000e+01 1.6008287290e+01
1220901900: 1.2694070125e+01 2.5562500000e+01 1.5813619901e+01
1220902200: 1.2558079921e+01 2.5562500000e+01 1.5683079921e+01
1220902500: 1.2406700388e+01 2.5510636500e+01 1.5422819036e+01
1220902800: 1.2255071124e+01 2.5562500000e+01 1.5317571124e+01
1220903100: 1.2187888054e+01 2.5510596923e+01 1.5224373468e+01
_______________-

Kod: Markera allt

server:~/rrd# rrdtool info temps.rrd
filename = "temps.rrd"
rrd_version = "0003"
step = 300
last_update = 1220903347
ds[ute].type = "GAUGE"
ds[ute].minimal_heartbeat = 600
ds[ute].min = -5.0000000000e+01
ds[ute].max = 6.0000000000e+01
ds[ute].last_ds = "UNKN"
ds[ute].value = 3.0381717307e+03
ds[ute].unknown_sec = 0
ds[server].type = "GAUGE"
ds[server].minimal_heartbeat = 600
ds[server].min = -5.0000000000e+01
ds[server].max = 6.0000000000e+01
ds[server].last_ds = "UNKN"
ds[server].value = 6.3157168587e+03
ds[server].unknown_sec = 0
ds[vrum].type = "GAUGE"
ds[vrum].minimal_heartbeat = 600
ds[vrum].min = -5.0000000000e+01
ds[vrum].max = 6.0000000000e+01
ds[vrum].last_ds = "UNKN"
ds[vrum].value = 3.7879383544e+03
ds[vrum].unknown_sec = 0
rra[0].cf = "AVERAGE"
rra[0].rows = 600
rra[0].cur_row = 9
rra[0].pdp_per_row = 1
rra[0].xff = 5.0000000000e-01
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0
rra[0].cdp_prep[1].value = NaN
rra[0].cdp_prep[1].unknown_datapoints = 0
rra[0].cdp_prep[2].value = NaN
rra[0].cdp_prep[2].unknown_datapoints = 0
rra[1].cf = "AVERAGE"
rra[1].rows = 700
rra[1].cur_row = 1
rra[1].pdp_per_row = 6
rra[1].xff = 5.0000000000e-01
rra[1].cdp_prep[0].value = 3.6849659566e+01
rra[1].cdp_prep[0].unknown_datapoints = 0
rra[1].cdp_prep[1].value = 7.6583733423e+01
rra[1].cdp_prep[1].unknown_datapoints = 0
rra[1].cdp_prep[2].value = 4.5964763629e+01
rra[1].cdp_prep[2].unknown_datapoints = 0
rra[2].cf = "AVERAGE"
rra[2].rows = 775
rra[2].cur_row = 774
rra[2].pdp_per_row = 24
rra[2].xff = 5.0000000000e-01
rra[2].cdp_prep[0].value = 1.2779339181e+02
rra[2].cdp_prep[0].unknown_datapoints = 11
rra[2].cdp_prep[1].value = 2.5556126903e+02
rra[2].cdp_prep[1].unknown_datapoints = 11
rra[2].cdp_prep[2].value = 1.5907275536e+02
rra[2].cdp_prep[2].unknown_datapoints = 11
rra[3].cf = "AVERAGE"
rra[3].rows = 1500
rra[3].cur_row = 1499
rra[3].pdp_per_row = 144
rra[3].xff = 5.0000000000e-01
rra[3].cdp_prep[0].value = 1.2779339181e+02
rra[3].cdp_prep[0].unknown_datapoints = 83
rra[3].cdp_prep[1].value = 2.5556126903e+02
rra[3].cdp_prep[1].unknown_datapoints = 83
rra[3].cdp_prep[2].value = 1.5907275536e+02
rra[3].cdp_prep[2].unknown_datapoints = 83
rra[4].cf = "AVERAGE"
rra[4].rows = 2000
rra[4].cur_row = 1999
rra[4].pdp_per_row = 288
rra[4].xff = 5.0000000000e-01
rra[4].cdp_prep[0].value = 1.2779339181e+02
rra[4].cdp_prep[0].unknown_datapoints = 227
rra[4].cdp_prep[1].value = 2.5556126903e+02
rra[4].cdp_prep[1].unknown_datapoints = 227
rra[4].cdp_prep[2].value = 1.5907275536e+02
rra[4].cdp_prep[2].unknown_datapoints = 227
rra[5].cf = "MAX"
rra[5].rows = 600
rra[5].cur_row = 9
rra[5].pdp_per_row = 1
rra[5].xff = 5.0000000000e-01
rra[5].cdp_prep[0].value = NaN
rra[5].cdp_prep[0].unknown_datapoints = 0
rra[5].cdp_prep[1].value = NaN
rra[5].cdp_prep[1].unknown_datapoints = 0
rra[5].cdp_prep[2].value = NaN
rra[5].cdp_prep[2].unknown_datapoints = 0
rra[6].cf = "MAX"
rra[6].rows = 700
rra[6].cur_row = 1
rra[6].pdp_per_row = 6
rra[6].xff = 5.0000000000e-01
rra[6].cdp_prep[0].value = 1.2558079921e+01
rra[6].cdp_prep[0].unknown_datapoints = 0
rra[6].cdp_prep[1].value = 2.5562500000e+01
rra[6].cdp_prep[1].unknown_datapoints = 0
rra[6].cdp_prep[2].value = 1.5683079921e+01
rra[6].cdp_prep[2].unknown_datapoints = 0
rra[7].cf = "MAX"
rra[7].rows = 775
rra[7].cur_row = 774
rra[7].pdp_per_row = 24
rra[7].xff = 5.0000000000e-01
rra[7].cdp_prep[0].value = 1.3250000000e+01
rra[7].cdp_prep[0].unknown_datapoints = 11
rra[7].cdp_prep[1].value = 2.5587983074e+01
rra[7].cdp_prep[1].unknown_datapoints = 11
rra[7].cdp_prep[2].value = 1.6625000000e+01
rra[7].cdp_prep[2].unknown_datapoints = 11
rra[8].cf = "MAX"
rra[8].rows = 1500
rra[8].cur_row = 1499
rra[8].pdp_per_row = 144
rra[8].xff = 5.0000000000e-01
rra[8].cdp_prep[0].value = 1.3250000000e+01
rra[8].cdp_prep[0].unknown_datapoints = 83
rra[8].cdp_prep[1].value = 2.5587983074e+01
rra[8].cdp_prep[1].unknown_datapoints = 83
rra[8].cdp_prep[2].value = 1.6625000000e+01
rra[8].cdp_prep[2].unknown_datapoints = 83
rra[9].cf = "MAX"
rra[9].rows = 2000
rra[9].cur_row = 1999
rra[9].pdp_per_row = 288
rra[9].xff = 5.0000000000e-01
rra[9].cdp_prep[0].value = 1.3250000000e+01
rra[9].cdp_prep[0].unknown_datapoints = 227
rra[9].cdp_prep[1].value = 2.5587983074e+01
rra[9].cdp_prep[1].unknown_datapoints = 227
rra[9].cdp_prep[2].value = 1.6625000000e+01
rra[9].cdp_prep[2].unknown_datapoints = 227
rra[10].cf = "MIN"
rra[10].rows = 600
rra[10].cur_row = 9
rra[10].pdp_per_row = 1
rra[10].xff = 5.0000000000e-01
rra[10].cdp_prep[0].value = NaN
rra[10].cdp_prep[0].unknown_datapoints = 0
rra[10].cdp_prep[1].value = NaN
rra[10].cdp_prep[1].unknown_datapoints = 0
rra[10].cdp_prep[2].value = NaN
rra[10].cdp_prep[2].unknown_datapoints = 0
rra[11].cf = "MIN"
rra[11].rows = 700
rra[11].cur_row = 1
rra[11].pdp_per_row = 6
rra[11].xff = 5.0000000000e-01
rra[11].cdp_prep[0].value = 1.2187888054e+01
rra[11].cdp_prep[0].unknown_datapoints = 0
rra[11].cdp_prep[1].value = 2.5510596923e+01
rra[11].cdp_prep[1].unknown_datapoints = 0
rra[11].cdp_prep[2].value = 1.5224373468e+01
rra[11].cdp_prep[2].unknown_datapoints = 0
rra[12].cf = "MIN"
rra[12].rows = 775
rra[12].cur_row = 774
rra[12].pdp_per_row = 24
rra[12].xff = 5.0000000000e-01
rra[12].cdp_prep[0].value = 1.2187888054e+01
rra[12].cdp_prep[0].unknown_datapoints = 11
rra[12].cdp_prep[1].value = 2.5510596923e+01
rra[12].cdp_prep[1].unknown_datapoints = 11
rra[12].cdp_prep[2].value = 1.5224373468e+01
rra[12].cdp_prep[2].unknown_datapoints = 11
rra[13].cf = "MIN"
rra[13].rows = 1500
rra[13].cur_row = 1499
rra[13].pdp_per_row = 144
rra[13].xff = 5.0000000000e-01
rra[13].cdp_prep[0].value = 1.2187888054e+01
rra[13].cdp_prep[0].unknown_datapoints = 83
rra[13].cdp_prep[1].value = 2.5510596923e+01
rra[13].cdp_prep[1].unknown_datapoints = 83
rra[13].cdp_prep[2].value = 1.5224373468e+01
rra[13].cdp_prep[2].unknown_datapoints = 83
rra[14].cf = "MIN"
rra[14].rows = 2000
rra[14].cur_row = 1999
rra[14].pdp_per_row = 288
rra[14].xff = 5.0000000000e-01
rra[14].cdp_prep[0].value = 1.2187888054e+01
rra[14].cdp_prep[0].unknown_datapoints = 227
rra[14].cdp_prep[1].value = 2.5510596923e+01
rra[14].cdp_prep[1].unknown_datapoints = 227
rra[14].cdp_prep[2].value = 1.5224373468e+01
rra[14].cdp_prep[2].unknown_datapoints = 227
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: Problem med rrdtool graph

Inlägg av elf98 »

ds[ute].value = 3.0381717307e+03
Ser lite galet varmt ut...
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
patriko
Wannabe
Inlägg: 21
Blev medlem: 29 mar 2008, 21:40
Ort: Göteborg

Re: Problem med rrdtool graph

Inlägg av patriko »

Konstigt.

Jag har ju ändå fått lite kurver. När databasen stått och samlat lite.
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: Problem med rrdtool graph

Inlägg av elf98 »

Ett sätt att felsöka kan ju vara att skapa en ny databas, lägga in värden under 1h och samtidigt logga exakt vad som skickas till databasen. Får du samma problem med den nya databasen och det inte är något skit i den så är det märkligt...

Ett annat sätt kan vara att köra rrdtool dump för att sedan gå in i den skapade xml-filen och se om det finns några extremt stora/små tal iden.
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
Skriv svar