RRDtool hvordan laves graf over 'RATE OF CHANGE'
Jeg opsamler 4 forskellige ting i en RRD database.En af disse ting er et tal der "normalt" stiger hele tiden. En måler for et antal posteringer.
I RRD databasen ligger tallet som GAUGE.
Jeg vil rigtig gerne have lavet noget kode der kan analysere et udsnit af RRD databasen - og vise en graf over 'RATE OF CHANGE' dvs. udsvinget i antal nye posteringer.
Jeg har lidt kørende kode klar i CGI der kalder RRDs:graph
Det kan lave disse to grafer:
http://www.swiftnet.dk/rrdtool_thing.gif
Den øverste viser de aktuelle tal
Den nederste viser en dårlig 'RATE OF CHANGE' graf.
Men lige så snart jeg begynder at hoppe (fx tilbage i tiden) så bliver den nederste graf helt hullet og ubrugelig.
Kan man ikke optimere koden - så der altid kan laves en PÆN 'RATE OF CHANGE' graf ??
Her er lidt af det perl kode jeg benytter:
(PS: den er meget grim)
-----------------------------------------------------------
$optionList[$optionIndex++] = "DEF:WUCompleted=".$rrdfile.":WUCompleted:MAX";
$windowSize = 10;
my $configLine = "";
for( my $i = 0; $i < $windowSize; $i++ )
{
if( $i == 0 )
{
$configLine = "CDEF:prev1";
$configLine .= "=PREV(WUCompleted)";
}
else
{
$configLine = "CDEF:prev";
$configLine .= $i+1;
$configLine .= "=PREV(prev";
$configLine .= $i;
$configLine .= ")";
}
$optionList[$optionIndex++] = $configLine;
}
$configLine = "CDEF:max=";
for( my $i = 0; $i < $windowSize; $i++ )
{
if( $i == 0 )
{
$configLine .= "prev";
$configLine .= $i+1;
}
else
{
$configLine .= ",prev";
$configLine .= $i+1;
}
}
for( my $i = 0; $i < $windowSize - 1; $i++ )
{
$configLine .= ",MAX";
}
$configLine .= ",prev1,-";
$optionList[$optionIndex++] = $configLine;
$optionList[$optionIndex++] = "LINE2:max#880000:max";
-----------------------------------------------------------
Er der nogle gode ideer?
