Hi,

I'm testing a change to the RRD (round robin database) creation script to watch more 
than just the last 24 hours of data.

The syntax for rrdcreate (or 'rrdtool.exe create') is rather convoluted
and it usually takes a few minutes in a quiet place with a cup of coffee
to sort out. See
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/rrdcreate.html
if you don't believe me.

Servers Alive writes a db creation script of the form:

rrdtool.exe create salive.1.rrd -s 120 DS:roundtrip:GAUGE:720:U:U
RRA:MAX:0.5:1:720

Going a little into the gory details of this command, we have a step
time of 2 minutes (-s 120), a data source definition
"DS:roundtrip:GAUGE:720:U:U", and one round-robin archive (RRA)
definition of "RRA:MAX:0.5:1:720"

"DS:roundtrip:GAUGE:720:U:U" basically tells rrdtool to create a new data source 
called "roundtrip" as a gauge (ranges between some min and max value) that will return 
"UNKNOWN" as the data value if more than 720 seconds (12 min) past since the last data 
point. The min and max are set to unknown ("U".)

That's all well and good but it doesn't tell us much about how
historical data is stored. The great thing about RRDs is that they never
grow in size once they've been created; the downside is that you have to
tell RRDtool how to consolidate data points into RRAs - therein lies the
most confusing part of configuring RRDtool.

One quick note before the brain-hurting part of the post: my goal is to generate 
trends in system response time and availability, not calculate good availability 
statistics (e.g. for SLA monitoring.) For that, you'd need raw data, not the 
consolidated data stored in the RRAs. For now I'm trying to produce graphs which show 
that my systems have been consistently available over some recent interval (i.e. eye 
candy.)

In SA, the RRA definition (and you can have more than one) defaults to 
"RRA:MAX:0.5:1:720". Translating this to english, this means "create an RRA using the 
MAX consolidation function, storing a known value if up to half (0.5) of the raw data 
is UNKNOWN (any more than that and the consolidated value is also UNKNOWN), 
consolidating 1 step (2 minute interval; from -s above) into a single row and saving 
the last 720 rows.

That should probably make your head hurt. Now, take 720 rows * 1 step/row * 2 
minutes/step to get 1440 minutes of saved data in this RRA. That's one day's worth of 
data, sliced into 2 minute intervals.

That's all well and good, but what I want is up to two years of consolidated data, 
with different consolidation intervals. That is, if I look at the last quarter's 
performance, maybe this data needs to be sliced into days, not 2 minute intervals. I 
could get the same information from 2 minute intervals but that consumes a lot of 
processing power and disk space and it's not really taking advantage of RRDtool's 
strength in consolidating data.

Being lazy, and knowing that MRTG's RRD creation script builds RRDs that do what I 
want, I looked for the sections on how it calculates steps and rows and came up with 
this (all one line):

rrdtool.exe create salive.1.rrd -s 120 DS:roundtrip:GAUGE:720:U:U
RRA:MAX:0.5:1:720 RRA:MAX:0.5:15:800 RRA:MAX:0.5:60:800
RRA:MAX:0.5:720:800 RRA:AVERAGE:0.5:1:720 RRA:AVERAGE:0.5:15:800
RRA:AVERAGE:0.5:60:800 RRA:AVERAGE:0.5:720:800 

Here's a brief description:

RRA:MAX:0.5:1:720 - consolidates into 720 2-minute time slices (1d)

RRA:MAX:0.5:15:800 - consolidates into 800 30-minute slices (16d 16h)

RRA:MAX:0.5:60:800 - consolidates into 800 120-minute slices (66d 16h)

RRA:MAX:0.5:720:800 - consolidates into 800 1440-minute slices (800d)

The last four RRA arguments do the same but use the AVERAGE consolidation function. 
How does one make use of that? "Easy" - just change your graph creation script from:

rrdtool.exe graph hour_salive.1.png -s -3600 --imgformat PNG
--title="Test 1: max response time"
DEF:sa_1=salive.1.rrd:roundtrip:MAX LINE1:sa_1#0000FF:"Response Time (ms)"

to

rrdtool.exe graph hour_salive.1.png -s -3600 --imgformat PNG
--title="Test 1: avg response time"
DEF:sa_1=salive.1.rrd:roundtrip:AVERAGE LINE1:sa_1#0000FF:"Response Time (ms)"

(I added the "--imgformat PNG" part because PNG images are smaller than GIFs and 
despite the expiration of the LZW compression patent, I still hold a grudge against 
proprietary, patent-encumbered data formats.)

Plotting min/avg/max response time on the same graph is left as an exercise for bored 
admins. :)

I made the change about 90 minutes ago so I won't see if this worked until this time 
tomorrow.

Note that running rrdcreate against extant databases will completely
reset them so it's important to design your RRAs well the first time;
you won't want to change them once you start saving substantial amounts
of data. In this case, I lose a day's worth of data so it's no big deal.
However, other people have other needs, so I'm forwarding this along to
the list as an FYI. Ideally we can get some nice one-size-fits-all
presets built into SA and nobody (else) will have to hurt their brain
trying to sort out the arguments to rrdcreate. :)

hth,

-- Bob
To unsubscribe from a list, send a mail message to [EMAIL PROTECTED]
With the following in the body of the message:
   unsubscribe SAlive

Reply via email to