Collectd collects data from your system (CPU, load, etc) and the software it's running (e.g. Apache, MySQL).


Just follow the instructions on the collectd wiki. The wiki assumes you're using a Debian-based system, but they're advising you to compile from source code anyway. I got collectd to work on my Debian-based systems by simply using apt-get:

apt-get install collectd

You may also need to install libcurl (used by collectd's Apache plugin):

apt-get install curl

Collectd's core task is to collect data, but they also provide a simple graphics generator, based on perl scripts. Here's what you've got to install to get it working:

apt-get install librrds-perl libconfig-general-perl libhtml-parser-perl  libregexp-common-perl

Compiling collectd

Make sure your system meets all the requirements. Each collectd plugin may also have its own requirements. See the README.

On my Ubuntu 6 system, I also had to install libcurl3-dev. To make sure that your system meets the requirements, use the –enable switch:

./configure --enable-apache --enable-mysql


Now it's time to configure collectd. Use a text editor (e.g. nano) to edit /etc/collectd.conf. An important thing to get right immediately, is the Interval directive. If you change this setting afterward, you apparently have to completely reinstall collectd or remove all its data files. The default, 10 seconds, is okay.

Apache Plugin

To use the Apache plugin, you have to configure Apache first: collectd uses mod_status. Debian-based systems usually have mod_status installed already. All you have to do, is tell Apache you want to use it. Edit the /etc/apache2/apache2.conf file by adding:

ExtendedStatus on
<Location /mod_status>
  SetHandler server-status

Don't forget to restart Apache after saving the apache2.conf file.

Now you've got to uncomment the load directive for the plugin in the /etc/collectd.conf file:

LoadPlugin apache

And add some configuration for the Apache plugin in the /etc/collectd.conf file:

<Plugin apache>
        URL "http://localhost/mod_status?auto"
#       User "www-user"
#       Password "secret"
#       VerifyPeer false
#       VerifyHost false
#       CACert "/etc/ssl/ca.crt"

Please be warned that your Apache server info, as printed by http://localhost/mod_status, will be accessible by whatever name your localhost has to the outside world. E.g., if your system is called, then Apache will happily ouput its status through

MySQL Plugin

Just create a MySQL user called collectd, with no privileges at all. Restrict this user to the localhost and make up a good, strong password.

Again, uncomment the load directive in the /etc/collectd.conf file:

LoadPlugin mysql

And configure the plugin:

<Plugin mysql>
        Host "localhost"
        User "collectd"
        Password "secret_password"
#       Database "db_name"

Now (re)start the daemon: /etc/init.d/collectd restart, or: /opt/collectd/sbin/collectd.

Creating Graphs

Copy the directory /usr/share/doc/collectd/examples/collection3 to a place where your cgi scripts are running, e.g. /home/onno/cgi-bin. Change the ownership of the collection3 directory:

chown -R www-data:www-data collection3

You can now access your graphs at

Please note that the graphing scripts seem to require at least Perl 5.10. Ubuntu 6.06 carries Perl 5.8.7.


Visage is a Ruby / Sinatra based tool which uses collectd's rrdtool plugin to plot data in graphs.

The Visage GitHub site explains the installation and configuration. If you run into trouble with Sinatra, check this blog.

Running and Securing Collectd

To run collectd, simply use: /etc/init.d/collectd restart, or /opt/collectd/sbin/collectd. If you've installed collectd through apt-get, it's going to start automatically on reboot.

You can secure access to the graphs by simply securing the directory through Apache: securing_a_web_directory_with_apache.

Personal Tools