Attached a patch for the rrd-tool LIBDBI integration with the following improvements:
[rrdtool.git] / doc / rrdgraph_examples.pod
1 =head1 NAME
2
3 rrdgraph_examples - Examples for rrdtool graph
4
5 =head1 SYNOPSIS
6
7 B<rrdtool graph /home/httpd/html/test.png --img-format PNG>
8
9 followed by any of the examples below
10
11 =head1 DESCRIPTION
12
13 For your convenience some of the commands are explained here
14 by using detailed examples. They are not always cut-and-paste
15 ready because comments are intermixed with the examples.
16
17 =head1 EXAMPLES
18
19 =head2 Data with multiple resolutions
20
21     --end now --start end-120000s --width 400
22     DEF:ds0a=/home/rrdtool/data/router1.rrd:ds0:AVERAGE
23     DEF:ds0b=/home/rrdtool/data/router1.rrd:ds0:AVERAGE:step=1800
24     DEF:ds0c=/home/rrdtool/data/router1.rrd:ds0:AVERAGE:step=7200
25     LINE1:ds0a#0000FF:"default resolution\l"
26     LINE1:ds0b#00CCFF:"resolution 1800 seconds per interval\l"
27     LINE1:ds0c#FF00FF:"resolution 7200 seconds per interval\l"
28
29 =head2 Nicely formatted legend section
30
31     DEF:ds0=/home/rrdtool/data/router1.rrd:ds0:AVERAGE
32     DEF:ds1=/home/rrdtool/data/router1.rrd:ds1:AVERAGE
33     VDEF:ds0max=ds0,MAXIMUM
34     VDEF:ds0avg=ds0,AVERAGE
35     VDEF:ds0min=ds0,MINIMUM
36     VDEF:ds0pct=ds0,95,PERCENT
37     VDEF:ds1max=ds1,MAXIMUM
38     VDEF:ds1avg=ds1,AVERAGE
39     VDEF:ds1min=ds1,MINIMUM
40     VDEF:ds1pct=ds1,95,PERCENT
41
42 Note: consolidation occurs here.
43
44     CDEF:ds0bits=ds0,8,*
45     CDEF:ds1bits=ds1,8,*
46
47 Note: 10 spaces to move text to the right
48
49     COMMENT:"          "
50
51 Note: the column titles have to be as wide as the columns
52
53     COMMENT:"Maximum    "
54     COMMENT:"Average    "
55     COMMENT:"Minimum    "
56
57     COMMENT:"95th percentile\l"
58     AREA:ds0bits#00C000:"Inbound "
59     GPRINT:ds0max:"%6.2lf %Sbps"
60     GPRINT:ds0avg:"%6.2lf %Sbps"
61     GPRINT:ds0min:"%6.2lf %Sbps"
62     GPRINT:ds0pct:"%6.2lf %Sbps\l"
63     LINE1:ds1bits#0000FF:"Outbound"
64     GPRINT:ds1max:"%6.2lf %Sbps"
65     GPRINT:ds1avg:"%6.2lf %Sbps"
66     GPRINT:ds1min:"%6.2lf %Sbps"
67     GPRINT:ds1pct:"%6.2lf %Sbps\l"
68
69 =head2 Offsetting a line on the y-axis
70
71 Depending on your needs you can do this in two ways:
72
73 =over
74
75 =item *
76
77 Offset the data, then graph this
78
79     DEF:mydata=my.rrd:ds:AVERAGE
80
81 Note: this will also influence any other command that uses "data"
82
83     CDEF:data=mydata,100,+
84     LINE1:data#FF0000:"Data with offset"
85
86 =item *
87
88 Graph the original data, with an offset
89
90     DEF:mydata=my.rrd:ds:AVERAGE
91
92 Note: no color in the first line so it is not visible
93
94     LINE1:100
95
96 Note: the second line gets stacked on top of the first one
97
98     LINE1:data#FF0000:"Data with offset":STACK
99
100 =back
101
102 =head2 Drawing dashed lines
103
104 Also works for HRULE and VRULE
105
106 =over
107
108 =item *
109
110 default style: - - - - -
111     LINE1:data#FF0000:"dashed line":dashes
112
113 =item *
114
115 more fancy style with offset: - -  --- -  --- -
116     LINE1:data#FF0000:"another dashed line":dashes=15,5,5,10:dash-offset=10
117
118 =back
119
120 =head2 Time ranges
121
122     Last four weeks: --start end-4w --end 00:00
123     January 2001:    --start 20010101 --end start+31d
124     January 2001:    --start 20010101 --end 20010201
125     Last hour:       --start end-1h
126     Last 24 hours:   <nothing at all>
127     Yesterday:       --end 00:00
128
129 =head2 Viewing the current and previous week together
130
131     --end now --start end-1w
132     DEF:thisweek=router.rrd:ds0:AVERAGE
133     DEF:lastweek=router.rrd:ds0:AVERAGE:end=now-1w:start=end-1w
134
135 Shift the data forward by one week (604800 seconds)
136
137     SHIFT:lastweek:604800
138     [ more of the usual VDEF and CDEF stuff if you like ]
139     AREA:lastweek#0000FF:Last\ week
140     LINE1:thisweek#FF0000:This\ week
141
142 =head2 Aberrant Behaviour Detection
143
144 If the specialized function B<RRAs> exist for aberrant behavior detection, they
145 can be used to generate the graph of a time series with confidence bands and
146 failures.
147
148    rrdtool graph example.png \
149           DEF:obs=monitor.rrd:ifOutOctets:AVERAGE \
150           DEF:pred=monitor.rrd:ifOutOctets:HWPREDICT \
151           DEF:dev=monitor.rrd:ifOutOctets:DEVPREDICT \
152           DEF:fail=monitor.rrd:ifOutOctets:FAILURES \
153           TICK:fail#ffffa0:1.0:"Failures\: Average bits out" \
154           CDEF:scaledobs=obs,8,* \
155           CDEF:upper=pred,dev,2,*,+ \
156           CDEF:lower=pred,dev,2,*,- \
157           CDEF:scaledupper=upper,8,* \
158           CDEF:scaledlower=lower,8,* \
159           LINE2:scaledobs#0000ff:"Average bits out" \
160           LINE1:scaledupper#ff0000:"Upper Confidence Bound: Average bits out" \
161           LINE1:scaledlower#ff0000:"Lower Confidence Bound: Average bits out"
162
163 This example generates a graph of the data series in blue (LINE2 with the scaledobs
164 virtual data source), confidence bounds in red (scaledupper and scaledlower virtual
165 data sources), and potential failures (i.e. potential aberrant aberrant behavior)
166 marked by vertical yellow lines (the fail data source).
167
168 The raw data comes from an AVERAGE B<RRA>, the finest resolution of the observed
169 time series (one consolidated data point per primary data point). The predicted
170 (or smoothed) values are stored in the HWPREDICT B<RRA>. The predicted deviations
171 (think standard deviation) values are stored in the DEVPREDICT B<RRA>. Finally,
172 the FAILURES B<RRA> contains indicators, with 1 denoting a potential failure.
173
174 All of the data is rescaled to bits (instead of Octets) by multiplying by 8.
175 The confidence bounds are computed by an offset of 2 deviations both above
176 and below the predicted values (the CDEFs upper and lower). Vertical lines
177 indicated potential failures are graphed via the TICK graph element, which
178 converts non-zero values in an B<RRA> into tick marks. Here an axis-fraction
179 argument of 1.0 means the tick marks span the entire y-axis, and hence become
180 vertical lines on the graph.
181
182 The choice of 2 deviations (a scaling factor) matches the default used internally
183 by the FAILURES B<RRA>. If the internal value is changed (see L<rrdtune>), this
184 graphing command should be changed to be consistent.
185
186 =head3 A note on data reduction:
187
188 The B<rrdtool> I<graph> command is designed to plot data at a specified temporal
189 resolution, regardless of the actually resolution of the data in the RRD file.
190 This can present a problem for the specialized consolidation functions which
191 maintain a one-to-one mapping between primary data points and consolidated
192 data points. If a graph insists on viewing the contents of these B<RRAs> on a
193 coarser temporal scale, the I<graph> command tries to do something intelligent,
194 but the confidence bands and failures no longer have the same meaning and may
195 be misleading.
196
197
198 =head1 SEE ALSO
199
200 L<rrdgraph> gives an overview of how B<rrdtool graph> works.
201 L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail.
202 L<rrdgraph_rpn> describes the B<RPN> language used in the B<xDEF> statements.
203 L<rrdgraph_graph> page describes all the graph and print functions.
204
205 Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
206
207 =head1 AUTHOR
208
209 Program by Tobias Oetiker E<lt>tobi@oetiker.chE<gt>
210
211 This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>