[rrd-developers] How to create a new Data Type and Consolidation Function?

Long long_at_work at yahoo.ca
Fri Feb 4 18:53:00 CET 2011


Hi Tobi, Steve,

Thanks for answering so fast !

I'll use real rrdtool command with real parameters to illustrate my case to
make sure we all understand what I need. Hopefully we can come up with a
less complicated solution than creating a new Data Type and CF.

This is the "rrdtool create" command generated by Cacti from my configured
step size and retention period (rows):
/usr/bin/rrdtool create \
/path/file.rrd \
--step 60  \                      # polling every minute
DS:ds_name:COUNTER:120:0:U \
RRA:AVERAGE:0.5:1:2160 \          # RRA_1: 1 min average (1 step), 1.5 days
retention (2160 rows)
RRA:AVERAGE:0.5:5:2310 \          # RRA_2: 5 min average (5 steps), 8 days
retention (2310 rows)
RRA:AVERAGE:0.5:30:2020 \         # RRA_3: 30 min average (30 steps), 6
weeks retention (2020 rows)
RRA:AVERAGE:0.5:60:9380 \         # RRA_4: 1 hour average (60 steps), 13
months retention (9380 rows)
RRA:AVERAGE:0.5:720:1475 \        # RRA_5: 12 hours average (720 steps), 2
years retention (1475 rows)

For each of the RRA specified, Cacti will create different corresponding
"rrdtool graph" command (see at end). So I need a SUM-CF for each level of
consolidation, not a total for a whole day/week/month period (not a total
for the range of the produced graph).

Cacti simply generate a graph command for each RRA (see at end). As I zoom
in and out, Cacti simply re-generate the time range. The graph has to be
generated by RRDTool. So I can not hardcode any "multiply-back" value using
a CDEF (example multiple count/sec stored by 300 sec to get to total per 5
mins) because the zoom-in ranges are all dynamic by the viewer of the graph.

So my original idea to achieve what I need is to create a new Data Type that
has input COUNTER and stored the calculated value as difference (curr_val -
prev_val) and not as rate (curr_val - prev_val / step_size). Also create a
SUM CF that will add all the differences (PDP).

I am open for any other suggestions as I am clearly not expert at RRDTool
yet.

Here's the corresponding "rrdtool graph" command generated by Cacti:
/usr/bin/rrdtool graph - \
--imgformat=PNG \
--start=-604800 \                 # This range is associated to RRA_3, at
this level of Consolidation, I want the total for each 30 mins, i.e
count/sec stored multiply by 60s*30steps
--end=-1800 \
--title=' title ' \
--rigid \
--base=1000 \
--height=150 \
--width=600 \
--alt-autoscale-max \
--lower-limit=0 \
--vertical-label='Count' \
--slope-mode \
--font TITLE:10: \
--font AXIS:8: \
--font LEGEND:8: \
--font UNIT:8: \
DEF:a="/path/file.rrd":ds_name:AVERAGE \
AREA:a#96E78AFF:"Volume"  \
GPRINT:a:LAST:"Current\:%8.2lf %s"  \
GPRINT:a:AVERAGE:"Average\:%8.2lf %s"  \
GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" 

--start=-14400 \                # This range is associated to RRA_1, at this
level of Consolidation, I want the total for each 1 mins, i.e count/sec
stored multiply by 60s*1steps
--end=-60 \

--start=-86400 \                # This range is associated to RRA_2, at this
level of Consolidation, I want the total for each 5 mins, i.e count/sec
stored multiply by 60s*5steps
--end=-300 \

--start=-2678400 \              # This range is associated to RRA_4, at this
level of Consolidation, I want the total for each 1 hour, i.e count/sec
stored multiply by 60s*60steps
--end=-3600 \ 

--start=-33053184 \             # This range is associated to RRA_5, at this
level of Consolidation, I want the total for each 12 hours, i.e count/sec
stored multiply by 60s*720steps
--end=-43200 \ 


Thanks,
Long
-- 
View this message in context: http://rrd-mailinglists.937164.n2.nabble.com/How-to-create-a-new-Data-Type-and-Consolidation-Function-tp5990330p5993380.html
Sent from the RRDtool Developers Mailinglist mailing list archive at Nabble.com.



More information about the rrd-developers mailing list