collectd - System information collection daemon
=================================================
-http://collectd.org/
+https://collectd.org/
About
-----
* collectd is able to collect the following data:
- apache
- Apache server utilization: Number of bytes transfered, number of
+ Apache server utilization: Number of bytes transferred, number of
requests handled and detailed scoreboard statistics
- apcups
APC UPS Daemon: UPS charge, load, input/output/battery voltage, etc.
- apple_sensors
- Sensors in Macs running Mac OS X / Darwin: Temperature, fanspeed and
+ Sensors in Macs running Mac OS X / Darwin: Temperature, fan speed and
voltage sensors.
- aquaero
- Various sensors in the Aquaero 5 watercooling board made by Aquacomputer.
+ Various sensors in the Aquaero 5 water cooling board made by Aquacomputer.
- ascent
Statistics about Ascent, a free server for the game `World of Warcraft'.
+ - barometer
+ Reads absolute barometric pressure, air pressure reduced to sea level and
+ temperature. Supported sensors are MPL115A2 and MPL3115 from Freescale
+ and BMP085 from Bosch.
+
- battery
Batterycharge, -current and voltage of ACPI and PMU based laptop
batteries.
Name server and resolver statistics from the `statistics-channel'
interface of BIND 9.5, 9,6 and later.
+ - ceph
+ Statistics from the Ceph distributed storage system.
+
- cgroups
CPU accounting information for process groups under Linux.
+ - chrony
+ Chrony daemon statistics: Local clock drift, offset to peers, etc.
+
- conntrack
Number of nf_conntrack entries.
- cpufreq
CPU frequency (For laptops with speed step or a similar technology)
+ - cpusleep
+ CPU sleep: Time spent in suspend (For mobile devices which enter suspend automatically)
+
- curl
Parse statistics from websites using regular expressions.
- dns
DNS traffic: Query types, response codes, opcodes and traffic/octets
- transfered.
+ transferred.
+
+ - dpdkstat
+ Collect DPDK interface statistics.
+ See docs/BUILD.dpdkstat.md for detailed build instructions.
+
+ - drbd
+ Collect individual drbd resource statistics.
- email
Email statistics: Count, traffic, spam scores and checks.
Values gathered by a custom program or script.
See collectd-exec(5).
+ - fhcount
+ File handles statistics.
+
- filecount
Count the number of files in directories.
- gmond
Receive multicast traffic from Ganglia instances.
+ - gps
+ Monitor gps related data through gpsd.
+
- hddtemp
- Harddisk temperatures using hddtempd.
+ Hard disk temperatures using hddtempd.
+
+ - hugepages
+ Report the number of used and free hugepages. More info on
+ hugepages can be found here:
+ https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt.
+
+ - intel_rdt
+ The intel_rdt plugin collects information provided by monitoring features
+ of Intel Resource Director Technology (Intel(R) RDT) like Cache Monitoring
+ Technology (CMT), Memory Bandwidth Monitoring (MBM). These features
+ provide information about utilization of shared resources like last level
+ cache occupancy, local memory bandwidth usage, remote memory bandwidth
+ usage, instructions per clock.
+ <https://01.org/packet-processing/cache-monitoring-technology-memory-bandwidth-monitoring-cache-allocation-technology-code-and-data>
- interface
Interface traffic: Number of octets, packets and errors for each
interface.
- - iptables
- Iptables' counters: Number of bytes that were matched by a certain
- iptables rule.
+ - ipc
+ IPC counters: semaphores used, number of allocated segments in shared
+ memory and more.
- ipmi
IPMI (Intelligent Platform Management Interface) sensors information.
+ - iptables
+ Iptables' counters: Number of bytes that were matched by a certain
+ iptables rule.
+
- ipvs
IPVS connection statistics (number of connections, octets and packets
for each service and destination).
- java
Integrates a `Java Virtual Machine' (JVM) to execute plugins in Java
- bytecode. See “Configuring with libjvm” below.
+ bytecode.
+ See docs/BUILD.java.md for detailed build instructions.
- load
System load average over the last 1, 5 and 15 minutes.
Detailed CPU statistics of the “Logical Partitions” virtualization
technique built into IBM's POWER processors.
- - libvirt
- CPU, memory, disk and network I/O statistics from virtual machines.
+ - lua
+ The Lua plugin implements a Lua interpreter into collectd. This
+ makes it possible to write plugins in Lua which are executed by
+ collectd without the need to start a heavy interpreter every interval.
+ See collectd-lua(5) for details.
- lvm
Size of “Logical Volumes” (LV) and “Volume Groups” (VG) of Linux'
Queries very detailed usage statistics from wireless LAN adapters and
interfaces that use the Atheros chipset and the MadWifi driver.
- - mbmon
- Motherboard sensors: temperature, fanspeed and voltage information,
- using mbmon(1).
-
- md
Linux software-RAID device information (number of active, failed, spare
and missing disks).
+ - mbmon
+ Motherboard sensors: temperature, fan speed and voltage information,
+ using mbmon(1).
+
- memcachec
Query and parse data from a memcache daemon (memcached).
- ntpd
NTP daemon statistics: Local clock drift, offset to peers, etc.
+ - numa
+ Information about Non-Uniform Memory Access (NUMA).
+
- nut
Network UPS tools: UPS current, voltage, power, charge, utilisation,
temperature, etc. See upsd(8).
- - numa
- Information about Non-Uniform Memory Access (NUMA).
-
- olsrd
Queries routing information from the “Optimized Link State Routing”
daemon.
Read onewire sensors using the owcapu library of the owfs project.
Please read in collectd.conf(5) why this plugin is experimental.
+ - openldap
+ Read monitoring information from OpenLDAP's cn=Monitor subtree.
+
- openvpn
RX and TX of each client in openvpn-status.log (status-version 2).
<http://openvpn.net/index.php/documentation/howto.html>
See collectd-python(5) for details.
- redis
- The redis plugin gathers information from a redis server, including:
+ The redis plugin gathers information from a Redis server, including:
uptime, used memory, total connections etc.
- routeros
to have its measurements fed to collectd. This includes multimeters,
sound level meters, thermometers, and much more.
+ - smart
+ Collect SMART statistics, notably load cycle count, temperature
+ and bad sectors.
+
- snmp
Read values from SNMP (Simple Network Management Protocol) enabled
network devices such as switches, routers, thermometers, rack monitoring
servers, etc. See collectd-snmp(5).
+ - statsd
+ Acts as a StatsD server, reading values sent over the network from StatsD
+ clients and calculating rates and other aggregates out of these values.
+
- swap
- Pages swapped out onto harddisk or whatever is called `swap' by the OS..
+ Pages swapped out onto hard disk or whatever is called `swap' by the OS..
- table
Parse table-like structured files.
- tail
- Follows (tails) logfiles, parses them by lines and submits matched
+ Follows (tails) log files, parses them by lines and submits matched
values.
- tail_csv
Reads the number of records and file size from a running Tokyo Tyrant
server.
+ - turbostat
+ Reads CPU frequency and C-state residency on modern Intel
+ turbo-capable processors.
+
- uptime
System uptime statistics.
- varnish
Various statistics from Varnish, an HTTP accelerator.
+ - virt
+ CPU, memory, disk and network I/O statistics from virtual machines.
+
- vmem
- Virtual memory statistics, e. g. the number of page-ins/-outs or the
+ Virtual memory statistics, e.g. the number of page-ins/-outs or the
number of pagefaults.
- vserver
- wireless
Link quality of wireless cards. Linux only.
+ - xencpu
+ XEN Hypervisor CPU stats.
+
- xmms
Bitrate and frequency of music played with XMMS.
- zfs_arc
Statistics for ZFS' “Adaptive Replacement Cache” (ARC).
+ - zone
+ Measures the percentage of cpu load per container (zone) under Solaris 10
+ and higher
+
+ - zookeeper
+ Read data from Zookeeper's MNTR command.
+
* Output can be written or sent to various destinations by the following
plugins:
diskspace but is extremely portable and can be analysed with almost
every program that can analyse anything. Even Microsoft's Excel..
+ - grpc
+ Send and receive values over the network using the gRPC framework.
+
+ - lua
+ It's possible to implement write plugins in Lua using the Lua
+ plugin. See collectd-lua(5) for details.
+
+ - mqtt
+ Publishes and subscribes to MQTT topics.
+
- network
Send the data to a remote host to save the data somehow. This is useful
for large setups where the data should be saved by a dedicated machine.
requests. The transmitted data is either in a form understood by the
Exec plugin or formatted in JSON.
+ - write_kafka
+ Sends data to Apache Kafka, a distributed queue.
+
+ - write_log
+ Writes data to the log
+
- write_mongodb
Sends data to MongoDB, a NoSQL database.
- write_riemann
Sends data to Riemann, a stream processing and monitoring system.
+ - write_sensu
+ Sends data to Sensu, a stream processing and monitoring system, via the
+ Sensu client local TCP socket.
+
+ - write_tsdb
+ Sends data OpenTSDB, a scalable no master, no shared state time series
+ database.
+
* Logging is, as everything in collectd, provided by plugins. The following
plugins keep us informed about what's going on:
- logfile
- Writes logmessages to a file or STDOUT/STDERR.
+ Writes log messages to a file or STDOUT/STDERR.
- perl
Log messages are propagated to plugins written in Perl as well.
- syslog
Logs to the standard UNIX logging mechanism, syslog.
+ - log_logstash
+ Writes log messages formatted as logstash JSON events.
+
* Notifications can be handled by the following plugins:
- notify_desktop
Send an E-mail with the notification message to the configured
recipients.
+ - notify_nagios
+ Submit notifications as passive check results to a local nagios instance.
+
- exec
Execute a program or script to handle the notification.
See collectd-exec(5).
values are out of bounds. See collectd-threshold(5) for details.
- uuid
- Sets the hostname to an unique identifier. This is meant for setups
+ Sets the hostname to a unique identifier. This is meant for setups
where each client may migrate to another physical host, possibly going
through one or more name changes in the process.
time starting up again and again. With the exception of the exec plugin no
processes are forked. Caching in output plugins, such as the rrdtool and
network plugins, makes sure your resources are used efficiently. Also,
- since collectd is programmed multithreaded it benefits from hyperthreading
+ since collectd is programmed multithreaded it benefits from hyper-threading
and multicore processors and makes sure that the daemon isn't idle if only
one plugin waits for an IO-operation to complete.
---------
* collectd's configuration file can be found at `sysconfdir'/collectd.conf.
- Run `collectd -h' for a list of builtin defaults. See `collectd.conf(5)'
+ Run `collectd -h' for a list of built-in defaults. See `collectd.conf(5)'
for a list of options and a syntax description.
* When the `csv' or `rrdtool' plugins are loaded they'll write the values to
* Usual suspects: C compiler, linker, preprocessor, make, ...
+ collectd makes use of some common C99 features, e.g. compound literals and
+ mixed declarations, and therefore requires a C99 compatible compiler.
+
+ On Debian and Ubuntu, the "build-essential" package should pull in
+ everything that's necessary.
+
* A POSIX-threads (pthread) implementation.
Since gathering some statistics is slow (network connections, slow devices,
- etc) the collectd is parallelized. The POSIX threads interface is being
+ etc) collectd is parallelized. The POSIX threads interface is being
used and should be found in various implementations for hopefully all
platforms.
+ * When building from the Git repository, flex (tokenizer) and bison (parser
+ generator) are required. Release tarballs include the generated files – you
+ don't need these packages in that case.
+
* aerotools-ng (optional)
Used by the `aquaero' plugin. Currently, the `libaquaero5' library, which
is used by the `aerotools-ng' toolkit, is not compiled as a shared object
particular.
<http://developer.apple.com/corefoundation/>
+ * libatasmart (optional)
+ Used by the `smart' plugin.
+ <http://git.0pointer.de/?p=libatasmart.git>
+
+ * libcap (optional)
+ The `turbostat' plugin can optionally build Linux Capabilities support,
+ which avoids full privileges requirement (aka. running as root) to read
+ values.
+ <http://sites.google.com/site/fullycapable/>
+
* libclntsh (optional)
Used by the `oracle' plugin.
- * libcredis (optional)
- Used by the redis plugin. Please note that you require a 0.2.2 version
- or higher. <http://code.google.com/p/credis/>
+ * libhiredis (optional)
+ Used by the redis plugin. Please note that you require a 0.10.0 version
+ or higher. <https://github.com/redis/hiredis>
* libcurl (optional)
- If you want to use the `apache', `ascent', `curl', `nginx', or `write_http'
- plugin.
+ If you want to use the `apache', `ascent', `bind', `curl', `curl_json',
+ `curl_xml', `nginx', or `write_http' plugin.
<http://curl.haxx.se/>
* libdbi (optional)
Used by the `gmond' plugin to process data received from Ganglia.
<http://ganglia.info/>
+ * libgrpc (optional)
+ Used by the `grpc' plugin. gRPC requires a C++ compiler supporting the
+ C++11 standard.
+ <https://grpc.io/>
+
* libgcrypt (optional)
Used by the `network' plugin for encryption and authentication.
<http://www.gnupg.org/>
+ * libgps (optional)
+ Used by the `gps' plugin.
+ <http://developer.berlios.de/projects/gpsd/>
+
* libhal (optional)
- If present, the uuid plugin will check for UUID from HAL.
+ If present, the `uuid' plugin will check for UUID from HAL.
<http://hal.freedesktop.org/>
+ * libi2c-dev (optional)
+ Used for the plugin `barometer', provides just the i2c-dev.h header file
+ for user space i2c development.
+
* libiptc (optional)
For querying iptables counters.
<http://netfilter.org/>
- If not found on the system, a version shipped with this distribution can
- be used. It requires some Linux headers in /usr/include/linux. You can
- force the build system to use the shipped version by specifying
- --with-libiptc=shipped
- when running the configure script.
-
* libjvm (optional)
Library that encapsulates the `Java Virtual Machine' (JVM). This library is
- used by the Java plugin to execute Java bytecode. See “Configuring with
- libjvm” below.
+ used by the `java' plugin to execute Java bytecode.
+ See docs/BUILD.java.md for detailed build instructions.
<http://openjdk.java.net/> (and others)
+ * libldap (optional)
+ Used by the `openldap' plugin.
+ <http://www.openldap.org/>
+
+ * liblua (optional)
+ Used by the `lua' plugin. Currently, Lua 5.1 and later are supported.
+ <https://www.lua.org/>
+
+ * liblvm2 (optional)
+ Used by the `lvm' plugin.
+ <ftp://sources.redhat.com/pub/lvm2/>
+
* libmemcached (optional)
Used by the `memcachec' plugin to connect to a memcache daemon.
<http://tangent.org/552/libmemcached.html>
<http://www.netfilter.org/projects/libmnl/>
* libmodbus (optional)
- Used by the “modbus” plugin to communicate with Modbus/TCP devices. The
- “modbus” plugin works with version 2.0.3 of the library – due to frequent
+ Used by the `modbus' plugin to communicate with Modbus/TCP devices. The
+ `modbus' plugin works with version 2.0.3 of the library – due to frequent
API changes other versions may or may not compile cleanly.
<http://www.libmodbus.org/>
<http://dev.mysql.com/>
* libnetapp (optional)
- Required for the “netapp” plugin.
+ Required for the `netapp' plugin.
This library is part of the “Manage ONTAP SDK” published by NetApp.
* libnetsnmp (optional)
For the `notify_desktop' plugin.
<http://www.galago-project.org/>
+ * libopenipmi (optional)
+ Used by the `ipmi' plugin to prove IPMI devices.
+ <http://openipmi.sourceforge.net/>
+
* liboping (optional)
Used by the `ping' plugin to send and receive ICMP packets.
- <http://verplant.org/liboping/>
+ <http://octo.it/liboping/>
* libowcapi (optional)
Used by the `onewire' plugin to read values from onewire sensors (or the
The PostgreSQL C client library used by the `postgresql' plugin.
<http://www.postgresql.org/>
+ * libpqos (optional)
+ The PQoS library for Intel(R) Resource Director Technology used by the
+ `intel_rdt' plugin.
+ <https://github.com/01org/intel-cmt-cat>
+
+ * libprotobuf, protoc 3.0+ (optional)
+ Used by the `grpc' plugin to generate service stubs and code to handle
+ network packets of collectd's protobuf-based network protocol.
+ <https://developers.google.com/protocol-buffers/>
+
* libprotobuf-c, protoc-c (optional)
Used by the `pinba' plugin to generate a parser for the network packets
sent by the Pinba PHP extension.
<http://code.google.com/p/protobuf-c/>
* libpython (optional)
- Used by the `python' plugin. Currently, Python 2.3 and later and Python 3
+ Used by the `python' plugin. Currently, Python 2.6 and later and Python 3
are supported.
<http://www.python.org/>
* librabbitmq (optional; also called “rabbitmq-c”)
- Used by the AMQP plugin for AMQP connections, for example to RabbitMQ.
+ Used by the `amqp' plugin for AMQP connections, for example to RabbitMQ.
<http://hg.rabbitmq.com/rabbitmq-c/>
+ * librdkafka (optional; also called “rdkafka”)
+ Used by the `write_kafka' plugin for producing messages and sending them
+ to a Kafka broker.
+ <https://github.com/edenhill/librdkafka>
+
* librouteros (optional)
Used by the `routeros' plugin to connect to a device running `RouterOS'.
- <http://verplant.org/librouteros/>
+ <http://octo.it/librouteros/>
* librrd (optional)
Used by the `rrdtool' and `rrdcached' plugins. The latter requires RRDtool
<http://www.lm-sensors.org/>
* libsigrok (optional)
- Used by the sigrok plugin. In addition, libsigrok depends on glib,
+ Used by the `sigrok' plugin. In addition, libsigrok depends on glib,
libzip, and optionally (depending on which drivers are enabled) on
libusb, libftdi and libudev.
<http://www.i-scream.org/libstatgrab/>
* libtokyotyrant (optional)
- Used by the tokyotyrant plugin.
+ Used by the `tokyotyrant' plugin.
<http://1978th.net/tokyotyrant/>
* libupsclient/nut (optional)
<http://libvirt.org/>
* libxml2 (optional)
- Parse XML data. This is needed for the `ascent' and `libvirt' plugins.
+ Parse XML data. This is needed for the `ascent', `bind', `curl_xml' and
+ `virt' plugins.
<http://xmlsoft.org/>
+ * libxen (optional)
+ Used by the `xencpu' plugin.
+ <http://xenbits.xensource.com/>
+
* libxmms (optional)
<http://www.xmms.org/>
* libyajl (optional)
- Parse JSON data. This is needed for the `curl_json' plugin.
+ Parse JSON data. This is needed for the `ceph', `curl_json' and
+ `log_logstash' plugins.
<http://github.com/lloyd/yajl>
* libvarnish (optional)
- Fetches statistics from a Varnish instance. This is needed for the Varnish plugin
+ Fetches statistics from a Varnish instance. This is needed for the
+ `varnish' plugin.
<http://varnish-cache.org>
+ * riemann-c-client (optional)
+ For the `write_riemann' plugin.
+ <https://github.com/algernon/riemann-c-client>
+
Configuring / Compiling / Installing
------------------------------------
prefixed to all installation directories. This might be useful when creating
packages for collectd.
-Configuring with libjvm
------------------------
-
- To determine the location of the required files of a Java installation is not
- an easy task, because the locations vary with your kernel (Linux, SunOS, …)
- and with your architecture (x86, SPARC, …) and there is no ‘java-config’
- script we could use. Configuration of the JVM library is therefore a bit
- tricky.
-
- The easiest way to use the `--with-java=$JAVA_HOME' option, where
- `$JAVA_HOME' is usually something like:
- /usr/lib/jvm/java-1.5.0-sun-1.5.0.14
-
- The configure script will then use find(1) to look for the following files:
+Generating the configure script
+-------------------------------
- - jni.h
- - jni_md.h
- - libjvm.so
+Collectd ships with a `build.sh' script to generate the `configure'
+script shipped with releases.
- If found, appropriate CPP-flags and LD-flags are set and the following
- library checks succeed.
+To generate the `configure` script, you'll need the following dependencies:
- If this doesn't work for you, you have the possibility to specify CPP-flags,
- C-flags and LD-flags for the ‘Java’ plugin by hand, using the following three
- (environment) variables:
+- autoconf
+- automake
+- flex
+- bison
+- libtool
+- libtool-ltdl
+- pkg-config
- - JAVA_CPPFLAGS
- - JAVA_CFLAGS
- - JAVA_LDFLAGS
+The `build.sh' script takes no arguments.
- For example (shortened for demonstration purposes):
-
- ./configure JAVA_CPPFLAGS="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
-
- Adding "-ljvm" to the JAVA_LDFLAGS is done automatically, you don't have to
- do that.
Crosscompiling
--------------
Contact
-------
- For questions, bug reports, development information and basically all other
- concerns please send an email to collectd's mailing list at
- <collectd at verplant.org>.
+ Please use GitHub to report bugs and submit pull requests:
+ <https://github.com/collectd/collectd/>.
+ See CONTRIBUTING.md for details.
+
+ For questions, development information and basically all other concerns please
+ send an email to collectd's mailing list at
+ <list at collectd.org>.
For live discussion and more personal contact visit us in IRC, we're in
channel #collectd on freenode.
Author
------
- Florian octo Forster <octo at verplant.org>,
+ Florian octo Forster <octo at collectd.org>,
Sebastian tokkee Harl <sh at tokkee.org>,
and many contributors (see `AUTHORS').
- Please send bug reports and patches to the mailing list, see `Contact'
- above.
-