Jump to content

RRDtool: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Tag: extraneous markup
No edit summary
 
(41 intermediate revisions by 35 users not shown)
Line 1: Line 1:
{{short description|Time series software}}
{{Refimprove|date=October 2013}}
{{Refimprove|date=October 2013}}
{{Infobox software
{{Infobox software
Line 6: Line 7:
| caption =
| caption =
| collapsible =
| collapsible =
| author = Tobi Oetiker
| author = Tobias Oetiker
| developer =
| developer =
| released =
| released = {{Date and age|1999|07|16}}
| latest release version = 1.7.0
| latest release version = 1.9.0
| latest release date = 17 May 2017<ref>{{cite web|url=https://github.com/oetiker/rrdtool-1.x/releases|title=Releases - oetiker/rrdtool-1.x|accessdate=18 May 2017|via=[[GitHub]]}}</ref>
| latest release date = 2024-07-29<ref>{{cite web | url=https://github.com/oetiker/rrdtool-1.x/releases | title=Releases · oetiker/Rrdtool-1.x | website=[[GitHub]] }}</ref>
| frequently updated =
| frequently updated =
| programming language = [[C (programming language)|C]]
| programming language = [[C (programming language)|C]]
Line 22: Line 23:
| website = {{URL|//oss.oetiker.ch/rrdtool/}}
| website = {{URL|//oss.oetiker.ch/rrdtool/}}
}}
}}
[[File:Rrddemo.png|thumb|RRDtool has a graph function, which presents data from an RRD in a customizable graphical format]]
[[File:Rrddemo.png|thumb|RRDtool has a graph function, which presents data from an RRD in a customizable graphical format.]]


'''RRDtool''' (''round-robin database tool'') aims to handle [[time series]] data such as [[computer network|network]] [[bandwidth (computing)|bandwidth]], [[temperature]]s or [[central processing unit|CPU]] load. The data is stored in a [[circular buffer]] based [[database]], thus the system storage footprint remains constant over time. This is distinct from the computer science concept of [[round-robin scheduling]].
'''RRDtool''' (''round-robin database tool'') aims to handle [[time series]] data such as [[computer network|network]] [[bandwidth (computing)|bandwidth]], [[temperature]]s or [[Load (computing)|CPU load]]. The data is stored in a [[circular buffer]] based [[database]], thus the system storage footprint remains constant over time.


It also includes tools to extract round-robin data in a graphical format, for which it was originally intended.
It also includes tools to extract round-robin data in a graphical format, for which it was originally intended.
Bindings exist for programming languages [[Perl]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Tcl]], [[PHP]] and [[Lua (programming language)|Lua]]. There is an independent full [[Java (programming language)|Java]] implementation called rrd4j.
Bindings exist for several programming languages, e.g. [[Perl]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Tcl]], [[PHP]] and [[Lua (programming language)|Lua]]. There is an independent full [[Java (programming language)|Java]] implementation called rrd4j.


==General data storage==
==General data storage==
RRDtool assumes time-variable data in intervals of a certain length. This interval, usually named '''step''', is specified upon creation of an RRD file and cannot be changed afterwards. B<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>ecause data may not always be available at just the right time, RRDtool will automatically interpolate any submitted data to fit its internal time-steps.
RRDtool assumes time-variable data in intervals of a certain length. This interval, usually named '''step''', is specified upon creation of an RRD file and cannot be changed afterwards. Because data may not always be available at just the right time, RRDtool will automatically interpolate any submitted data to fit its internal time-steps.


The value for a specific step, that has been interpolated, is named a primary data point ('''PDP'''). Multiple PDPs may be consolidated according to a consolidation function ('''CF''') to form a consolidated data point ('''CDP'''). Typical consolidation functions are [[average]], minimum, maximum.
The value for a specific step, that has been interpolated, is named a primary data point ('''PDP'''). Multiple PDPs may be consolidated according to a consolidation function ('''CF''') to form a consolidated data point ('''CDP'''). Typical consolidation functions are [[average]], minimum, maximum.


After the data has been consolidated, the resulting CDP is stored in a round-robin archive ('''RRA'''). A round-robin archive stores a fixed number of CDPs and specifies how many PDPs should be consolidated into one CDP and which CF to use. The total time covered by an RRA can be calculated as follows:<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>
After the data has been consolidated, the resulting CDP is stored in a round-robin archive ('''RRA'''). A round-robin archive stores a fixed number of CDPs and specifies how many PDPs should be consolidated into one CDP and which CF to use. The total time covered by an RRA can be calculated as follows:


time covered = (#CDPs stored) x (#PDPs per CDP) x steps
: time covered = (#CDPs stored) × (#PDPs per CDP) × (step time length)

After this time the archive will "wrap around": the next insertion will overwrite the oldest entry. This behavior in this context is referred to as "round-robin" and is the reason for the program's name. However this is different from the common computer science definition, which is a method of distributing resources among multiple consumers or processes.


After this time the archive will "wrap around": the next insertion will overwrite the oldest entry. This behavior in this context is referred to as "round-robin" and is the reason for the program's name. However this is diffe<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>rent from the common computer science definition, which is a method of distributing resources among multiple consumers or processes.
<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></refuuuuuuhitcdy7uyuryeyetae yry ry rt ur sru urr r eya yea eya e yeey 5 7 yet y t t thusr jhj hfhy ××××××÷÷÷←±≥≤≤≠≈′°—–≤−×÷←→·§§<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref>ersrserM esm </ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref><<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></r<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>ef></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>/ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>
To cover several timespans and/or use several consolidation functions, an RRD file may contain multiple RRAs. The data retrieval function of RRDtool automatically selects the archive with the highest resolution that still covers the requested timespan. This mechanism is also used by RRDtool's graphing subsystem.
To cover several timespans and/or use several consolidation functions, an RRD file may contain multiple RRAs. The data retrieval function of RRDtool automatically selects the archive with the highest resolution that still covers the requested timespan. This mechanism is also used by RRDtool's graphing subsystem.
<ref><ref><ref><ref><ref><ref><ref><ref><ref><ref></ref></ref></ref></ref></ref></ref></ref></ref></ref></ref>


==Release history==
==Release history==
Line 52: Line 52:
| style="background:#a0e75a;"| Green || Release still supported
| style="background:#a0e75a;"| Green || Release still supported
|-
|-
| style="background:Blue;"| Blue || Future release
| style="background:cyan;"| Blue || Future release
|}
|}

RRDTool is sponsored since 1.2, each release comes with a list of sponsors.


The following table contains the '''release history of RRDtool''', showing its major releases.
The following table contains the '''release history of RRDtool''', showing its major releases.
Line 68: Line 66:
! style="background:red;"| 1.0
! style="background:red;"| 1.0
| July 16, 1999
| July 16, 1999
| [http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.0/program/NEWS Full release notes], [https://lists.oetiker.ch/pipermail/rrd-announce/1999-July/000007.html Announce]
| [https://archive.today/20130115201059/http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.0/program/NEWS Full release notes], [https://lists.oetiker.ch/pipermail/rrd-announce/1999-July/000007.html Announce]
| First release. Basically [[Multi Router Traffic Grapher|MRTG]] "done right".
| First release. Basically [[Multi Router Traffic Grapher|MRTG]] "done right".
|-
|-
! style="background:red;"| 1.1
! style="background:red;"| 1.1
| April 25, 2005
| April 25, 2005
| [http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.2.0/NEWS Full release notes], [https://lists.oetiker.ch/pipermail/rrd-announce/2005-April/000071.html Announce]
| [https://archive.today/20130116023956/http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.2.0/NEWS Full release notes], [https://lists.oetiker.ch/pipermail/rrd-announce/2005-April/000071.html Announce]
| libart; output EPS, PDF & SVG; VDEF; trends; percentiles; updatev; Holt-Winters Forecasting; COMPUTE; .rrd format change.
| libart; output EPS, PDF & SVG; VDEF; trends; percentiles; updatev; Holt-Winters Forecasting; COMPUTE; .rrd format change.
|-
|-
! style="background:#a0e75a;"| 1.3
! style="background:#a0e75a;"| 1.3
| June 11, 2008
| June 11, 2008
| [http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.3.0/NEWS Full release notes], [https://lists.oetiker.ch/pipermail/rrd-announce/2008-June/000109.html Announce]
| [https://archive.today/20130115190608/http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.3.0/NEWS Full release notes], [https://lists.oetiker.ch/pipermail/rrd-announce/2008-June/000109.html Announce]
| Safer & faster file access; cairo/pango; anti-aliasing; TEXTALIGN; dashed lines; new HWPREDICT; libxml; i18n; XML dump;
| Safer & faster file access; cairo/pango; anti-aliasing; TEXTALIGN; dashed lines; new HWPREDICT; libxml; i18n; XML dump;
|-
|-
Line 88: Line 86:
! style="background:#a0e75a;"| 1.5
! style="background:#a0e75a;"| 1.5
| April 16, 2015
| April 16, 2015
| [http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.5.0/NEWS Full release notes], [http://oss.oetiker.ch/rrdtool/forum.en.html#nabble-td7582894 Announce]
| [https://archive.today/20150429194236/http://oss.oetiker.ch/rrdtool-trac/browser/tags/1.5.0/NEWS Full release notes], [http://oss.oetiker.ch/rrdtool/forum.en.html#nabble-td7582894 Announce]
| Use data from callback functions; Population of new rrd files with data from old ones; [[.NET Framework|.NET bindings]]
| Use data from callback functions; Population of new rrd files with data from old ones; [[.NET Framework|.NET bindings]]
|-
|-
Line 100: Line 98:
| [https://github.com/oetiker/rrdtool-1.x/blob/bfc82d5242855628b826018479df00e0ec4e8360/CHANGES Full release notes]
| [https://github.com/oetiker/rrdtool-1.x/blob/bfc82d5242855628b826018479df00e0ec4e8360/CHANGES Full release notes]
| Results of code audit; overhaul of the Python bindings; various other small feature improvements
| Results of code audit; overhaul of the Python bindings; various other small feature improvements
|-
! style="background:#a0e75a;"| 1.8
| March 13, 2022
| [https://github.com/oetiker/rrdtool-1.x/blob/003a907f089befdff75ef6048ba427d35c677cf6/CHANGES Full release notes]
| ROUND function for rrd RPN, vcpkg support for MSVC builds, first_weekday for Windows port, x64 platform for win32 build, --add-jsontime for graphv, add --utc to graph, automated testing for win32 builds, support TUNE command in rrdcached
|}
|}


Line 108: Line 111:
* [[Cherokee (Webserver)|Cherokee]]
* [[Cherokee (Webserver)|Cherokee]]
* [[collectd]]
* [[collectd]]
* Cricket
* [[Ganglia (software)|Ganglia]] – system monitor [[Computer cluster|clusters]] and [[Grid computing|grids]]
* [[Ganglia (software)|Ganglia]] – system monitor [[Computer cluster|clusters]] and [[Grid computing|grids]]
* [[lighttpd]]
* [[lighttpd]]
Line 113: Line 117:
* [[Monitorix]]
* [[Monitorix]]
* [[MRTG]]
* [[MRTG]]
* [[Munin (network monitoring application)|Munin]]
* [[Munin (software)|Munin]]
* [[Nagios]]
* [[Nagios]]
* [[Nmon]]
* [[Nmon]]
* NMIS
* [[NMIS]]<ref>{{cite web|url=http://nmis.sourceforge.net/ |title=NMIS - Network Management Information System |website=Nmis.sourceforge.net |date= |accessdate=2016-05-22}}</ref>
* [[ntop]]
* [[ntop]]
* Observium
* [[OpenNMS]]
* [[OpenNMS]]
* [[pfSense]]
* [[pfSense]]
* [[Plesk]]
* [[Plesk]]
* [[ServersCheck]]
* SmokePing: Network latency monitor<ref>{{cite web|url=http://oss.oetiker.ch/smokeping/ |title=SmokePing - About SmokePing |website=Oss.oetiker.ch |date= |accessdate=2016-05-22}}</ref>
* SNM: System and network monitor<ref>{{cite web|url=http://snm.sf.net |title=SNM: Systems and Network Monitor |website=Snm.sf.net |date= |accessdate=2016-05-22}}</ref>
* SysUsage: the sysstat and sar grapher<ref>{{cite web|url=http://sysusage.darold.net/ |title=SysUsage - an Industry Standard in IT Infrastructure Monitoring based on detailed graph views |website=Sysusage.darold.net |date= |accessdate=2016-05-22}}</ref>
* [[Stor2rrd]]
* [[Xymon]]
* [[Xymon]]
* [[Zenoss Core]]
* [[Zenoss Core]]
Line 132: Line 130:


==See also==
==See also==
{{Portal|Free software}}
{{Portal|Free and open-source software}}
*[[RRD Editor]]
*[[RRD Editor]]
* [[Time series database]]


==References==
==References==
Line 142: Line 141:


{{DEFAULTSORT:Rrdtool}}
{{DEFAULTSORT:Rrdtool}}
[[Category:Network management]]
[[Category:Internet Protocol based network software]]
[[Category:Internet Protocol based network software]]
[[Category:Free network management software]]
[[Category:Free network management software]]
Line 148: Line 146:
[[Category:Free database management systems]]
[[Category:Free database management systems]]
[[Category:1999 software]]
[[Category:1999 software]]
[[Category:Time series software]]

Latest revision as of 20:55, 3 September 2024

RRDtool
Original author(s)Tobias Oetiker
Initial releaseJuly 16, 1999; 25 years ago (1999-07-16)
Stable release
1.9.0 / 2024-07-29[1]
Repository
Written inC
LicenseGNU General Public License
Websiteoss.oetiker.ch/rrdtool/
RRDtool has a graph function, which presents data from an RRD in a customizable graphical format.

RRDtool (round-robin database tool) aims to handle time series data such as network bandwidth, temperatures or CPU load. The data is stored in a circular buffer based database, thus the system storage footprint remains constant over time.

It also includes tools to extract round-robin data in a graphical format, for which it was originally intended. Bindings exist for several programming languages, e.g. Perl, Python, Ruby, Tcl, PHP and Lua. There is an independent full Java implementation called rrd4j.

General data storage

[edit]

RRDtool assumes time-variable data in intervals of a certain length. This interval, usually named step, is specified upon creation of an RRD file and cannot be changed afterwards. Because data may not always be available at just the right time, RRDtool will automatically interpolate any submitted data to fit its internal time-steps.

The value for a specific step, that has been interpolated, is named a primary data point (PDP). Multiple PDPs may be consolidated according to a consolidation function (CF) to form a consolidated data point (CDP). Typical consolidation functions are average, minimum, maximum.

After the data has been consolidated, the resulting CDP is stored in a round-robin archive (RRA). A round-robin archive stores a fixed number of CDPs and specifies how many PDPs should be consolidated into one CDP and which CF to use. The total time covered by an RRA can be calculated as follows:

time covered = (#CDPs stored) × (#PDPs per CDP) × (step time length)

After this time the archive will "wrap around": the next insertion will overwrite the oldest entry. This behavior in this context is referred to as "round-robin" and is the reason for the program's name. However this is different from the common computer science definition, which is a method of distributing resources among multiple consumers or processes.

To cover several timespans and/or use several consolidation functions, an RRD file may contain multiple RRAs. The data retrieval function of RRDtool automatically selects the archive with the highest resolution that still covers the requested timespan. This mechanism is also used by RRDtool's graphing subsystem.

Release history

[edit]
Colour Meaning
Red Release no longer supported
Green Release still supported
Blue Future release

The following table contains the release history of RRDtool, showing its major releases.

Version number Date Links Notable changes
1.0 July 16, 1999 Full release notes, Announce First release. Basically MRTG "done right".
1.1 April 25, 2005 Full release notes, Announce libart; output EPS, PDF & SVG; VDEF; trends; percentiles; updatev; Holt-Winters Forecasting; COMPUTE; .rrd format change.
1.3 June 11, 2008 Full release notes, Announce Safer & faster file access; cairo/pango; anti-aliasing; TEXTALIGN; dashed lines; new HWPREDICT; libxml; i18n; XML dump;
1.4 October 27, 2009 Full release notes, Announce Caching daemon; VDEF PERCENTNAN; CDEF PREDICT & PREDICTSIGMA; libDBI; graph legends positioning; Lua bindings; 3D border width; and more ...
1.5 April 16, 2015 Full release notes, Announce Use data from callback functions; Population of new rrd files with data from old ones; .NET bindings
1.6 May 9, 2016 Full release notes, Announce Thread Safety
1.7 May 17, 2017 Full release notes Results of code audit; overhaul of the Python bindings; various other small feature improvements
1.8 March 13, 2022 Full release notes ROUND function for rrd RPN, vcpkg support for MSVC builds, first_weekday for Windows port, x64 platform for win32 build, --add-jsontime for graphv, add --utc to graph, automated testing for win32 builds, support TUNE command in rrdcached

Other tools that use RRDtool as a DBMS and/or graphing subsystem

[edit]

See also

[edit]

References

[edit]
  1. ^ "Releases · oetiker/Rrdtool-1.x". GitHub.
[edit]