# Collectd

collectd is a Unix daemon that collects, transfers and stores performance data of computers and network equipment. The acquired data is meant to help system administrators maintain an overview over available resources to detect existing or looming bottlenecks.
The first version of the daemon was written in 2005 by Florian Forster and has been further developed as free open-source project. Other developers have written improvements and extensions to the software that have been incorporated into the project. Most files of the source code are licensed under the terms of the GNU General Public License, version 2 (GPLv2), the remaining files are licensed under other open source licenses.

## Operation

collectd uses a modular design: The daemon itself only implements infrastructure for filtering and relaying data as well as auxiliary functions and requires very few resources, it even runs on OpenWrt-powered embedded devices. Data acquisition and storage is handled by plug-ins in the form of shared objects. This way code specific to one operating system is mostly kept out of the actual daemon. Plug-ins may have their own dependencies, for example a specific operating system or software libraries. Other tasks performed by the plug-ins include processing of “notifications” and log messages.
Data acquisition plug-ins, called "read plug-ins" in collectd's documentation, can be roughly put into three categories:
* Operating system plug-ins collect information such as CPU utilization, memory usage, or number of users logged into a system. These plug-ins usually need to be ported to each operating system. Not all such plug-ins are available for all operating systems.
* Application plug-ins collect performance data from or about an application running on the same or a remote computer, for example the Apache HTTP Server. These plug-ins often use software libraries but are usually otherwise operating system independent.
* Generic plug-ins offer basic functions that the user can employ to perform specific tasks. Examples are querying of network equipment using SNMP or execution of custom programs or scripts.
So called "write plug-ins" offer the possibility to store the collected data on disk using RRD- or CSV-files, or to send data over the network to a remote instance of the daemon.

## Networking

Included in the source code distribution of collectd is the so-called "network" plug-in, which can be used to send and receive data to/from other instances of the daemon. In a typical networked setup the daemon would run on each monitored host (called "clients") with the network plug-in configured to send collected data to one or more network addresses. On one or more so called "servers" the same daemon would run but with a different configuration, so that the network plug-in receives data instead of sending it. Often the RRDtool-plug-in is used on servers to store the performance data.
The plug-in uses a binary network protocol over UDP. Both, IPv4 and IPv6 are supported as network layer. It is possible to use unicast (point-to-point) and multicast (point-to-group) addressing. Authentication and encryption has been added to the protocol with version 4.7.0, released in May 2009.