RRD Topics¶
We use RRD to store monitoring data. The data is stored in the system root:
RRD_HOME=/opt/zenoss/perf/Devices
Using RRDtool to Query the Data¶
If you want to check or verify data stored in RRD, simply navigage to $RRD_HOME and look for your data file:
find . -name "*.rrd"
find . -name "*my_special_name*"
RRDtool Info¶
Once you find the correct file you can query it with rrdtool . First use the info method:
rrdtool info path/to/my/file.rrd
You should get something that looks like the following:
filename = "./oracle_instances/orainst-XE/oracle_tablespaces/XE_USERS/TableSpaceDU_bytes_used.rrd"
rrd_version = "0003"
step = 300
last_update = 1386705130
header_size = 1832
ds[ds0].index = 0
ds[ds0].type = "GAUGE"
ds[ds0].minimal_heartbeat = 900
ds[ds0].min = NaN
ds[ds0].max = NaN
ds[ds0].last_ds = "104857600.0"
ds[ds0].value = 1.3631488000e+10
ds[ds0].unknown_sec = 0
rra[0].cf = "AVERAGE"
rra[0].rows = 600
rra[0].cur_row = 347
rra[0].pdp_per_row = 1
rra[0].xff = 5.0000000000e-01
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0
rra[1].cf = "AVERAGE"
rra[1].rows = 600
rra[1].cur_row = 394
rra[1].pdp_per_row = 6
rra[1].xff = 5.0000000000e-01
rra[1].cdp_prep[0].value = 4.1943040000e+08
rra[1].cdp_prep[0].unknown_datapoints = 0
rra[2].cf = "AVERAGE"
rra[2].rows = 600
rra[2].cur_row = 150
rra[2].pdp_per_row = 24
rra[2].xff = 5.0000000000e-01
rra[2].cdp_prep[0].value = 1.1534336000e+09
rra[2].cdp_prep[0].unknown_datapoints = 11
rra[3].cf = "AVERAGE"
rra[3].rows = 600
rra[3].cur_row = 537
rra[3].pdp_per_row = 288
rra[3].xff = 5.0000000000e-01
rra[3].cdp_prep[0].value = 1.4470348800e+10
rra[3].cdp_prep[0].unknown_datapoints = 100
rra[4].cf = "MAX"
rra[4].rows = 600
rra[4].cur_row = 515
rra[4].pdp_per_row = 6
rra[4].xff = 5.0000000000e-01
rra[4].cdp_prep[0].value = 1.0485760000e+08
rra[4].cdp_prep[0].unknown_datapoints = 0
rra[5].cf = "MAX"
rra[5].rows = 600
rra[5].cur_row = 517
rra[5].pdp_per_row = 24
rra[5].xff = 5.0000000000e-01
rra[5].cdp_prep[0].value = 1.0485760000e+08
rra[5].cdp_prep[0].unknown_datapoints = 11
rra[6].cf = "MAX"
rra[6].rows = 600
rra[6].cur_row = 206
rra[6].pdp_per_row = 288
rra[6].xff = 5.0000000000e-01
rra[6].cdp_prep[0].value = 1.0485760000e+08
rra[6].cdp_prep[0].unknown_datapoints = 100
RRDtool Dump¶
Now you can dump your data in XML format to see the entire dataset:
rrdtool dump path/to/my/file.rrd
You should get something that looks like the following:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
<!-- Round Robin Database Dump -->
<rrd>
<version>0003</version>
<step>300</step> <!-- Seconds -->
<lastupdate>1386704280</lastupdate> <!-- 2013-12-10 13:38:00 CST -->
<ds>
<name> ds0 </name>
<type> GAUGE </type>
<minimal_heartbeat>900</minimal_heartbeat>
<min>NaN</min>
<max>NaN</max>
<!-- PDP Status -->
<last_ds>104857600.0</last_ds>
<value>1.8874368000e+10</value>
<unknown_sec> 0 </unknown_sec>
</ds>
<!-- Round Robin Archives -->
<rra>
<cf>AVERAGE</cf>
<pdp_per_row>1</pdp_per_row> <!-- 300 seconds -->
<params>
<xff>5.0000000000e-01</xff>
</params>
<cdp_prep>
<ds>
<primary_value>1.0485760000e+08</primary_value>
<secondary_value>1.0485760000e+08</secondary_value>
<value>NaN</value>
<unknown_datapoints>0</unknown_datapoints>
</ds>
</cdp_prep>
<database>
<!-- 2013-12-08 11:40:00 CST / 1386524400 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 11:45:00 CST / 1386524700 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 11:50:00 CST / 1386525000 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 11:55:00 CST / 1386525300 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 12:00:00 CST / 1386525600 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 12:05:00 CST / 1386525900 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 12:10:00 CST / 1386526200 --> <row><v>1.0485760000e+08</v></row>
<!-- 2013-12-08 12:15:00 CST / 1386526500 --> <row><v>1.0485760000e+08</v></row>
.......
</database>
</rra>
</rrd>