diff --git a/doc/rrdcreate.html b/doc/rrdcreate.html
index 97172f63f487218bfe49fc41ab5cb649fa2ba19a..adc0755016ed333275f93346144a3470fcd96ee6 100644 (file)
--- a/doc/rrdcreate.html
+++ b/doc/rrdcreate.html
<body style="background-color: white">
-<p><a name="__index__"></a></p>
+
<!-- INDEX BEGIN -->
+<div name="index">
+<p><a name="__index__"></a></p>
<!--
<ul>
<ul>
<li><a href="#filename"><em>filename</em></a></li>
- <li><a href="#start_b_start_time__default__now__10s_"><strong>-start</strong>|<strong>-b</strong> <em>start time</em> (default: now - 10s)</a></li>
- <li><a href="#step_s_step__default__300_seconds_"><strong>-step</strong>|<strong>-s</strong> <em>step</em> (default: 300 seconds)</a></li>
- <li><a href="#ds_dsname_dst_dst_arguments"><strong>DS:</strong><em>ds-name</em><strong>:</strong><em>DST</em><strong>:</strong><em>dst arguments</em></a></li>
+ <li><a href="#__start__b_start_time__default__now___10s_"><strong>-start</strong>|<strong>-b</strong> <em>start time</em> (default: now - 10s)</a></li>
+ <li><a href="#__step__s_step__default__300_seconds_"><strong>-step</strong>|<strong>-s</strong> <em>step</em> (default: 300 seconds)</a></li>
+ <li><a href="#ds_ds_name_dst_dst_arguments"><strong>DS:</strong><em>ds-name</em><strong>:</strong><em>DST</em><strong>:</strong><em>dst arguments</em></a></li>
<li><a href="#rra_cf_cf_arguments"><strong>RRA:</strong><em>CF</em><strong>:</strong><em>cf arguments</em></a></li>
</ul>
- <li><a href="#aberrant_behavior_detection_with_holtwinters_forecasting">Aberrant Behavior Detection with Holt-Winters Forecasting</a></li>
+ <li><a href="#aberrant_behavior_detection_with_holt_winters_forecasting">Aberrant Behavior Detection with Holt-Winters Forecasting</a></li>
<li><a href="#the_heartbeat_and_the_step">The HEARTBEAT and the STEP</a></li>
<li><a href="#how_to_measure">HOW TO MEASURE</a></li>
<li><a href="#example">EXAMPLE</a></li>
<li><a href="#example_3">EXAMPLE 3</a></li>
<li><a href="#author">AUTHOR</a></li>
</ul>
+
-->
+
+
+</div>
<!-- INDEX END -->
<p>
</p>
<h2><a name="filename"><em>filename</em></a></h2>
<p>The name of the <strong>RRD</strong> you want to create. <strong>RRD</strong> files should end
-with the extension <em>.rrd</em>. However, <strong>RRDtool</strong> will accept any
+with the extension <em class="file">.rrd</em>. However, <strong>RRDtool</strong> will accept any
filename.</p>
<p>
</p>
-<h2><a name="start_b_start_time__default__now__10s_"><strong>--start</strong>|<strong>-b</strong> <em>start time</em> (default: now - 10s)</a></h2>
+<h2><a name="__start__b_start_time__default__now___10s_"><strong>--start</strong>|<strong>-b</strong> <em>start time</em> (default: now - 10s)</a></h2>
<p>Specifies the time in seconds since 1970-01-01 UTC when the first
value should be added to the <strong>RRD</strong>. <strong>RRDtool</strong> will not accept
any data timed before or at the time specified.</p>
<em>rrdfetch</em> documentation for other ways to specify time.</p>
<p>
</p>
-<h2><a name="step_s_step__default__300_seconds_"><strong>--step</strong>|<strong>-s</strong> <em>step</em> (default: 300 seconds)</a></h2>
+<h2><a name="__step__s_step__default__300_seconds_"><strong>--step</strong>|<strong>-s</strong> <em>step</em> (default: 300 seconds)</a></h2>
<p>Specifies the base interval in seconds with which data will be fed
into the <strong>RRD</strong>.</p>
<p>
</p>
-<h2><a name="ds_dsname_dst_dst_arguments"><strong>DS:</strong><em>ds-name</em><strong>:</strong><em>DST</em><strong>:</strong><em>dst arguments</em></a></h2>
+<h2><a name="ds_ds_name_dst_dst_arguments"><strong>DS:</strong><em>ds-name</em><strong>:</strong><em>DST</em><strong>:</strong><em>dst arguments</em></a></h2>
<p>A single <strong>RRD</strong> can accept input from several data sources (<strong>DS</strong>),
for example incoming and outgoing traffic on a specific communication
line. With the <strong>DS</strong> configuration option you must define some basic
<p>For COMPUTE data sources, the format is:</p>
<p><strong>DS:</strong><em>ds-name</em><strong>:</strong><em>COMPUTE</em><strong>:</strong><em>rpn-expression</em></p>
<p>In order to decide which data source type to use, review the
-definitions that follow. Also consult the section on ``HOW TO MEASURE''
+definitions that follow. Also consult the section on "HOW TO MEASURE"
for further insight.</p>
<dl>
-<dt><strong><a name="item_gauge"><strong>GAUGE</strong></a></strong></dt>
+<dt><strong><a name="gauge" class="item"><strong>GAUGE</strong></a></strong></dt>
<dd>
<p>is for things like temperatures or number of people in a room or the
value of a RedHat share.</p>
</dd>
-<dt><strong><a name="item_counter"><strong>COUNTER</strong></a></strong></dt>
+<dt><strong><a name="counter" class="item"><strong>COUNTER</strong></a></strong></dt>
<dd>
<p>is for continuous incrementing counters like the ifInOctets counter in
happened at the 32bit or 64bit border and acts accordingly by adding
an appropriate value to the result.</p>
</dd>
-<dt><strong><a name="item_derive"><strong>DERIVE</strong></a></strong></dt>
+<dt><strong><a name="derive" class="item"><strong>DERIVE</strong></a></strong></dt>
<dd>
<p>will store the derivative of the line going from the last to the
<p><strong>NOTE on COUNTER vs DERIVE</strong></p>
<p>by Don Baarda <<a href="mailto:don.baarda@baesystems.com">don.baarda@baesystems.com</a>></p>
<p>If you cannot tolerate ever mistaking the occasional counter reset for a
-legitimate counter wrap, and would prefer ``Unknowns'' for all legitimate
+legitimate counter wrap, and would prefer "Unknowns" for all legitimate
counter wraps and resets, always use DERIVE with min=0. Otherwise, using
COUNTER with a suitable max will return correct values for all legitimate
-counter wraps, mark some counter resets as ``Unknown'', but can mistake some
+counter wraps, mark some counter resets as "Unknown", but can mistake some
counter resets for a legitimate counter wrap.</p>
<p>For a 5 minute step and 32-bit counter, the probability of mistaking a
counter reset for a legitimate wrap is arguably about 0.8% per 1Mbps of
setting will eliminate the possibility of mistaking a reset for a counter
wrap.</p>
</dd>
-<dt><strong><a name="item_absolute"><strong>ABSOLUTE</strong></a></strong></dt>
+<dt><strong><a name="absolute" class="item"><strong>ABSOLUTE</strong></a></strong></dt>
<dd>
<p>is for counters which get reset upon reading. This is used for fast counters
next overflow. Another usage is for things you count like number of messages
since the last update.</p>
</dd>
-<dt><strong><a name="item_compute"><strong>COMPUTE</strong></a></strong></dt>
+<dt><strong><a name="compute" class="item"><strong>COMPUTE</strong></a></strong></dt>
<dd>
<p>is for storing the result of a formula applied to other data sources
formula. Consolidation functions are then applied normally to the PDPs
of the COMPUTE data source (that is the rpn-expression is only applied
to generate PDPs). In database software, such data sets are referred
-to as ``virtual'' or ``computed'' columns.</p>
+to as "virtual" or "computed" columns.</p>
</dd>
</dl>
<p><em>heartbeat</em> defines the maximum number of seconds that may pass
consolidate primary data points via an aggregate function: <strong>AVERAGE</strong>,
<strong>MIN</strong>, <strong>MAX</strong>, <strong>LAST</strong>.</p>
<dl>
-<dt><strong><a name="item_average">AVERAGE</a></strong></dt>
+<dt><strong><a name="average" class="item">AVERAGE</a></strong></dt>
<dd>
<p>the average of the data points is stored.</p>
</dd>
-<dt><strong><a name="item_min">MIN</a></strong></dt>
+<dt><strong><a name="min" class="item">MIN</a></strong></dt>
<dd>
<p>the smallest of the data points is stored.</p>
</dd>
-<dt><strong><a name="item_max">MAX</a></strong></dt>
+<dt><strong><a name="max" class="item">MAX</a></strong></dt>
<dd>
<p>the largest of the data points is stored.</p>
</dd>
-<dt><strong><a name="item_last">LAST</a></strong></dt>
+<dt><strong><a name="last" class="item">LAST</a></strong></dt>
<dd>
<p>the last data points is used.</p>
<p>
</p>
<hr />
-<h1><a name="aberrant_behavior_detection_with_holtwinters_forecasting">Aberrant Behavior Detection with Holt-Winters Forecasting</a></h1>
+<h1><a name="aberrant_behavior_detection_with_holt_winters_forecasting">Aberrant Behavior Detection with Holt-Winters Forecasting</a></h1>
<p>In addition to the aggregate functions, there are a set of specialized
functions that enable <strong>RRDtool</strong> to provide data smoothing (via the
Holt-Winters forecasting algorithm), confidence bands, and the
It may help you to sort out why all this *UNKNOWN* data is popping
up in your databases:</p>
<p>RRDtool gets fed samples/updates at arbitrary times. From these it builds Primary
-Data Points (PDPs) on every ``step'' interval. The PDPs are
+Data Points (PDPs) on every "step" interval. The PDPs are
then accumulated into the RRAs.</p>
-<p>The ``heartbeat'' defines the maximum acceptable interval between
-samples/updates. If the interval between samples is less than ``heartbeat'',
+<p>The "heartbeat" defines the maximum acceptable interval between
+samples/updates. If the interval between samples is less than "heartbeat",
then an average rate is calculated and applied for that interval. If
-the interval between samples is longer than ``heartbeat'', then that
-entire interval is considered ``unknown''. Note that there are other
-things that can make a sample interval ``unknown'', such as the rate
+the interval between samples is longer than "heartbeat", then that
+entire interval is considered "unknown". Note that there are other
+things that can make a sample interval "unknown", such as the rate
exceeding limits, or a sample that was explicitly marked as unknown.</p>
-<p>The known rates during a PDP's ``step'' interval are used to calculate
-an average rate for that PDP. If the total ``unknown'' time accounts for
-more than <strong>half</strong> the ``step'', the entire PDP is marked
-as ``unknown''. This means that a mixture of known and ``unknown'' sample
-times in a single PDP ``step'' may or may not add up to enough ``known''
+<p>The known rates during a PDP's "step" interval are used to calculate
+an average rate for that PDP. If the total "unknown" time accounts for
+more than <strong>half</strong> the "step", the entire PDP is marked
+as "unknown". This means that a mixture of known and "unknown" sample
+times in a single PDP "step" may or may not add up to enough "known"
time to warrent for a known PDP.</p>
-<p>The ``heartbeat'' can be short (unusual) or long (typical) relative to
-the ``step'' interval between PDPs. A short ``heartbeat'' means you
+<p>The "heartbeat" can be short (unusual) or long (typical) relative to
+the "step" interval between PDPs. A short "heartbeat" means you
require multiple samples per PDP, and if you don't get them mark the
-PDP unknown. A long heartbeat can span multiple ``steps'', which means
+PDP unknown. A long heartbeat can span multiple "steps", which means
it is acceptable to have multiple PDPs calculated from a single
-sample. An extreme example of this might be a ``step'' of 5 minutes and a
-``heartbeat'' of one day, in which case a single sample every day will
+sample. An extreme example of this might be a "step" of 5 minutes and a
+"heartbeat" of one day, in which case a single sample every day will
result in all the PDPs for that entire day period being set to the
same average rate. <em>-- Don Baarda <<a href="mailto:don.baarda@baesystems.com">don.baarda@baesystems.com</a>></em></p>
<pre>
@@ -453,7 +459,7 @@ same average rate. <em>-- Don Baarda <<a href="mailto:don.baarda@baesystems.c
<h1><a name="how_to_measure">HOW TO MEASURE</a></h1>
<p>Here are a few hints on how to measure:</p>
<dl>
-<dt><strong><a name="item_temperature">Temperature</a></strong></dt>
+<dt><strong><a name="temperature" class="item">Temperature</a></strong></dt>
<dd>
<p>Usually you have some type of meter you can read to get the temperature.
<strong>GAUGE</strong> data source type for this. RRDtool will then record your reading
together with the time.</p>
</dd>
-<dt><strong><a name="item_mail_messages">Mail Messages</a></strong></dt>
+<dt><strong><a name="mail_messages" class="item">Mail Messages</a></strong></dt>
<dd>
<p>Assume you have a method to count the number of messages transported by
number of seconds in a day. Because all math is run with Doubles, the
precision should be acceptable.</p>
</dd>
-<dt><strong><a name="item_it_27s_always_a_rate">It's always a Rate</a></strong></dt>
+<dt><strong><a name="it_s_always_a_rate" class="item">It's always a Rate</a></strong></dt>
<dd>
<p>RRDtool stores rates in amount/second for COUNTER, DERIVE and ABSOLUTE
amount/second which you might be tempted to convert to an absolute
amount by multiplying by the delta-time between the points. RRDtool
plots continuous data, and as such is not appropriate for plotting
-absolute amounts as for example ``total bytes'' sent and received in a
+absolute amounts as for example "total bytes" sent and received in a
router. What you probably want is plot rates that you can scale to
bytes/hour, for example, or plot absolute amounts with another tool
that draws bar-plots, where the delta-time is clear on the plot for
RRA:MIN:0.5:12:2400 \
RRA:MAX:0.5:12:2400 \
RRA:AVERAGE:0.5:12:2400</pre>
-<p>This sets up an <strong>RRD</strong> called <em>temperature.rrd</em> which accepts one
+<p>This sets up an <strong>RRD</strong> called <em class="file">temperature.rrd</em> which accepts one
temperature value every 300 seconds. If no new data is supplied for
more than 600 seconds, the temperature becomes <em>*UNKNOWN*</em>. The
minimum acceptable value is -273 and the maximum is 5'000.</p>