Increasing RRD Retention Intervals w/o Data Loss



It is possible to increase the retention of your existing RRD data, without data loss, subject to some caveats.

You can accomplish this in a few ways:

  • Add additional rows to existing RRAs
  • Add new RRAs

I’ve successfully taken the first approach.

The basic procedure:

  • Update all of the RRD configuration in all of OpenNMS’s xml files.
  • Restart OpenNMS.
  • Tune the existing RRD files to increase their retention going forwards.

The final step can be done with a command like this:

find /var/opennms/rrd -name '*.rrd' -print0 | while read -d $'\0' f ; do sudo rrdtool tune "$f" 'RRA#0:=8928' 'RRA#2:=1830' 'RRA#3:=1830' 'RRA#4:=1830' ; done

That increases things to:

  • keep 5 minute averages for 1 month
  • keep daily average, min, max for 5 years

You’ll want to update all the instances of RRD configuration to match, e.g.:

      <rrd step="300">

More information is available in the rrdtune documentation.

Note: the above is only applicable to those using org.opennms.timeseries.strategy=rrd and org.opennms.rrd.strategyClass=org.opennms.netmgt.rrd.rrdtool.MultithreadedJniRrdStrategy (RRDtool); if you are using JRobin (org.opennms.rrd.strategyClass=org.opennms.netmgt.rrd.jrobin.JRobinRrdStrategy), then this will not work.

If you are using Newts, then the RRA configuration is not applicable. You can adjust the org.opennms.newts.config.ttl property to increase the overall TTL for your data.