Difference between revisions of "Roadmap"

From collectd Wiki
Jump to: navigation, search
m (perfmon output)
(Update to a post-4.7 state.)
Line 7: Line 7:
 
== Implemented features ==
 
== Implemented features ==
  
The following features have been implemented and will be released as version 4.7.0. The planned release date is <em>Monday, May 11th</em>, but the past has shown that these dates are very vague&nbsp;;). You can check out our [http://collectd.org/dev-info.shtml#repository Git repository] to test these features. Any feedback and bug reports are welcome!
+
The following features have been implemented and will be released as version 4.8.0. You can check out our [http://collectd.org/dev-info.shtml#repository Git repository] to test these features. Any feedback and bug reports are welcome!
  
=== [[Plugin:Java|Java]] plugin ===
+
=== [[Plugin:CouchDB|CouchDB]] plugin ===
  
The <em>Java</em> plugin exposes the <em>collectd</em> API to Java, making it possible to write new plugins in Java, too. Documentation of the plugin is already available as [http://collectd.org/documentation/manpages/collectd-java.5.shtml collectd-java(5)].
+
The ''CouchDB'' plugin queries a page from the database of the same name and parses it, similar to the [[Plugin:cURL|cURL]] and [[Plugin:memcachec|memcachec]] plugins. The plugin has been written by ''Doug MacEachern''.
 
 
=== [[Plugin:Table|Table]] plugin ===
 
 
 
The <em>Table</em> plugin makes it possible to parse files that contain tabular data, e.&nbsp;g. many files under <code>/proc</code> on Linux.
 
 
 
=== "Tick-less" read-function scheduling ===
 
 
 
Enable each plugin to register a read function with an own interval setting. This would be helpful for
 
plugins which should not be run very often. The [[Plugin:OneWire|OneWire]] and [[Plugin:SNMP|SNMP]] plugins come to mind. To implement this, put each <code>read_func_t</code> into a heap, sorted by the absolute time when the next read should occur, and have read threads pick callbacks from that heap. This is partially implemented, the code can be found in the Git repository.
 
 
 
=== Multiple databases in the [[Plugin:MySQL|MySQL]] plugin ===
 
 
 
Makes it possible to collect database statistics from multiple MySQL instances.
 
 
 
=== More flexible intervals in the [[Plugin:SNMP|SNMP]] plugin ===
 
 
 
The <em>SNMP</em> plugin uses the "complex read functions" now to register one read function for each device/host that's configured. This allows vastly more flexible "Intervals" being configured and moves all of the thread handling out of the plugin.
 
 
 
=== [[Plugin:gmond|gmond]] plugin ===
 
 
 
The new <em>gmond</em> plugin provides interoperability with [http://ganglia.info/ Ganglia]. It receives and decodes multicast traffic from <code>gmond</code> instances and dispatches the values to <em>collectd</em>. A possibility to add custom <em>“metrics”</em> is available, too.
 
 
 
=== [[Plugin:Uptime|Uptime]] plugin ===
 
 
 
<em>Marco Chiappero</em> has written a plugin to keep track of the uptime of a system. The plugin should work on Linux, BSDs (including Mac OS X) and Solaris. He wants to change the Linux code to determine the boot-time once and then use <em>time(2)</em> to determine the current uptime, as it's done in the *BSD and Solaris code.
 
 
 
=== More flexible intervals in the [[Plugin:OneWire|OneWire]] plugin ===
 
 
 
Using a "complex read function" of course, see the note about the <em>SNMP</em> plugin above.
 
 
 
=== [[Plugin:TED|TED]] plugin ===
 
 
 
Plugin to read the current voltage and power consumption from <em>The Energy Detective</em> (TED). The homepage of the company selling those devices is http://www.theenergydetective.com/. Code has been provided by <em>Eric Reed</em>.
 
 
 
=== [[Plugin:memcachec|memcachec]] plugin ===
 
 
 
Plugin to query pages/data from <em>memcached</em> and parse them, just like the [[Plugin:cURL|cURL]] plugin does.
 
 
 
=== Remove liboping ===
 
 
 
The included version of [http://verplant.org/liboping/ liboping] was out of date. Since there is no real reason to handle this library specially, is has been removed from the <em>collectd</em> sources.
 
 
 
=== Authentication / Encryption for the [[Plugin:Network|Network]] plugin ===
 
 
 
Implemented using [http://www.gnu.org/software/libgcrypt/ libgcrypt], see http://mailman.verplant.org/pipermail/collectd/2009-April/002580.html.
 
 
 
=== Multiple servers in the [[Plugin:Apache|Apache]] plugin ===
 
 
 
Make it possible to configure multiple servers in the <em>Apache</em> plugin. The patch has been provided by <em>Amit Gupta</em>. <strong>TODO:</strong> Use "complect read function" here, too.
 
  
 
== Planned features ==
 
== Planned features ==
  
 
The following features are actively being worked upon. They are in various stages of completion and may or may not make it into the next release. They should have a contact (name) associated with them, so people who are interested can contact the person working on a feature. Please don't add email addresses of other people without their permission. If you want to contact a person below, please look for the email address using the mailing list archives.
 
The following features are actively being worked upon. They are in various stages of completion and may or may not make it into the next release. They should have a contact (name) associated with them, so people who are interested can contact the person working on a feature. Please don't add email addresses of other people without their permission. If you want to contact a person below, please look for the email address using the mailing list archives.
 
=== <em>ip6tables</em> plugin ===
 
 
IPv6 version of the [[Plugin:IPTables|IP-Tables]] plugin. <em>Marco Chiappero</em> wants to look into it.
 
  
 
=== perfmon output ===
 
=== perfmon output ===
Line 74: Line 21:
 
<em>Dave McLellan</em> is looking into a text output plugin which creates <em>perfmon</em> compatible output (last contact: April 15<sup>th</sup>, 2009). This feature will probably not make it into 4.7. See also: [[#output_text_plugin]]
 
<em>Dave McLellan</em> is looking into a text output plugin which creates <em>perfmon</em> compatible output (last contact: April 15<sup>th</sup>, 2009). This feature will probably not make it into 4.7. See also: [[#output_text_plugin]]
  
=== <em>fscache</em> plugin ===
+
=== Library for binary network protocol ===
  
Plugin for the new network file system caching infrastructure in ''Linux 2.6.30''. ''Edward Konetzko'' is working on it, see his mail from April 17<sup>th</sup>.
+
Write a library for the binary network protocol, so that external applications have an easier job interfacing with <em>collectd</em>. The new [[#Authentication / Encryption for the Network plugin|authentication and encryption feature]] makes this even more desirable. [[User:Octo|Octo]] is working on it.
 
 
<em>See also: http://people.redhat.com/~dhowells/fscache/FS-Cache.pdf</em>
 
  
 
== Wishlist / Ideas ==
 
== Wishlist / Ideas ==
  
 
The following is a list of ideas we had but so far nobody has stepped up to implement them. Feel free to add your own “cool stuff”&nbsp;:)
 
The following is a list of ideas we had but so far nobody has stepped up to implement them. Feel free to add your own “cool stuff”&nbsp;:)
 
=== Library for binary network protocol ===
 
 
Write a library for the binary network protocol, so that external applications have an easier job interfacing with <em>collectd</em>. The new [[#Authentication / Encryption for the Network plugin|authentication and encryption feature]] makes this even more desirable.
 
  
 
=== [[Plugin:RRDtool|RRDtool]] plugin: Type-specific configuration ===
 
=== [[Plugin:RRDtool|RRDtool]] plugin: Type-specific configuration ===

Revision as of 07:21, 12 May 2009

Description

Live goes on. Which features are planned in future releases? This page is more a list of ideas than a fixed plan for the future, but it may give you an idea where the journey is going. If you want to contribute but don't know what is to be done, simply drop us a short mail and we'll get you started.

This file is not automatically generated and may thus be out of date from time to time. To give you an idea how fresh this information is please take a look at its history.

Implemented features

The following features have been implemented and will be released as version 4.8.0. You can check out our Git repository to test these features. Any feedback and bug reports are welcome!

CouchDB plugin

The CouchDB plugin queries a page from the database of the same name and parses it, similar to the cURL and memcachec plugins. The plugin has been written by Doug MacEachern.

Planned features

The following features are actively being worked upon. They are in various stages of completion and may or may not make it into the next release. They should have a contact (name) associated with them, so people who are interested can contact the person working on a feature. Please don't add email addresses of other people without their permission. If you want to contact a person below, please look for the email address using the mailing list archives.

perfmon output

Dave McLellan is looking into a text output plugin which creates perfmon compatible output (last contact: April 15th, 2009). This feature will probably not make it into 4.7. See also: #output_text_plugin

Library for binary network protocol

Write a library for the binary network protocol, so that external applications have an easier job interfacing with collectd. The new authentication and encryption feature makes this even more desirable. Octo is working on it.

Wishlist / Ideas

The following is a list of ideas we had but so far nobody has stepped up to implement them. Feel free to add your own “cool stuff” :)

RRDtool plugin: Type-specific configuration

This would allow to keep interesting data longer and less interesting data only for a short time. Also seasonal data could be added. It's not reasonable to add seasonal data to all RRD files, because it operates on unconsolidated primary datapoints (thus taking up a lot of disk space) and you can't specify one seasonal period that fits all kinds of data. A discussion of this feature can be found in the mailinglist's archive.

Maybe an option that can be passed to write functions by the Chains mechanism would be a good idea for implementing this.

Distributed setups

Make it possible to have several "servers" with shared storage. When one server dies another one takes its place, so that you don't have gaps in your statistics. This is probably best implemented as a match that matches only those values the host is responsible for. Probably best to implement real simple first and add automatic fail-over as a second step.

A solution for non-shared storage is probably even harder to implement and likely not worth the effort.

Embed more scripting languages

Python and Lua come to mind.

Parrot is now at version 1.0 and provides a stable API. Thread- and reentrant-safety is not quite there yet, but it may be worth keeping on eye on.

Store to RDBMS

Being able to store values in an RDBMS would be nice. Bob Cotton has put together some SQL for PostgreSQL and a Perl based plugin to store values into it. This could serve as a starting point as a C based plugin with the same SQL backend.

See also: http://github.com/bcotton/collectd_dbstore/tree/master

output_text plugin

Sebastian has suggested a output_text plugin that can write values to arbitrarily formatted (text-)files. See also: #perfmon_output