=head1 SYNOPSIS
B B I I
S<[B<--resolution>|B<-r> I]>
S<[B<--start>|B<-s> I]>
S<[B<--end>|B<-e> I]>
=head1 DESCRIPTION
The B function is normally used internally by the graph function,
to get data from Bs. B will analyze the B and
will try to retrieve the data in the resolution requested.
The data fetched is printed to stdout. I<*UNKNOWN*> data is often
represented by the string "NaN" depending on your OSs printf
function.
=over 8
=item I
the name of the B you want to fetch the data from.
=item I
which consolidation function should have been applied to the data you
want to fetch? (AVERAGE,MIN,MAX,LAST)
=item B<--resolution>|B<-r> I (default is the highest resolution)
what interval should the values have (seconds per value). B will try
to match your request, but it will return data even if no absolute
match is possible. B See note below.
=item B<--start>|B<-s> I (default end-1day)
when should the data begin. A time in seconds since epoch (1970-01-01)
is required. Negative numbers are relative to the current time. By default
one day worth of data will be fetched. See also AT-STYLE TIME SPECIFICATION
section for a detailed explanation on ways to specify start time.
=item B<--end>|B<-e> I (default now)
when should the data end. Time in seconds since epoch. See also
AT-STYLE TIME SPECIFICATION section for a detailed explanation of how to specify
end time.
=back
=head2 RESOLUTION INTERVAL
In order to get RRDTool to fetch anything other than the finest resolution RRA
B the start and end time must be specified on boundaries that are
multiples of the wanted resolution. Consider the following example:
rrdtool create subdata.rrd -s 10 DS:ds0:GAUGE:300:0:U \
RRA:AVERAGE:0.5:30:3600 \
RRA:AVERAGE:0.5:90:1200 \
RRA:AVERAGE:0.5:360:1200 \
RRA:MAX:0.5:360:1200 \
RRA:AVERAGE:0.5:8640:600 \
RRA:MAX:0.5:8640:600
This RRD collects data every 10 seconds and stores its averages over 5 minutes,
15 minutes, 1 hour and 1 day as well as the maxima for 1 hour and 1 day.
Consider now that you want too fetch the 15 minute average data for last hour.
So you might try
rrdtool fetch subdata.rrd AVERAGE -r 900 -s -1h
However, this will almost always result in a time series that is B in the 15
minute RRA. Therefore the highest resolution RRA, i.e. 5 minute averages, will
be chosen which, in this case, is not what you want.
Hence, make sure that
=over 3
=item 1.
both start and end time are a multiple of 900
=item 2.
both start and end time are within the wanted RRA
=back
So, if time now is called "t",
do end time == int(t/900)*900,
start time == end time -1hour, resolution == 900.
In e.g. bash this could look as:
TIME=$(date +%s); RRDRES=900; rrdtool fetch subdata.rrd AVERAGE -r $RRDRES \
-e $(echo $(($TIME/$RRDRES*$RRDRES))) -s e-1h
Or in Perl:
perl -e '$ctime = time; $rrdres = 900; system "rrdtool fetch subdata.rrd AVERAGE \
-r $rrdres -e @{[int($ctime/$rrdres)*$rrdres]} -s e-1h"'
=head2 AT-STYLE TIME SPECIFICATION
Apart from the traditional I, RRDTool does also
understand at-style time specification. The specification is called
"at-style" after Unix command at(1) that has moderately complex ways
to specify time to run your job at. The at-style specification
consists of two parts: B