rrdtool

How to create a DS to store the accumulated result of another DS with rrdtool


I want to create a rrd file with two data souces incouded. One stores the original value the data, name it 'dc'. The other stores the accumulated result of 'dc', name it 'total'. The expected formula is current(total) = previous(total) + current(dc). For example, If I update the data sequence (2, 3, 5, 4, 9) to the rrd file, I want 'dc' is (2, 3, 5, 4, 9) and 'total' is (2, 5, 15, 19, 28).

I tried to create the rrd file with the command line below. The command fails and says that the PREV are not supported with DS COMPUTE.

rrdtool create test.rrd --start 920804700 --step 300 \
  DS:dc:GAUGE:600:0:U \
  DS:total:COMPUTE:PREV,dc,ADDNAN \
  RRA:AVERAGE:0.5:1:1200 \
  RRA:MIN:0.5:12:2400 \
  RRA:MAX:0.5:12:2400 \
  RRA:AVERAGE:0.5:12:2400

Is there an alternative manner to define the DS 'total' (DS:total:COMPUTE:PREV,dc,ADDNAN) ?


Solution

  • rrdtool does not store 'original' values ... it rather samples to signal you provide via the update command at the rate you defined when you setup the database ... in your case 1/300 Hz

    that said, a total does not make much sense ...

    what you can do with a single DS though, is build the average value over a time range and multiply the result with the number of seconds in the time range and thus arrive at the 'total'.