[collectd] Plans for collectd 4 [discussion]

Florian Forster octo at verplant.org
Tue Apr 11 09:36:10 CEST 2006


Hello all,

the current design of collectd is very inflexible, I'm afraid. Thus,
such logical things as a Local-Server-hybrid-mode (collect data locally
_and_ accept network traffic) or an SNMP plugin don't exist. I've though
about an alternative design for a while and want to share my ideas with
you for some discussion. I haven't started coding one line of it, so
this is all far far away.

First, I want to make the plugin-structure more abstract:
- Data is read by `input plugins' such as `system' (basically what we
  have now: Use some system-dependend code to actually collect the
  values from somewhere), `network' (basically what the `server mode'
  does now) and `snmp' (read values from SNMP enabled devices).
    Input plugins should be worked and have their own event loop. This
  will make passive monitoring (e.g. snmp-traps or similar) possible.
- Data is written by `output plugins', such as `rrd' (write to RRD
  file(s)), `network' (basically the `client mode'), `logfile',
  `nagios', you name it.
- Between the `input' and `output' side some logic decides which data is
  sent where, with the option to send it to multiple output plugins.
- Right after the `input' interface and right before the `output'
  interface should be `mangle' hooks to manipulate the data. I don't
  know what to use that for yet, but people will come up with a use, I'm
  confident.

I want to implement another network-protocol. The minimal features I
want to have is:
- The protocol should carry the `host'. Right now it's assumed that the
  data originates from the sending host. This will no longer hold true:
  The `snmp input plugin' will next to never query `localhost' and you
  can use collectd in `proxy mode' by using `network' as input and
  output plugin.
- It should be extendable. Therefore, the protocol itself should be as
  small as anyhow possible with all functionality in `options'. Adding a
  new feature to the protocol should work by defining a new option.
- It should be possible to sign/verify the data.
Optional feature:
- Possibility to encrypt/decrypt the data.
- It might be neccessary to include the `step' in the network packets so
  receiving instances `know' how often to expect data readings.

It should be possible to base the `routing decision' upon:
- The host the data originates from,
- the `type' of the data, and
- the values being sent (i.e. the `DS' (data source) and the value,
  possible with some threshold).

Any thoughts? Ideas? Wishes?
Regards,
-octo
-- 
Florian octo Forster
Hacker in training
GnuPG: 0x91523C3D
http://verplant.org/
-------------- 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/20060411/cec49c4f/attachment-0001.pgp


More information about the collectd mailing list