1RRDGRAPH_DATA(1) rrdtool RRDGRAPH_DATA(1)
2
3
4
6 rrdgraph_data - preparing data for graphing in rrdtool graph
7
9 DEF:<vname>=<rrdfile>:<ds-name>:<CF>[:step=<step>][:start=<time>][:end=<time>][:reduce=<CF>][:daemon=<address>]
10
11 VDEF:vname=RPN expression
12
13 CDEF:vname=RPN expression
14
16 These three instructions extract data values out of the RRD files,
17 optionally altering them (think, for example, of a bytes to bits
18 conversion). If so desired, you can also define variables containing
19 useful information such as maximum, minimum etcetera. Two of the
20 instructions use a language called RPN which is described in its own
21 manual page.
22
23 Variable names (vname) must be made up strings of the following
24 characters "A-Z, a-z, 0-9, _, -" and a maximum length of 255
25 characters.
26
27 When picking variable names, make sure you do not choose a name that is
28 already taken by an RPN operator. A safe bet is to use lowercase or
29 mixed case names for variables since operators will always be in
30 uppercase.
31
33 DEF:<vname>=<rrdfile>:<ds-name>:<CF>[:step=<step>][:start=<time>][:end=<time>][:reduce=<CF>][:daemon=<address>]
34
35 This command fetches data from an RRD file. The virtual name vname can
36 then be used throughout the rest of the script. By default, an RRA
37 which contains the correct consolidated data at an appropriate
38 resolution will be chosen. The resolution can be overridden with the
39 --step option. The resolution can again be overridden by specifying
40 the step size. The time span of this data is the same as for the graph
41 by default, you can override this by specifying start and end.
42 Remember to escape colons in the time specification!
43
44 If the resolution of the data is higher than the resolution of the
45 graph, the data will be further consolidated. This may result in a
46 graph that spans slightly more time than requested. Ideally each point
47 in the graph should correspond with one CDP from an RRA. For instance,
48 if your RRD has an RRA with a resolution of 1800 seconds per CDP, you
49 should create an image with width 400 and time span 400*1800 seconds
50 (use appropriate start and end times, such as "--start
51 end-8days8hours").
52
53 If consolidation needs to be done, the CF of the RRA specified in the
54 DEF itself will be used to reduce the data density. This behavior can
55 be changed using ":reduce=<CF>". This optional parameter specifies the
56 CF to use during the data reduction phase.
57
58 It is possible to request single data sources from a specific
59 RRDCacheD, see rrdcached, using the ":daemon=<address>" parameter. The
60 value given to this parameter follows the same syntax as other means to
61 specify the address of the caching daemon. It is described in detail in
62 rrdcached. Beware, however, that colons (in IPv6 addresses and as a
63 port separator, for example) need to be escaped using a backslash.
64
65 Example:
66
67 DEF:ds0=router.rrd:ds0:AVERAGE
68 DEF:ds0weekly=router.rrd:ds0:AVERAGE:step=7200
69 DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=end-1h
70 DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=11\:00:end=start+1h
71 DEF:ds0weekly=router.rrd:ds0:AVERAGE:daemon=collect1.example.com
72
74 VDEF:vname=RPN expression
75
76 This command returns a value and/or a time according to the RPN
77 statements used. The resulting vname will, depending on the functions
78 used, have a value and a time component. When you use this vname in
79 another RPN expression, you are effectively inserting its value just as
80 if you had put a number at that place. The variable can also be used
81 in the various graph and print elements.
82
83 Example: "VDEF:avg=mydata,AVERAGE"
84
85 Note that currently only aggregation functions work in VDEF rpn
86 expressions. Patches to change this are welcome.
87
89 CDEF:vname=RPN expression
90
91 This command creates a new set of data points (in memory only, not in
92 the RRD file) out of one or more other data series. The RPN
93 instructions are used to evaluate a mathematical function on each data
94 point. The resulting vname can then be used further on in the script,
95 just as if it were generated by a DEF instruction.
96
97 Example: "CDEF:mydatabits=mydata,8,*"
98
100 At some point in processing, RRDtool has gathered an array of rates
101 ready to display.
102
103 CDEF works on such an array. For example, CDEF:new=ds0,8,* would
104 multiply each of the array members by eight (probably transforming
105 bytes into bits). The result is an array containing the new values.
106
107 VDEF also works on such an array but in a different way. For example,
108 VDEF:max=ds0,MAXIMUM would scan each of the array members and store the
109 maximum value.
110
111 When do you use VDEF versus CDEF?
112 Use CDEF to transform your data prior to graphing. In the above
113 example, we'd use a CDEF to transform bytes to bits before graphing the
114 bits.
115
116 You use a VDEF if you want max(1,5,3,2,4) to return five which would be
117 displayed in the graph's legend (to answer, what was the maximum value
118 during the graph period).
119
120 If you want to apply 'complex' operations to the result of a VDEF you
121 have to use a CDEF again since VDEFs only look like RPN expressions,
122 they aren't really.
123
125 rrdgraph gives an overview of how rrdtool graph works. rrdgraph_data
126 describes DEF,CDEF and VDEF in detail. rrdgraph_rpn describes the RPN
127 language used in the ?DEF statements. rrdgraph_graph page describes
128 all of the graph and print functions.
129
130 Make sure to read rrdgraph_examples for tips&tricks.
131
133 Program by Tobias Oetiker <tobi@oetiker.ch>
134
135 This manual page by Alex van den Bogaerdt <alex@vandenbogaerdt.nl> with
136 corrections and/or additions by several people
137
138
139
1401.8.0 2022-03-14 RRDGRAPH_DATA(1)