Variable names (vname) must be made up strings of the following characters "A-Z, a-z, 0-9, _, -" and a maximum length of 255 characters.
When picking variable names, make sure you do not choose a name that is already taken by an RPN operator. A safe bet is to use lowercase or mixed case names for variables since operators will always be in uppercase.
This command fetches data from an RRD file. The virtual name vname can then be used throughout the rest of the script. By default, an RRA which contains the correct consolidated data at an appropriate resolution will be chosen. The resolution can be overridden with the --step option. The resolution can again be overridden by specifying the step size. The time span of this data is the same as for the graph by default, you can override this by specifying start and end. Remember to escape colons in the time specification!
If the resolution of the data is higher than the resolution of the graph, the data will be further consolidated. This may result in a graph that spans slightly more time than requested. Ideally each point in the graph should correspond with one CDP from an RRA. For instance, if your RRD has an RRA with a resolution of 1800 seconds per CDP, you should create an image with width 400 and time span 400*1800 seconds (use appropriate start and end times, such as "--start end-8days8hours").
If consolidation needs to be done, the CF of the RRA specified in the DEF itself will be used to reduce the data density. This behavior can be changed using ":reduce=<CF>". This optional parameter specifies the CF to use during the data reduction phase.
It is possible to request single data sources from a specific RRDCacheD, see rrdcached, using the ":daemon=<address>" parameter. The value given to this parameter follows the same syntax as other means to specify the address of the caching daemon. It is described in detail in rrdcached. Beware, however, that colons (in IPv6 addresses and as a port separator, for example) need to be escaped using a backslash.
DEF:ds0=router.rrd:ds0:AVERAGE DEF:ds0weekly=router.rrd:ds0:AVERAGE:step=7200 DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=end-1h DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=11\:00:end=start+1h DEF:ds0weekly=router.rrd:ds0:AVERAGE:daemon=collect1.example.com
This command returns a value and/or a time according to the RPN statements used. The resulting vname will, depending on the functions used, have a value and a time component. When you use this vname in another RPN expression, you are effectively inserting its value just as if you had put a number at that place. The variable can also be used in the various graph and print elements.
This command creates a new set of data points (in memory only, not in the RRD file) out of one or more other data series. The RPN instructions are used to evaluate a mathematical function on each data point. The resulting vname can then be used further on in the script, just as if it were generated by a DEF instruction.
CDEF works on such an array. For example, CDEF:new=ds0,8,* would multiply each of the array members by eight (probably transforming bytes into bits). The result is an array containing the new values.
You use a VDEF if you want max(1,5,3,2,4) to return five which would be displayed in the graph's legend (to answer, what was the maximum value during the graph period).
This manual page by Alex van den Bogaerdt <firstname.lastname@example.org> with corrections and/or additions by several people