Modularity / Portability
Everything in collectd is done in plugins. Well, except parsing the configfile. This means that the main daemon doesn't have any external dependencies and should run on nearly anything that has heard of POSIX. The daemon has been reported as working on Linux, Solaris, Mac OS X, FreeBSD, NetBSD, and OpenBSD. It's likely that other UNIX® flavors work to some extend, too.
The daemon does not build on Microsoft® Windows® without major modifications. Client-only Windows® support is available in form of SSC Serv, a native Windows® service that implements collectd's network protocol.
collectd's configuration is kept as easy as possible: Besides which modules to load you don't need to configure anything else, but you can customize the daemon to your liking if you want.
In contrast to most similar software, collectd is not a script but written in plain C for performance and portability. As a daemon it stays in memory, so there is no need to start up a heavy interpreter every time new values should be logged. This allows collectd to have a 10 second default resolution while being nice to the system. It runs on small embedded WLAN routers with OpenWrt without much impact on the CPU. The result are very high resolution graphics. The sample graph gives you an idea of the detail you can expect. Please note that this is a ten-minute sample!
Sophisticated network code
collectd utilizes a data push model, i. e. the data is collected and sent (pushed) to a multicast group or server. Thus there is no central instance which queries any values.
The network code utilizes the advanced network technologies IPv6 and Multicast. But of course you can use collectd without any of this knickknack (i. e. IPv4 unicast ;), too. Since you can configure data transmission and reception separately, you can realize the following setups easily (see the networking introduction for more details):
The network protocol has been designed to be lightweight, so data collection over slow network links isn't a problem. The protocol is extensible, so it's open for new features in the future without breaking backwards compatibility.
Beginning with version 4.7, the network plugin offers cryptographic extensions to sign or encrypt network traffic. Servers can be instructed to only accept signed or encrypted traffic, so that information cannot be forged and, in case of encrypted data, read.
Using multicast can be thought of as “auto discovery”: The server doesn't (need to) know what clients exists (it never does) and the clients don't need to know the server's IP-address. In fact, they don't even know how many servers there are. You can think of it like radio communication: Once set to the right channel you can receive all the data transmitted by some senders – no matter what their position is.
There is a variety of means by which you can extend the functionality of collectd to your needs:
Build to scale
collectd is able to handle any number of hosts, from one to several hundred (or possibly thousand, but no one has reported that yet). This is achieved by utilizing the resources as efficient as possible, e. g. by merging multiple RRD-updates into one update operation (see this in-depth article), merging the biggest possible number of values into each one network packet and so on. The multithreaded layout allows for multiple plugins to be queried simultaneously – without running into problems due to IO-latencies.
The Simple Network Management Protocol (SNMP) is in widespread use with various network equipment, for example switches, routers, rack monitoring systems, thermometers, UPSes, and so on. The SNMP plugin provides a generic interface to the SNM-protocol which you can use to query values and dispatch them over collectd's mechanisms, e. g. transmit them to a server instance somewhere else. Since devices one would query using SNMP usually are embedded devices with not very much computing power, you can set the interval in which data is gathered for each host individually. And since it may take a while for a timeout to occur or the device may take a little while to answer a request, the hosts are queried in parallel using multiple threads.
Integration with monitoring solutions
With version 4.3 the concept of notifications and thresholds has been added to collectd. This allows you to send notifications through the daemon and allows for simple threshold checking. However, collectd is not a monitoring solution. We will probably add some features to make the notification system more usable, but at the moment collectd is no match for a sophisticated monitoring solution.
To make it possible to integrate collectd into the popular monitoring
solution Nagios, a “check” has been written for that. It's called