Sida 1 av 1
Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 13:04
av MartinF
Min kod skulle tjäna på om jag kan lägga ned värdena ett och ett i rra-filen. Provade därför detta:
Kod: Markera allt
sub RRA_update {
(my $variable, $value)=@_;
RRDs::updatev $RRDDataFile, '-t', $variable, "N:$value" or die "ERROR while updating RRD: ". RRDs::error(). "\n"}
Problemet är att det funkar bara med det första DS jag skickar in, det verkar som att RRDTool inte klarar flera anrop efter varandra. Någon som har någon idé som löser problemet?
Re: Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 13:51
av daromer
Förstår inte din frågeställning och förmodar att du menar RRD och inte RRA
Ivf menar du att du vill lagra ett värde per DS åt gången. dvs första gången lagra värde i dsen som heter XX sedan nästa gång i Dsen som heter YY ?
Vad för fel får du?
Har faktiskt inte testat det ovan om det nu r det du vill. Jag kör 1 st rrd-fil per DS.
Re: Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 14:47
av MartinF
RRA tror jag står för Round Robin Archive - dvs den princip enligt vilken RRD är byggd?
Bara det dataset jag först skickar data till uppdateras och jag får inga felmeddelanden, bara Nan, Nan , Nan... på de övriga.
Re: Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 17:04
av elf98
Kod: Markera allt
RRDs::updatev $RRDDataFile, '-t', $variable, "N:$value"
N anger att du skall lägga in ett värde med nuvarande timestamp. Det går aldrig att lägga in värden tidigare än det senast inlagda värdet.
Jag fick intrycket att du ska återskapa en databas, men så kanske inte är fallet?
Exakt vad är det du försöker göra?
Re: Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 18:12
av MartinF
Tanken är att lägga data i två databaser samtidigt: MySql och RRD.
Förmodligen inte den bästa koden, men typ så här:
Kod: Markera allt
sub setvar {
(my $variable, $value)=@_;
my $sql = "SELECT count(*) FROM settings WHERE variable='$variable' GROUP BY variable";
@result = $dbh->selectrow_array($sql, undef, @params);
if (@result[0]==0)
{createvar($variable, $value)}
else {$sql = "UPDATE settings SET value = '$value' WHERE variable='$variable'";
$sth = $dbh->prepare($sql);
$sth->execute or die "SQL Error: $DBI::errstr\n"}
if ($variable ~~ @Logvars) {RRA_update($variable, $value)}}
Att tanka ner allt samtidigt i RRD drar gärna till sig buggar. Det blir ju en ganska lång lista av variabler som måste ligga i rätt ordning.
Re: Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 18:57
av daromer
Och vad är då problemet? Förstår fortsfarande inte vad som skulle vara problem. Det enda problemet jag kan se är som det Elf beskriver. När du försöker använda flera DS samtidigt. då måste man lägga alla värden på de olika dserna samtidigt. Alternativt göra som jag gör. 1 st rrd för varje ds.
För att lägga in ett värde i mysql kontra rrd är ju inge problem ivf...
Re: Problem att lagra värden ett och ett i RRA
Postat: 19 mar 2011, 23:47
av MartinF
Ja, problemet är just det att det inte går att lägga till data annat än samtidigt till samma RRD. Elfs förklaring låter rimlig, men vd ska då --template vara bra för?
En RRD för varje DS är ju f.ö. också en flexibel lösning för att lägga till eller ta bort DS, men nu har jag ju data från ett helt år ...
Re: Problem att lagra värden ett och ett i RRA
Postat: 20 mar 2011, 00:32
av daromer
Jag kör en fil för varje. Har inte ork att krabba med alla i samma.
Tar inte många minuter att fylla en rrd med data för ett år. Tar jag bort en fil så dröjer det en kvart så finns där en ny.
Du kan skjuta in xxxx värden åt gången per rad i en rrd. Så läser man ut alla värden och batchar in 500 åt gången så går det undan att fylla en rrddatabas med värden för ett år åt gången om man nu vill det.
Så här står det om template:
The template switch allows you to specify which data sources you are going to update and in which order. If the data sources specified in the template are not available in the RRD file, the update process will abort with an error message.
While it appears possible with the template switch to update data sources asynchronously, RRDtool implicitly assigns non-COMPUTE data sources missing from the template the *UNKNOWN* value.
Det tolkar jag som att man kan få välja ordning endast. Och att man fortsfarande måste fylla på värden för alla annars kommer resterande DS få Unknown som value.
Re: Problem att lagra värden ett och ett i RRA
Postat: 20 mar 2011, 11:09
av MartinF
Det är så det ska tolkas, jag ser det nu.
Får ta en fundering hur jag ska lägga upp det i ställlet.