[collectd] Proposition: Holt-Winters Forecasting

Florian Forster octo at verplant.org
Wed Jun 27 18:11:00 CEST 2007

Hi Sergiusz,

On Wed, Jun 27, 2007 at 12:49:48PM +0100, Sergiusz Pawlowicz wrote:
> Forecast "On" - Holt-Winters Forecasting is added by default to all
> plugins but could be switched off explicitly in module definition.

as we've discussed on IRC, I think that there's no ``one size fits all''
with seasonal data, so defining that on a per-type basis is IMHO the way
to go.

> Each module can define it's own values for forecasting, with the same
> syntax as default in rrdtool definition, but of course without Semi
> value.

Ugh, that means adding the configuration to each plugin again and
again.. Also, that information would need to be transfered over the
network in this case, AND the separation of read and write plugins would
be given up - I regard that separation a big step forward from version

While we're at it I think we can add per-type definition of the other
parameters, `RRARows', `RRATimespan', and `XFF', too. That may be a lot
of work, but being able to keep the traffic data for 10 years but the
swap utilization only for 6 months may be very interesting..

Last but not least: The step of an RRD-file depends on the interval the
value was collected with. That may be a different value for each client
(starting with version 4.1). So the RRA length and seasonal interval
should be given in seconds and then the number of datapoints should be
calculated from that..

So, putting it all together I'd rather do it along these lines:

  <Plugin rrdtool>
    <Type "if_octets">
      RRARows 2000           # keep more detailed data
      RRATimespan 86400      # day
      :           :
      RRATimespan 315576000  # 10 years
      XFF 0.3                # Just for completeness
      # Seasonal approach #1
      Season  604800  86400 0.1     # one week, daily; alpha = 0.1, beta = alpha
      Season 2678400 604800 0.2 0.3 # one month, weekly; alpha = 0.2, beta = 0.3
      # Seasonal approach #2
        Length 604800
	Period 86400
	Alpha  0.1
	Beta   0.2
        Length 2678400
	Period 604800
	Alpha  0.3
	Beta   0.4
    # Other options..

The syntax for the first approach would be
  Season <Length> <Period> [<Alpha> [<Beta>]]
If <Alpha> and <Beta> are omitted standard values are used. If only
<Beta> is ommited it's set to the same value as <Alpha>.

The second approch could work basically the same way, but may be easier
to understand (there's no ``second argument means ..'' kind of confusion
there). It's much more bloated, though.

Florian octo Forster
Hacker in training
GnuPG: 0x91523C3D
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mailman.verplant.org/pipermail/collectd/attachments/20070627/6abfdf64/attachment.pgp 

More information about the collectd mailing list