rrdtool RDGRAPH(1)
NAME
rrdgraph - Round Robin Database tool grapher functions
SYNOPSIS
rrdtool graphgraphv filename [option ...] [data definition
...] [data calculation ...] [variable definition ...]
[graph element ...] [print element ...]
DESCRIPTION
The graph function of RDtool is used to present the data
from an RD to a human viewer. Its main purpose is to
create a nice graphical representation, but it can also
generate a numerical report.
OVERVIEW
rrdtool graph needs data to work with, so you must use one
or more data definition statements to collect this data.
You are not limited to one database, it's perfectly legal to
collect data from two or more databases (one per statement,
though).
If you want to display averages, maxima, percentiles,
etcetera it is best to collect them now using the variable
definition statement. Currently this makes no difference,
but in a future version of rrdtool you may want to collect
these values before consolidation.
The data fetched from the RA is then consolidated so that
there is exactly one datapoint per pixel in the graph. If
you do not take care yourself, RDtool will expand the range
slightly if necessary. Note, in that case the first and/or
last pixel may very well become unknown!
Sometimes data is not exactly in the format you would like
to display it. For instance, you might be collecting bytes
per second, but want to display bits per second. This is
what the data calculation command is designed for. After
consolidating the data, a copy is made and this copy is
modified using a rather powerful RPN command set.
When you are done fetching and processing the data, it is
time to graph it (or print it). This ends the rrdtool graph
sequence.
OPTIONS
graphv
This alternate version of graph takes the same arguments and
performs the same function. The v stands for verbose, which
describes the output returned. graphv will return a lot of
information about the graph using the same format as rrdtool
info (key = value). See the bottom of the document for more
1.3.5 Last change: 2008-12-09 1
rrdtool RDGRAPH(1)
information.
filename
The name and path of the graph to generate. It is
recommended to end this in ".png", ".svg" or ".eps", but
RDtool does not enforce this.
filename can be '"-"' to send the image to "stdout". In this
case, no other output is generated.
Time range
[-s--start time] [-e--end time] [-S--step seconds]
The start and end of the time series you would like to
display, and which RA the data should come from. Defaults
are: 1 day ago until now, with the best possible resolution.
Start and end can be specified in several formats, see AT-
STYLE TIME SPECIFICATION and rrdgraphexamples. By default,
rrdtool graph calculates the width of one pixel in the time
domain and tries to get data from an RA with that
resolution. With the step option you can alter this
behaviour. If you want rrdtool graph to get data at a one-
hour resolution from the RD, set step to 3'600. Note: a
step smaller than one pixel will silently be ignored.
Labels
[-t--title string] [-v--vertical-label string]
A horizontal string at the top of the graph and/or a
vertically placed string at the left hand side of the graph.
Right Axis
[--right-axis scale:shift] [--right-axis-label label]
A second axis will be drawn to the right of the graph. It is
tied to the left axis via the scale and shift parameters.
You can also define a label for the right axis.
[--right-axis-format format-string]
By default the format of the axis lables gets determined
automatically. If you want todo this your self, use this
option with the same %lf arguments you know from the PRING
and GPRINT commands.
Size
[-w--width pixels] [-h--height pixels] [-j--only-graph]
[-D--full-size-mode]
1.3.5 Last change: 2008-12-09 2
rrdtool RDGRAPH(1)
By default, the width and height of the canvas (the part
with the actual data and such). This defaults to 400 pixels
by 100 pixels.
If you specify the --full-size-mode option, the width and
height specify the final dimensions of the output image and
the canvas is automatically resized to fit.
If you specify the --only-graph option and set the height <
32 pixels you will get a tiny graph image (thumbnail) to use
as an icon for use in an overview, for example. All labeling
will be stripped off the graph.
Limits
[-u--upper-limit value] [-l--lower-limit value]
[-r--rigid]
By default the graph will be autoscaling so that it will
adjust the y-axis to the range of the data. You can change
this behaviour by explicitly setting the limits. The
displayed y-axis will then range at least from lower-limit
to upper-limit. Autoscaling will still permit those
boundaries to be stretched unless the rigid option is set.
[-A--alt-autoscale]
Sometimes the default algorithm for selecting the y-axis
scale is not satisfactory. Normally the scale is selected
from a predefined set of ranges and this fails miserably
when you need to graph something like "260 ] 0.001 *
sin(x)". This option calculates the minimum and maximum
y-axis from the actual minimum and maximum data values. Our
example would display slightly less than "260-0.001" to
slightly more than "260]0.001" (this feature was contributed
by Sasha Mikheev).
[-J--alt-autoscale-min]
Where "--alt-autoscale" will modify both the absolute
maximum AND minimum values, this option will only affect the
minimum value. The maximum value, if not defined on the
command line, will be 0. This option can be useful when
graphing router traffic when the WAN line uses compression,
and thus the throughput may be higher than the WAN line
speed.
[-M--alt-autoscale-max]
Where "--alt-autoscale" will modify both the absolute
maximum AND minimum values, this option will only affect the
maximum value. The minimum value, if not defined on the
1.3.5 Last change: 2008-12-09 3
rrdtool RDGRAPH(1)
command line, will be 0. This option can be useful when
graphing router traffic when the WAN line uses compression,
and thus the throughput may be higher than the WAN line
speed.
[-N--no-gridfit]
In order to avoid anti-aliasing blurring effects rrdtool
snaps points to device resolution pixels, this results in a
crisper aperance. If this is not to your liking, you can use
this switch to turn this behaviour off.
Gridfitting is turned off for PDF, EPS, SVG output by
default.
Grid
X-Axis
[-x--x-grid GTM:GST:MTM:MST:LTM:LST:LPR:LFM]
[-x--x-grid none]
The x-axis label is quite complex to configure. If you
don't have very special needs it is probably best to
rely on the autoconfiguration to get this right. You can
specify the string "none" to suppress the grid and
labels altogether.
The grid is defined by specifying a certain amount of
time in the ?TM positions. You can choose from "SECOND",
"MINUTE", "HOUR", "DAY", "WEK", "MONTH" or "YEAR". Then
you define how many of these should pass between each
line or label. This pair (?TM:?ST) needs to be
specified for the base grid (G??), the major grid (M??)
and the labels (L??). For the labels you also must
define a precision in LPR and a strftime format string
in LFM. LPR defines where each label will be placed. If
it is zero, the label will be placed right under the
corresponding line (useful for hours, dates etcetera).
If you specify a number of seconds here the label is
centered on this interval (useful for Monday, January
etcetera).
--x-grid MINUTE:10:HOUR:1:HOUR:4:0:%X
This places grid lines every 10 minutes, major grid
lines every hour, and labels every 4 hours. The labels
are placed under the major grid lines as they specify
exactly that time.
--x-grid HOUR:8:DAY:1:DAY:1:86400:%A
1.3.5 Last change: 2008-12-09 4
rrdtool RDGRAPH(1)
This places grid lines every 8 hours, major grid lines
and labels each day. The labels are placed exactly
between two major grid lines as they specify the
complete day and not just midnight.
Y-Axis
[-y--y-grid grid step:label factor]
[-y--y-grid none]
Y-axis grid lines appear at each grid step interval.
Labels are placed every label factor lines. You can
specify "-y none" to suppress the grid and labels
altogether. The default for this option is to
automatically select sensible values.
If you have set --y-grid to 'none' not only the labels
get supressed, also the space reserved for the labels is
removed. You can still add space manually if you use the
--units-length command to explicitly reserve space.
[-Y--alt-y-grid]
Place the Y grid dynamically based on the graph's Y
range. The algorithm ensures that you always have a
grid, that there are enough but not too many grid lines,
and that the grid is metric. That is the grid lines are
placed every 1, 2, 5 or 10 units. This parameter will
also ensure that you get enough decimals displayed even
if your graph goes from 69.998 to 70.001. (contributed
by Sasha Mikheev).
[-o--logarithmic]
Logarithmic y-axis scaling.
[-X--units-exponent value]
This sets the 10**exponent scaling of the y-axis values.
Normally, values will be scaled to the appropriate units
(k, M, etc.). However, you may wish to display units
always in k (Kilo, 10e3) even if the data is in the M
(Mega, 10e6) range, for instance. Value should be an
integer which is a multiple of 3 between -18 and 18
inclusively. It is the exponent on the units you wish
to use. For example, use 3 to display the y-axis values
in k (Kilo, 10e3, thousands), use -6 to display the
y-axis values in u (Micro, 10e-6, millionths). Use a
value of 0 to prevent any scaling of the y-axis values.
This option is very effective at confusing the heck out
of the default rrdtool autoscaler and grid painter. If
1.3.5 Last change: 2008-12-09 5
rrdtool RDGRAPH(1)
rrdtool detects that it is not successful in labeling
the graph under the given circumstances, it will switch
to the more robust --alt-y-grid mode.
[-L--units-length value]
How many digits should rrdtool assume the y-axis labels
to be? You may have to use this option to make enough
space once you start fideling with the y-axis labeling.
[--units=si]
With this option y-axis values on logarithmic graphs
will be scaled to the appropriate units (k, M, etc.)
instead of using exponential notation. Note that for
linear graphs, SI notation is used by default.
Miscellaneous
[-z--lazy]
Only generate the graph if the current graph is out of date
or not existent. Note, that only the image size will be
returned, if you run with lazy even when using graphv and
even when using PRINT.
[-f--imginfo printfstr]
After the image has been created, the graph function uses
printf together with this format string to create output
similar to the PRINT function, only that the printf function
is supplied with the parameters filename, xsize and ysize.
In order to generate an IMG tag suitable for including the
graph into a web page, the command line would look like
this:
--imginfo
[-c--color COLORTAG#rrggbb[aa]
Override the default colors for the standard elements of the
graph. The COLORTAG is one of "BACK" background, "CANVAS"
for the background of the actual graph, "SHADEA" for the
left and top border, "SHADEB" for the right and bottom
border, "GRID", "MGRID" for the major grid, "FONT" for the
color of the font, "AXIS" for the axis of the graph, "FRAME"
for the line around the color spots, and finally "AROW" for
the arrow head pointing up and forward. Each color is
composed out of three hexadecimal numbers specifying its rgb
color component (00 is off, F is maximum) of red, green and
blue. Optionally you may add another hexadecimal number
specifying the transparency (F is solid). You may set this
1.3.5 Last change: 2008-12-09 6
rrdtool RDGRAPH(1)
option several times to alter multiple defaults.
A green arrow is made by: "--color AROW#00F00"
[--zoom factor]
Zoom the graphics by the given amount. The factor must be >
0
[-n--font FONTAG:size:[font]
This lets you customize which font to use for the various
text elements on the RD graphs. "DEFAULT" sets the default
value for all elements, "TITLE" for the title, "AXIS" for
the axis labels, "UNIT" for the vertical unit label,
"LEGEND" for the graph legend, "WATERMARK" for the watermark
on the edge of the graph.
Use Times for the title: "--font TITLE:13:Times"
If you do not give a font string you can modify just the
sice of the default font: "--font TITLE:13:".
If you specify the size 0 then you can modify just the font
without touching the size. This is especially usefull for
altering the default font without resetting the default
fontsizes: "--font DEFAULT:0:Courier".
RDtool comes with a preset default font. You can set the
environment variable "RDEFAULTFONT" if you want to
change this.
RDtool uses Pango for its font handling. This means you can
to use the full Pango syntax when selecting your font:
The font name has the form "[FAMILY-LIST] [STYLE-OPTIONS]
[SIZE]", where FAMILY-LIST is a comma separated list of
families optionally terminated by a comma, STYLEOPTIONS is
a whitespace separated list of words where each WORD
describes one of style, variant, weight, stretch, or
gravity, and SIZE is a decimal number (size in points) or
optionally followed by the unit modifier "px" for absolute
size. Any one of the options may be absent.
[-R--font-render-mode {normal,light,mono}]
There are 3 font render modes:
normal: Full Hinting and Antialiasing (default)
light: Slight Hinting and Antialiasing
1.3.5 Last change: 2008-12-09 7
rrdtool RDGRAPH(1)
mono: Full Hinting and NO Antialiasing
[-B--font-smoothing-threshold size]
(this gets ignored in 1.3 for now!)
This specifies the largest font size which will be rendered
bitmapped, that is, without any font smoothing. By default,
no text is rendered bitmapped.
[-P--pango-markup]
All text in rrdtool is rendered using Pango. With the
--pango-markup option, all text will be processed by pango
markup. This allows to embed some simple html like markup
tags using
text
Apart from the verbose syntax, there are also the following
short tags available.
b Bold
big Makes font relatively larger, equivalent to
i Italic
s Strikethrough
sub Subscript
sup Superscript
small Makes font relatively smaller, equivalent to
tt Monospace font
u Underline
More details on
.
[-G--graph-render-mode {normal,mono}]
There are 2 render modes:
normal: Graphs are fully Antialiased (default)
mono: No Antialiasing
[-E--slope-mode]
RDtool graphs are composed of stair case curves by default.
This is in line with the way RDtool calculates its data.
Some people favor a more 'organic' look for their graphs
even though it is not all that true.
[-a--imgformat PNGSVGEPSPDF]
1.3.5 Last change: 2008-12-09 8
rrdtool RDGRAPH(1)
Image format for the generated graph. For the vector formats
you can choose among the standard Postscript fonts
Courier-Bold, Courier-BoldOblique, Courier-Oblique, Courier,
Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
Helvetica, Symbol, Times-Bold, Times-BoldItalic,
Times-Italic, Times-Roman, and ZapfDingbats.
[-i--interlaced]
(this gets ignored in 1.3 for now!)
If images are interlaced they become visible on browsers
more quickly.
[-g--no-legend]
Suppress generation of the legend; only render the graph.
[-F--force-rules-legend]
Force the generation of HRULE and VRULE legends even if
those HRULE or VRULE will not be drawn because out of graph
boundaries (mimics behaviour of pre 1.0.42 versions).
[-T--tabwidth value]
By default the tab-width is 40 pixels, use this option to
change it.
[-b--base value]
If you are graphing memory (and NOT network traffic) this
switch should be set to 1024 so that one Kb is 1024 byte.
For traffic measurement, 1 kb/s is 1000 b/s.
[-W--watermark string]
Adds the given string as a watermark, horizontally centred,
at the bottom of the graph.
Data and variables
DEF:vname=rrdfile:ds-
name:CF[:step=step][:start=time][:end=time]
CDEF:vname=RPN expression
VDEF:vname=RPN expression
You need at least one DEF statement to generate anything.
The other statements are useful but optional. See
rrdgraphdata and rrdgraphrpn for the exact format.
1.3.5 Last change: 2008-12-09 9
rrdtool RDGRAPH(1)
NOTE: Graph and print elements
You need at least one graph element to generate an image
and/or at least one print statement to generate a report.
See rrdgraphgraph for the exact format.
graphv
Calling rrdtool with the graphv option will return
information in the rrdtool info format. On the command line
this means that all output will be in key=value format. When
used from the perl and ruby bindings a hash pointer will be
returned from the call.
When the filename '-' is given, the contents of the graph
itself will also be returned through this interface (hash
key 'image'). On the command line the output will look like
this:
print[0] = "0.020833"
print[1] = "0.0440833"
graphleft = 51
graphtop = 22
graphwidth = 400
graphheight = 100
imagewidth = 481
imageheight = 154
valuemin = 0.0000000000e]00
valuemax = 4.0000000000e-02
image = BLOBSIZE:8196
[... 8196 bytes of image data ...]
There is more information returned than in the standard
interface. Especially the 'graph*' keys are new. They help
applications that want to know what is where on the graph.
SEE ALSO
rrdgraph gives an overview of how rrdtool graph works.
rrdgraphdata describes DEF,CDEF and VDEF in detail.
rrdgraphrpn describes the RPN language used in the ?DEF
statements. rrdgraphgraph page describes all of the graph
and print functions.
Make sure to read rrdgraphexamples for tips&tricks.
AUTHOR
Program by Tobias Oetiker
This manual page by Alex van den Bogaerdt
1.3.5 Last change: 2008-12-09 10
|