+rrdcgi - Create web pages containing RRD graphs based on templates
=head1 SYNOPSIS
-#!/path/to/B
-S<[B<--goodfor>|B<-g> I]>
-S<[B<--filter>]>
-S<[B<--refresh>|B<-r>]>
+C<#!/path/to/>B S<[B<--filter>]>
=head1 DESCRIPTION
@@ -18,26 +13,20 @@ is to run as a cgi-program and parse a web page template containing special
ERRD:: tags. B will interpret and act according to these tags.
In the end it will printout a web page including the necessary CGI headers.
-B parses the contents of the template in 2 steps. In each step it looks
-only for a subset of tags. This allows to nest tags.
+B parses the contents of the template in 3 steps. In each step it looks
+only for a subset of tags. This allows nesting of tags.
-The argument parser uses the same semantics as you are used from your c shell.
+The argument parser uses the same semantics as you are used from your C-shell.
=over 8
-
=item B<--filter>
-Assume that rrdcgi is being run as a filter and not as a cgi.
-
-=item B<--refresh>|B<-r>
-
-If the B<--goodfor> flag is specified, then B<--refresh> will cause rrdcgi
-to output a Refresh header with the value of the B<--goodfor> value.
+Assume that rrdcgi is run as a filter and not as a cgi.
=back
-=head2 Pass 1
+=head2 Keywords
=over 8
@@ -49,13 +38,13 @@ Inserts the CGI variable of the given name.
Inserts the CGI variable of the given name but quotes it, ready for
use as an argument in another RRD:: tag. So even when there are spaces in the
-value of the CGI variable it will still be considered as one argument.
+value of the CGI variable it will still be considered to be one argument.
=item RRD::CV::PATH I
Inserts the CGI variable of the given name, quotes it and makes sure
-the it starts neither with a '/' nor contains '..'. This is to make
-sure that no problematic pathnames can be introduced through the
+it starts neither with a '/' nor contains '..'. This is to make
+sure that no problematic pathnames can be introduced through the
CGI interface.
=item RRD::GETENV I
@@ -65,23 +54,18 @@ Get the value of an environment variable.
might give you the name of the remote user given you are using
-some sort of access control on the directory
+some sort of access control on the directory.
-=back
-
-=head2 Pass 2
-
-=over 8
=item RRD::GOODFOR I
Specify the number of seconds this page should remain valid. This will prompt
the rrdcgi to output a Last-Modified, an Expire and if the number of
-seconds is I a Refresh headers.
+seconds is I a Refresh header.
=item RRD::INCLUDE I
-Include the contents of the given file into the page returned from the cgi
+Include the contents of the specified file into the page returned from the cgi.
=item RRD::SETENV I I
@@ -93,26 +77,45 @@ could use
to make sure everything is presented in Universal Time. Note that the
values permitted to TZ depend on your OS.
+=item RRD::SETVAR I I
+
+Analog to SETENV but for local variables.
+
+=item RRD::GETVAR I
+
+Analog to GETENV but for local variables.
+
=item RRD::TIME::LAST I I
This gets replaced by the last modification time of the selected RRD. The
-time is I-formated with the string specified in the second argument.
+time is I-formatted with the string specified in the second argument.
=item RRD::TIME::NOW I
-This gets replaced by the current time of day. The
-time is I-formated with the string specified in the argument.
+This gets replaced by the current time of day. The time is
+I-formatted with the string specified in the argument.
-=back
+Note that if you return : (colons) from your strftime format you may
+have to escape them using \ if the time is to be used as an argument
+to a GRAPH command.
-=head2 Pass 3
+=item RRD::TIME::STRFTIME I I I I
-=over 8
+This gets replaced by a strftime-formatted time using the format
+I on either I or I depending on
+whether I or I is specified. Both I and I
+must be supplied as either could be relative to the other. This is intended
+to allow pretty titles on graphs with times that are easier for non RRDtool
+folks to figure out than "-2weeks".
+
+Note that again, if you return : (colon) from your strftime format,
+you may have to escape them using \ if the time is to be used as an
+argument to a GRAPH command.
=item RRD::GRAPH I
-This tag creates the RRD graph defined in its argument and then gets
-replaced by an appropriate EIMGE tag referring to the graph.
+This tag creates the RRD graph defined by its argument and then is
+replaced by an appropriate EIMG ... E tag referring to the graph.
The B<--lazy> option in RRD graph can be used to make sure that graphs
are only regenerated when they are out of date. The arguments
to the B tag work as described in the B manual page.
@@ -127,7 +130,7 @@ be used:
Note that %s stands for the filename part of the graph generated, all
-directories given in the GIF file argument will get dropped.
+directories given in the PNG file argument will get dropped.
=item RRD::PRINT I
@@ -135,6 +138,12 @@ If the preceding B tag contained and B arguments,
then you can access their output with this tag. The I argument refers to the
number of the B argument. This first B has I 0.
+=item RRD::INTERNAL
+
+This tag gets replaced by an internal var. Currently these vars are known:
+VERSION, COMPILETIME.
+These vars represent the compiled-in values.
+
=back
=head1 EXAMPLE 1
@@ -147,7 +156,7 @@ The example below creates a web pages with a single RRD graph.
RRDCGI Example Page
-
@@ -157,9 +166,9 @@ The example below creates a web pages with a single RRD graph.
=head1 EXAMPLE 2
-This script is slightly more elaborate, it allows you to run it from
+This script is slightly more elaborate, it allows you to run it from
a form which sets RRD_NAME. RRD_NAME is then used to select which RRD
-you want to use a source for your graph.
+you want to use as source for your graph.
#!/usr/local/bin/rrdcgi
@@ -172,7 +181,7 @@ you want to use a source for your graph.
Graph
- .gif --lazy
+ .png --lazy
--title "Temperatures for "
DEF:cel=.rrd:exhaust:AVERAGE
LINE2:cel#00a000:"D. Celsius">
@@ -184,7 +193,7 @@ you want to use a source for your graph.
=head1 EXAMPLE 3
This example shows how to handle the case where the RRD, graphs and
-cgi-bins are seperate directories
+cgi-bins are separate directories
#!/.../bin/rrdcgi
@@ -192,8 +201,8 @@ cgi-bins are seperate directories
RRDCGI test Page
'
+ /.../web/pngs/testhvt.png
+ --imginfo ''
--lazy --start -1d --end now
DEF:http_src=/.../rrds/test.rrd:http_src:AVERAGE
AREA:http_src#00ff00:http_src
@@ -203,12 +212,12 @@ cgi-bins are seperate directories
Note 1: Replace /.../ with the relevant directories
-Note 2: The SRC=/.../gifs should be paths from the view of the
+Note 2: The SRC=/.../pngs should be paths from the view of the
webserver/browser
=head1 AUTHOR
-Tobias Oetiker Eoetiker@ee.ethz.chE
+Tobias Oetiker Etobi@oetiker.chE