[rrd-users] Still having problems
Russell Handorf
rhandorf at handorf.org
Tue Apr 10 01:41:04 CEST 2007
Thanks! I knew it was something I was doing, I just didnt understand
what. It's now working great.
r
Simon Hobson wrote:
> Russell Handorf wrote:
>
>
>> I have the DB setup like this
>>
>> $rrdtool create $rrd --start $timep --step 86400
>> DS:sql:ABSOLUTE:86400:0:10000000 RRA:MAX:0.5:1:6000
>>
>
>
>
>
>
>> $rrdtool update $rrd $time:$SQLJoinr
>>
>> $rrdtool = path to rrdtool
>> $rrd = the path and name of the rrd file
>> $time = the time in seconds of the line item being analyzed
>> $SQLJoinr = a low integer value, typically thus far less than 20 but can
>> be as high as the mid thousand
>>
>
>
>
>
>> I have no errors when I run through the program, and I have it
>> outputting the values listed above. This is where the frustrating part
>> comes. When I graph the values, they're not the whole integer's listed
>> as the value of $SQLJoinr. In fact, the numbers stored make no sense
>> whatsoever. I've run 'rrdtool dump' on the file to find the following:
>>
>> <rrd>
>> <version> 0003 </version>
>> <step> 86400 </step> <!-- Seconds -->
>> <lastupdate> 1176004800 </lastupdate> <!-- 2007-04-08 00:00:00
>> EDT -->
>>
>> <ds>
>> <name> sql </name>
>> <type> ABSOLUTE </type>
>> <minimal_heartbeat> 86400 </minimal_heartbeat>
>> <min> 0.0000000000e+00 </min>
>> <max> 1.0000000000e+07 </max>
>>
>> <!-- PDP Status -->
>> <last_ds> UNKN </last_ds>
>> <value> 4.1666666667e+00 </value>
>> <unknown_sec> 0 </unknown_sec>
>> </ds>
>> <rra>
>> <cf> MAX </cf>
>> <pdp_per_row> 1 </pdp_per_row> <!-- 86400 seconds -->
>>
>> <params>
>> <xff> 5.0000000000e-01 </xff>
>> </params>
>> <cdp_prep>
>> <ds>
>> <primary_value> 2.7584876543e-04 </primary_value>
>> <secondary_value> 0.0000000000e+00
>> </secondary_value>
>> <value> NaN </value>
>> <unknown_datapoints> 0 </unknown_datapoints>
>> </ds>
>> </cdp_prep>
>> <database>
>> <!-- 1990-11-03 19:00:00 EST / 657676800 -->
>> <row><v> NaN </v></row>
>> <!-- 1990-11-04 19:00:00 EST / 657763200 -->
>> <row><v> NaN </v></row>
>> <!-- 1990-11-05 19:00:00 EST / 657849600 -->
>> <row><v> NaN </v></row>
>> <!-- 1990-11-06 19:00:00 EST / 657936000 -->
>> <row><v> NaN </v></row>
>> ......<snip a whole bunch of dates, as to why it is going this far in
>> the past I have NO clue>.....
>>
>
> Because you told it to ? You told the program to create you a
> database storing 6000 samples at intervals of 86400 seconds, or 6000
> days. 6000 days is something in the region of 18 years so 1990 seems
> about right.
>
> It's a fundamental feature of an RRD which IS documented that it
> stores exactly the number of consolidated samples you tell it to and
> fills in values on a round robin basis. Ie your database size is
> fixed at the moment of creation, by inference filled with "nothing",
> and values are entered as time progresses with the oldest samples
> overwritten when the round robin pointer wraps around.
>
>
>
>> <!-- 2007-02-22 19:00:00 EST / 1172188800 -->
>> <row><v> NaN </v></row>
>> <!-- 2007-02-23 19:00:00 EST / 1172275200 -->
>> <row><v> 8.1018518519e-05 </v></row>
>> <!-- 2007-02-24 19:00:00 EST / 1172361600 -->
>> <row><v> 2.9176311728e-04 </v></row>
>> <!-- 2007-02-25 19:00:00 EST / 1172448000 -->
>> <row><v> 3.5638503086e-04 </v></row>
>> <!-- 2007-02-26 19:00:00 EST / 1172534400 -->
>> <row><v> 3.4047067901e-04 </v></row>
>> <!-- 2007-02-27 19:00:00 EST / 1172620800 -->
>>
> <snip>
>
>
>> Can someone please explain to me why this isnt working at all? Why does
>> it start all the way into the past back into the early 90's?
>>
>
> See above, because you told it to.
>
>
>> Why does it store the incorrect values?
>>
>
> Well to start with, you haven't said what the correct values are,
> beyond an indication of the range. But picking the first value of
> 8.1018518519e-05, multiply this by 86400 and you get 7.000128 - near
> enough 7, is that what you expected ?
>
> Let me repeat this, it seems to be one of the most misunderstood bits
> of the program. It only ever stores rates. Whatever you feed it, and
> whatever those numbers might relate to, internally they are all rates.
>
> So you feed in the number 7 after a one day interval. The program
> computes the rate as 7 / 86400 <somethings>/second and stores that -
> assuming you update on a step boundary.
>
> If your updates are not exactly on the step boundaries then the
> program will normalise what you feed it to fit. For example, if you
> do updates at half-time (ie 12 noon), then each stored sample will be
> 50% from one update, and 50% from the next. If you update at 6am,
> then stored samples would be 75% from one update, 25% from the next.
>
> In your case I think it's simply a matter of scaling. You can either
> multiply what you feed in by 86400, or you can multiply what comes
> out by 86400 when you come to graph it.
>
>
> _______________________________________________
> rrd-users mailing list
> rrd-users at lists.oetiker.ch
> https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users
>
More information about the rrd-users
mailing list