Sorry about the late reply, I've been on holiday for a bit.

While I have not done any testing to validate this, this is my
interpretation of the documentation for RRD. Viewing the RRD create
command, I think you might be skewing your own data set. 

First, it must be clear that the round robin databases do NOT directly
record or evaluate the values collected by Zenoss. RRD's track changes
over fixed periods of time. Data in the RRA's are recorded in what RRD
term Primary Data Points. It should first be noted that we control the
execution time of the performance monitors, but do not control when the
data is received, due to network latency, CPU utilization, etc. RRDs
compensate for this fact by calculating the value that it records at a
certain PDP interval, giving you a more normalized data set. So the only
variable that is recorded is the value, not the value and the time. 

In an ideal situation, you should have multiple results to factor for
each primary data point, and multiple PDPs for each RRA record recorded.

Lets look at an example. We'll use your current configuration:

Syntax:
RRA:AVERAGE | MIN | MAX | LAST:xff:steps:rows

RRA:AVERAGE:0.5:1:525600
RRA:MAX:0.5:1:525600

If we were to manually record the value of a guage

  time=0  value=5000  (This is the last recorded data point)
A  t=+12   v=5400 (400/12sec=33.333 per second)
B  t=+30   v=5700 (700/30sec=23.333 per second)
C  t=+42   v=Unk  (unknown)
D  t=+56   v=6600 (1600/56sec=28.571 per second)
E  t=+60 equals next PDP (but no value recorded)
F  t=+88   v=4600 (-400/78sec=-4.545 per second)

in theory, Zenoss could return any one of these values depending on when
the collection agent returned a value. If Zenoss returned A, you would
calculate the PDP at T=+60 at 33.333*60 seconds. If Zenoss returned B,
then you calculate t=+60 as 23.333*60seconds. If Zenoss returned D, then
you calculate the PDP at t=+60 as 28.571*60seconds. If it returns A, B,
C, and D, it would keep replacing t=+60 with each value until the step
time had elapsed. Now if Zenoss only returned F, you could get both the
t=+60 AND the t=+120 recorded at 4.545*60 and 4.545*120 respectively.
You could see how this could begin to skew your data. 

Now, you've set your RRA to record every 1 steps, so you record every
PDP into your Round Robin Archive (one for every calculated 60 sec
value). Your rows are 525600 so you save one years worth of data
(60*24*365=525600). 

I stated that Zenoss may be configured to record a single data point, if
your check cycle time (60 secs) is equal to your RRD PDP. If you begin
your collection every 60 seconds, you may be getting quite a few
Unknowns in your data set (as you are only doing one lookup for the PDP
cycle, it is likely you will not get a value for every time period.) The
xff of .5 means that if more than 50% of the results are unknown (I.E.
fall outside of the MIN and MAX values you configured for your Data
Point), than it records an UNKNOWN for the PDP, and since your step is
one, that also gets recorded in your RRA. Because you are recording
every PDP (your steps=1), your consilidation function (AVERAGE, MIN, MAX
and LAST) is irrelevant. They will always be equal because there is only
one step. This is what you are seeing. You can verify your PDP cycle
(step) time by using "rrdtool info /path/to/rrdfile"

Now lets suppose you change your PDP cycle(step) time to 10 seconds and
your RRA step value to 6. We're now going to work with the calculated
PDP values in the RRD file. If you had the following PDP values:

t=+10  PDPvalue=6400
t=+20  PDPvalue=4300
t=+30  PDPvalue=unknown
t=+40  PDPvalue=unknown
t=+50  PDPvalue=5700
t=+60  PDPvalue=5300

So if your Consolidation Function was LAST, you would record 5300 in
your RRA for this PDP set. If it was MIN, you would record 4300, if it
was MAX, you would record 6400 and if it was AVERAGE, you would record
5425 ((6400+4300+5700+5300)/4). Note that the Consolidation Function
(MIN,MAX,LAST,AVERAGE) effectively only comes into play when you have a
step value > 2.

If you are trying to graph the maximum value for a specific time period,
assuming a 60 second PDP cycle, I would consider adding the following
lines to your RRD create command:

RRA:MAX:0.5:1440:730 (max PDP value over 24 hours, keep 2 years)
RRA:MAX:0.5:10080:730 (max PDP value over the last week, keep 2 years)
RRA:MAX:0.5:40320:104 (max PDP over a 4 week period)

If you only want to print the maximum bandwidth available on the graph,
use the HRULE statement in you graph command, and for sanity, set your
MAX Y to a reasonable value just above your HRULE value (so it doesn't
keep changing scale as your values do). 

On Tue, 2007-07-03 at 11:57 +0000, Sator81 wrote:
-- 
James D. Roman
IT Network Administration

Terranet Inc.On contract to:
Science Systems and Applications, Inc.

_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users

Reply via email to