I am working on a small project of mine based on collecting metrics of my power consumption and it involves using collectd on a small device (more to come about that in few days) and collecting the data on a remote collectd server.
Well, long story short, I wanted to use influxdb instead of collectd RRD backend but I didn’t want to use a proxy (like influxdb-collectd-proxy or collectd-influxdb-proxy) between collectd and influxdb to make them talk together. While reading the commlitlog, I came across the git log and discovered that influxdb gained native collectd protocol since 0.8.4. So it means influx can replace seamlessly a collectd server.
As it was almost unnoticed and there is no documentation provided on the influxdb site, I decided documentating that would be cool.
So I assume you have a working collectd client, it should have something like that.
Loadplugin network ... <Plugin "network"> Server "foobar.com" "25826" #25826 is the collect server port </Plugin "network">
I provide an example configuration. So you have to add this stanza to the influxdb configuration.
[input_plugins.collectd] enabled = true port = 25826 database = "collectd" typesdb = "/usr/share/collectd/types.db"
I guess it speaks for itself (port 25826 is the default server port of collectd), except the
typesdb definition, which the file mapping used by collectd to understand the data it receives and store it. So to have this file you have 2 solutions, install collectd or retrieve an example somewhere.
Restart influxdb and you’re done, influxdb replaced your collectd server. You can check you receive data by executing the query
SELECT * from /.*/ or
list series in the datatabase
In my specific case, I kept collectd alongside with influxdb, and configure my collectd clients to send data to the two servers. But playing with grafana on top of it makes me think that I won’t keep collectd for long for storing data (don’t get me wrong, collectd stays a wonderful for collecting metrics).
Edit: I did a patch to update the influxdb documentation