Collectd: Metrics collector

Collectd is a system for collecting system and application metrics from your servers, and make the information available over the network.

Written in: C

Architecture:

Collectd runs as a daemon on the server that data need to be collected from, and can send the data to a central collectd server (or multiple servers for high availability).

All metricsĀ are injected to collectd using plugins.

Plugins such as Python and Perl allows running plugins written in other languages using embedded interpreter for faster execution.

 

Notifications

Notifications can be generated by plugins and can be read by other plugins.

They are used to send messages with severity and timestamp. For example, the disk space plugin can send a notification that disk space is less than 15% to the LogĀ plugin which writes it to a log file, or to Exec plugin which runs a command to send the notification to Logstash.

Notifications can be sent or received using:

  • Network plugin – send and receive (also from other collectd instances)
  • Exec plugin – send and receive
  • LogFile plugin – write the notifications to Collectd log file
  • Syslog plugin – write notifications to syslog
  • UnixSock – read and write notifications from a unix socket
  • Perl plugin – read and write notifications from Perl embedded code.

Collects information from

  • OS (RAM, disk, network, CPU load, etc)
  • Applications via plugins (such as Apache, Redis)
  • Applications by sending the metrics to collectd using HTTP REST request.
  • Statsd plugin – this plugin provides the same functionality as statsd. Applications can send their metrics to this plugin.
  • Network plugin – this plugin receives metrics from other collectd daemons.

Optionally sends metrics to

  • another instance of collectd via the Network plugin
  • another process using the Exec plugin
  • Local or remote syslog using the Syslog plugin
  • Sensu
  • Graphite
  • HTTP
  • MongoDB
  • Riemann
  • RRDTool
  • TSDB

Leave a Reply

Your email address will not be published. Required fields are marked *