RRD¶
Overview¶
RRDs (Round Robin Databases) consist of DS (Data Source) that will be saved in RRAs (Round Robin Archives)
Each RRA has a fixed size of slots, that will be automatically rotated
Every update on a rrd triggers every RRA to be updated by a consolidation function (CF) like MIN, MAX or AVERAGE
Create a rrd¶
DS defines Data Source with name load, type GAUGE (just save the value as is), every 60 seconds we expect a value between 0 and unlimited
The first RRA has 60 slots and saves a single value in it if it greater than 0.1
The second RRA has 4 slots and saves the MAX value of the last 15 values
rrdtool create some.rrd DS:load:GAUGE:60:0:U RRA:AVERAGE:0.1:1:60 RRA:MAX:0.1:15:4
Show meta data about a rrd¶
rrdtool info some.rrd
Insert values¶
rrdtool update some.rrd `date +%s`:`cat /proc/loadavg| cut -d " " -f 1`
Display values¶
from yesterday till now
rrdtool fetch some.rrd AVERAGE --start `date +%s -d "yesterday"` --end `date +%s`
from specific timespan
rrdtool fetch some.rrd MAX --start `date +%s -d "2013-02-15 18:00:00"` --end `date +%s -d "2013-02-15 19:00:00"`
Create a graph image¶
The graph will be drawn as LINE with a width of 2 pixel and the color red
rrdtool graph test.png --start `date +%s -d "yesterday"` --end `date +%s` DEF:myload=some.rrd:load:AVERAGE LINE2:myload#FF0000
Calculating stuff¶
Graph values multiplied by 10
Add the following to your graph command
CDEF:myvalue=myload,10,\*
To really graph the ne myvalue add
LINE2:myvalue#0000ff
Aggregate two graphs¶
First define two DEFs
Add both by using a CDEF
rrdtool graph test.png --start `date +%s -d "yesterday"` --end `date +%s` DEF:load1=some.rrd:load:AVERAGE DEF:load2=another.rrd:load:AVERAGE CDEF:total=load1,load2,\+ LINE2:total#0000ff
Export data as XML¶
Everything
rrdtool dump some.rrd
Or specific
rrdtool xport --start `date +%s -d "yesterday"` --end `date +%s` DEF:load1=some.rrd:load:AVERAGE XPORT:load1
Resize Databases¶
for DIR in $(ls); do echo "Entering $DIR"; cd $DIR/snmp; for RRD in $(find . |grep rrd|grep -v resize); do echo "Resizing $RRD"; rrdtool resize $RRD 12 GROW 10800; mv -f resize.rrd $RRD; rrdtool resize $RRD 13 GROW 10800; mv -f resize.rrd $RRD; rrdtool resize $RRD 14 GROW 10800; mv -f resize.rrd $RRD; done; cd ../..; done