<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Linux%2FRRDtool</id>
	<title>Linux/RRDtool - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Linux%2FRRDtool"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Linux/RRDtool&amp;action=history"/>
	<updated>2026-05-08T18:46:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=Linux/RRDtool&amp;diff=2737&amp;oldid=prev</id>
		<title>Kenneth: /* Guide */</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Linux/RRDtool&amp;diff=2737&amp;oldid=prev"/>
		<updated>2015-12-16T06:07:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Guide&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== RRDtool ==&lt;br /&gt;
&lt;br /&gt;
http://oss.oetiker.ch/rrdtool/&lt;br /&gt;
&lt;br /&gt;
rrdtool - time-series data storage and display system (programs)&lt;br /&gt;
The Round Robin Database Tool (RRDtool) is a system to store and display&lt;br /&gt;
time-series data (e.g. network bandwidth, machine-room temperature,&lt;br /&gt;
server load average). It stores the data in Round Robin Databases (RRDs),&lt;br /&gt;
a very compact way that will not expand over time. RRDtool processes the&lt;br /&gt;
extracted data to enforce a certain data density, allowing for useful&lt;br /&gt;
graphical representation of data values.&lt;br /&gt;
&lt;br /&gt;
RRDtool is often used via various wrappers that can poll data from devices&lt;br /&gt;
and feed data into RRDs, as well as provide a friendlier user interface and&lt;br /&gt;
customized graphs.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
RRDtool - RRDtool Documentation - https://oss.oetiker.ch/rrdtool/doc/index.en.html&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
rrdtool&lt;br /&gt;
    Round Robin Database Tool &lt;br /&gt;
rrdcached&lt;br /&gt;
    Data caching daemon for rrdtool &lt;br /&gt;
librrd&lt;br /&gt;
    RRD library functions &lt;br /&gt;
rrdbuild&lt;br /&gt;
    Instructions for building RRDtool &lt;br /&gt;
rrdcgi&lt;br /&gt;
    Create web pages containing RRD graphs based on templates &lt;br /&gt;
rrdcreate&lt;br /&gt;
    Set up a new Round Robin Database &lt;br /&gt;
rrddump&lt;br /&gt;
    dump the contents of an RRD to XML format &lt;br /&gt;
rrdfetch&lt;br /&gt;
    Fetch data from an RRD. &lt;br /&gt;
rrdfirst&lt;br /&gt;
    Return the date of the first data sample in an RRA within an RRD &lt;br /&gt;
rrdflushcached&lt;br /&gt;
    Flush the values for a spcific RRD file from memory. &lt;br /&gt;
rrdgraph_data&lt;br /&gt;
    preparing data for graphing in rrdtool graph &lt;br /&gt;
rrdgraph_examples&lt;br /&gt;
    Examples for rrdtool graph &lt;br /&gt;
rrdgraph_graph&lt;br /&gt;
    rrdtool graph command reference &lt;br /&gt;
rrdgraph_libdbi&lt;br /&gt;
    fetching data for graphing in rrdtool graph via libdbi &lt;br /&gt;
rrdgraph&lt;br /&gt;
    Round Robin Database tool graphing functions &lt;br /&gt;
rrdgraph_rpn&lt;br /&gt;
    About RPN Math in rrdtool graph &lt;br /&gt;
rrdinfo&lt;br /&gt;
    extract header information from an RRD &lt;br /&gt;
rrdlast&lt;br /&gt;
    Return the date of the last data sample in an RRD &lt;br /&gt;
rrdlastupdate&lt;br /&gt;
    Return the most recent update to an RRD &lt;br /&gt;
rrdrados&lt;br /&gt;
    Creating, updating and retrieving RRD files from Ceph &lt;br /&gt;
rrdresize&lt;br /&gt;
    alters the size of an RRA and creates a new .rrd file &lt;br /&gt;
rrdrestore&lt;br /&gt;
    Restore the contents of an RRD from its XML dump format &lt;br /&gt;
rrdtune&lt;br /&gt;
    Modify some basic properties of a Round Robin Database &lt;br /&gt;
rrdupdate&lt;br /&gt;
    Store a new set of values into the RRD &lt;br /&gt;
rrdxport&lt;br /&gt;
    Export data in XML format based on data from one or several RRD&lt;br /&gt;
&lt;br /&gt;
== Installation ===&lt;br /&gt;
&lt;br /&gt;
 yum install rrdtool&lt;br /&gt;
&lt;br /&gt;
 apt-get install rrdtool&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
&lt;br /&gt;
Getting Started with RRDtool - http://www.cuddletech.com/articles/rrd/&lt;br /&gt;
&lt;br /&gt;
Overview:&lt;br /&gt;
# Create an empty RRD database using &amp;#039;&amp;#039;&amp;#039;rrdtool create&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Utilize a script and/or the cron to add data to the database using &amp;#039;&amp;#039;&amp;#039;rrdtool update&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Generate, usually via script, custom output graphs using &amp;#039;&amp;#039;&amp;#039;rrdtool graph&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Create RRD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rrdtool create records.rrd \&lt;br /&gt;
--start N --step 300 \&lt;br /&gt;
DS:probe1-temp:GAUGE:600:55:95 \&lt;br /&gt;
DS:probe2-temp:GAUGE:600:55:95 \&lt;br /&gt;
DS:probe3-temp:GAUGE:600:55:95 \&lt;br /&gt;
DS:probe4-temp:GAUGE:600:55:95 \&lt;br /&gt;
RRA:MIN:0.5:12:1440 \&lt;br /&gt;
RRA:MAX:0.5:12:1440 \&lt;br /&gt;
RRA:AVERAGE:0.5:1:1440&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a RRD with 5 min interval (300), 4 guages, 10 min till error (600), 55-95 range, with 50% unknowns, 12 points per record, and 1440 records&lt;br /&gt;
&lt;br /&gt;
Update RRD:&lt;br /&gt;
 rrdtool update records.rrd &amp;quot;N:64:57:92:86&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Graph:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rrdtool graph records.png -a PNG --title=&amp;quot;TempTrax&amp;quot; \&lt;br /&gt;
--vertical-label &amp;quot;Deg F&amp;quot; \&lt;br /&gt;
&amp;#039;DEF:probe1=records.rrd:probe1-temp:AVERAGE&amp;#039; \&lt;br /&gt;
&amp;#039;DEF:probe2=records.rrd:probe2-temp:AVERAGE&amp;#039; \&lt;br /&gt;
&amp;#039;DEF:probe3=records.rrd:probe3-temp:AVERAGE&amp;#039; \&lt;br /&gt;
&amp;#039;DEF:probe4=records.rrd:probe4-temp:AVERAGE&amp;#039; \&lt;br /&gt;
&amp;#039;LINE1:probe1#ff0000:Switch Probe&amp;#039; \&lt;br /&gt;
&amp;#039;LINE1:probe2#0400ff:Server Probe&amp;#039; \&lt;br /&gt;
&amp;#039;AREA:probe3#cccccc:HVAC&amp;#039; \&lt;br /&gt;
&amp;#039;LINE1:probe4#35b73d:QA Lab Probe&amp;#039; \&lt;br /&gt;
&amp;#039;GPRINT:probe1:LAST:Switch Side Last Temp\: %2.1lf F&amp;#039; \&lt;br /&gt;
&amp;#039;GPRINT:probe3:LAST:HVAC Output Last Temp\: %2.1lf F\j&amp;#039; \&lt;br /&gt;
&amp;#039;GPRINT:probe2:LAST:Server Side Last Temp\: %2.1lf F&amp;#039; \&lt;br /&gt;
&amp;#039;GPRINT:probe4:LAST:QA Lab Last Temp\: %2.1lf F\j&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
See last update:&lt;br /&gt;
 rrdtool lastupdate records.rrd&lt;br /&gt;
&lt;br /&gt;
Dump table: (import into Excel)&lt;br /&gt;
 rrdtool dump records.rrd &amp;gt; records.xml&lt;br /&gt;
&lt;br /&gt;
== My Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Created Using:&lt;br /&gt;
#   rrdtool create temperature.rrd --step 300 DS:cpu:GAUGE:600:0:100 DS:disk1:GAUGE:600:0:100 DS:disk2:GAUGE:600:0:100 DS:disk3:GAUGE:600:0:100 DS:disk4:GAUGE:600:0:100 DS:disk5:GAUGE:600:0:100 DS:disk6:GAUGE:600:0:100 DS:disk7:GAUGE:600:0:100 DS:disk8:GAUGE:600:0:100 DS:disk9:GAUGE:600:0:100 RRA:AVERAGE:0.5:1:14400 RRA:AVERAGE:0.5:6:9600 RRA:AVERAGE:0.5:36:6000&lt;br /&gt;
&lt;br /&gt;
# Update Using:&lt;br /&gt;
# rrdtool update temperature.rrd N:$CPU:$DISK1:$DISK2:$DISK3:$DISK4:$DISK5:$DISK6:$DISK7:$DISK8:$DISK9&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; != &amp;quot;graph&amp;quot; ] ; then&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#DISK1=`/usr/sbin/hddtemp -n /dev/sda`&lt;br /&gt;
#DISK2=`/usr/sbin/hddtemp -n /dev/sdb`&lt;br /&gt;
#DISK3=`/usr/sbin/hddtemp -n /dev/sdc`&lt;br /&gt;
DISK1=&lt;br /&gt;
DISK2=&lt;br /&gt;
DISK3=&lt;br /&gt;
&lt;br /&gt;
DISK4=`/usr/sbin/hddtemp -n /dev/hdc`&lt;br /&gt;
DISK5=`/usr/sbin/hddtemp -n /dev/hdd`&lt;br /&gt;
DISK6=`/usr/sbin/hddtemp -n /dev/hde`&lt;br /&gt;
DISK7=`/usr/sbin/hddtemp -n /dev/hdf`&lt;br /&gt;
DISK8=`/usr/sbin/hddtemp -n /dev/hdg`&lt;br /&gt;
DISK9=`/usr/sbin/hddtemp -n /dev/hdh`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DISK1&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK1= ; fi&lt;br /&gt;
echo &amp;quot;$DISK2&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK2= ; fi&lt;br /&gt;
echo &amp;quot;$DISK3&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK3= ; fi&lt;br /&gt;
echo &amp;quot;$DISK4&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK4= ; fi&lt;br /&gt;
echo &amp;quot;$DISK5&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK5= ; fi&lt;br /&gt;
echo &amp;quot;$DISK6&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK6= ; fi&lt;br /&gt;
echo &amp;quot;$DISK7&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK7= ; fi&lt;br /&gt;
echo &amp;quot;$DISK8&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK8= ; fi&lt;br /&gt;
echo &amp;quot;$DISK9&amp;quot; | grep -e &amp;quot;^[0-9]*$&amp;quot; ; if [ $? != 0 ] ; then DISK9= ; fi&lt;br /&gt;
&lt;br /&gt;
# K8:&lt;br /&gt;
#   /sys/bus/pci/drivers/k8temp/0000:00:18.3/temp1_input&lt;br /&gt;
# K10:&lt;br /&gt;
#   /sys/bus/pci/drivers/k10temp/0000:00:18.3/temp1_input&lt;br /&gt;
#   /sys/devices/pci0000:00/0000:00:18.3/temp1_input&lt;br /&gt;
CPU=`cat /sys/bus/pci/drivers/k8temp/0000:00:18.3/temp1_input`&lt;br /&gt;
CPU=$(( ( $CPU + 500 ) / 1000 ))&lt;br /&gt;
&lt;br /&gt;
/usr/bin/rrdtool update /opt/admin/temperature.rrd N:$CPU:$DISK1:$DISK2:$DISK3:$DISK4:$DISK5:$DISK6:$DISK7:$DISK8:$DISK9&lt;br /&gt;
echo &amp;#039;/usr/bin/rrdtool update /opt/admin/temperature.rrd N:$CPU:$DISK1:$DISK2:$DISK3:$DISK4:$DISK5:$DISK6:$DISK7:$DISK8:$DISK9&amp;#039;&lt;br /&gt;
echo &amp;quot;/usr/bin/rrdtool update /opt/admin/temperature.rrd N:$CPU:$DISK1:$DISK2:$DISK3:$DISK4:$DISK5:$DISK6:$DISK7:$DISK8:$DISK9&amp;quot;&lt;br /&gt;
logger &amp;quot;/usr/bin/rrdtool update /opt/admin/temperature.rrd N:$CPU:$DISK1:$DISK2:$DISK3:$DISK4:$DISK5:$DISK6:$DISK7:$DISK8:$DISK9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AREAOPTIONS=&amp;quot; \&lt;br /&gt;
 CDEF:online=ds,UN,0,ds,IF,0,GT,INF,UNKN,IF \&lt;br /&gt;
 CDEF:offline=ds,UN,0,ds,IF,0,GT,UNKN,INF,IF \&lt;br /&gt;
 AREA:online#EDFEED \&lt;br /&gt;
 AREA:offline#FEEDED \&lt;br /&gt;
 AREA:ds#ffcccc &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRAPHOPTIONS=&amp;quot;-v &amp;quot;Celcius&amp;quot; -x none -l 35 -u 45 -r -E&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/cputemp.png DEF:ds=/opt/admin/temperature.rrd:cpu:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;CPU Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRAPHOPTIONS=&amp;quot;-v &amp;quot;Celcius&amp;quot; -x none -l 30 -u 45 -r -E&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk1temp.png DEF:ds=/opt/admin/temperature.rrd:disk1:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk1 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk2temp.png DEF:ds=/opt/admin/temperature.rrd:disk2:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk2 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk3temp.png DEF:ds=/opt/admin/temperature.rrd:disk3:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk3 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk4temp.png DEF:ds=/opt/admin/temperature.rrd:disk4:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk4 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk5temp.png DEF:ds=/opt/admin/temperature.rrd:disk5:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk5 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk6temp.png DEF:ds=/opt/admin/temperature.rrd:disk6:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk6 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk7temp.png DEF:ds=/opt/admin/temperature.rrd:disk7:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk7 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk8temp.png DEF:ds=/opt/admin/temperature.rrd:disk8:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk8 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
/usr/bin/rrdtool graph /www/t0e/disk9temp.png DEF:ds=/opt/admin/temperature.rrd:disk9:AVERAGE \&lt;br /&gt;
 $AREAOPTIONS \&lt;br /&gt;
 LINE3:ds#ff0000:&amp;quot;Disk9 HDD Temperature&amp;quot; $GRAPHOPTIONS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>