Collectd Raw

Amazing little thing that collects data on interfaces, processes,
daemons and tons of other stuff on your system. You can even centralize
log collection! Some details on this install log:

* RHEL/CentOS 5.5 64-bit system
* `collectd` v4.10 from EPEL
* Configured to collect data locally

Installation
------------

    yum install collectd collectd-apache collectd-rrdtool

Problem:

    collectd-4.10.0-4.el5.i386 from epel has depsolving problems  
       --> Missing Dependency: libpython2.4.so.1.0 is needed by package collectd-4.10.0-4.el5.i386 (epel)  
    Error: Missing Dependency: libpython2.4.so.1.0 is needed by package collectd-4.10.0-4.el5.i386 (epel)

This file, however, exists:

    [root@support other_scripts]# locate libpython2.4.so.1.0
    /usr/lib64/libpython2.4.so.1.0

The issue is that the 64-bit repo has *both* 32-bit and 64-bit versions.
So you need to be a little more explicit:

    yum install collectd*.x86_64* collectd-apache collectd-rrdtool

Done!

Configuration
-------------

Make a copy and edit the config file `/etc/collectd.conf`:

    cp /etc/collectd.conf /etc/collectd.conf.original

Add the following for base config that will monitor CPU, Interface, Load
and Memory:

    Hostname    "support.eng.uiowa.edu"  
    FQDNLookup   true  
    BaseDir     "/var/lib/collectd"  
    PIDFile     "/var/run/collectd.pid"  
    PluginDir   "/usr/lib64/collectd"  
    TypesDB     "/usr/share/collectd/types.db"  
    Interval     10    
    ReadThreads  5

**This is bloody important**: Observe the `lib64` in the `PluginDir`
above for 64-bit installs. I wasted 2 hours of my life wondering why the
damn thing didn't work and started blaming the packagers.

At the bottom of the file, add this:

    include "/etc/collectd.d/*.conf"

This basically keeps things organized and modular w.r.t. new plugins
(all of which can be defined in `collectd.conf` itself).

Now start the service and watch as
`/var/lib/collectd/support.eng.uiowa.edu` gets populated.

Plugin Management
-----------------

### Overview

Plugins are basically `.so` files (or executable code) which are used by
the `collectd` daemon if the are enabled. They are configured
individually via XML-style directives in either `collectd.conf` or in
`/etc/collectd.d` (see below).

### Using existing plugins

Just uncomment the corresponding `LoadPlugin` in `/etc/collectd.conf`
and restart the service!

### Adding new plugins

Like the config file mentions, there are a few plugins which you will
have to install manually. For example, I'm interested in the Apache and
RRDtool plugins. These are not bundled with `collectd` by default, but
are available via `yum`:

    yum install collectd-apache collectd-rrdtool

They install shared object files in `/usr/lib64/collectd` (on a 64-bit
system) and a config file in `/etc/collectd.d`.

The upshot is that they include `LoadPlugin` directives, so don't touch
the `collectd.conf` file to enable them. Remember the `include`
directive we added above.

### Configuring Plugins

Read the `man` page for `collectd.conf` or the documentation on the
plugin's website.

Graphing
--------

You would use `rrdtool` for this. It deserves its own Wiki article(s).
But for instant gratification, install the `collectd-web` package:

yum -y install collectd-web

This installs a bunch of CGI scripts in
`/usr/share/collectd/collection3`. You can now move them to your Apache
cgi-bin to run them

    cp -rv /usr/share/collectd/collection3 /var/www/cgi-bin/  
    chmod -R 755 /var/www/cgi-bin/collection3/bin

If you've configured Apache properly, you can now navigate to
 and enjoy your
graphs! Remember that you can still do a ton of amazing graph-related
things with `rrdtool`

Sources
-------

-   [Graphing collectd statistics with Visage](http://holmwood.id.au/~lindsay/2009/09/08/graphing-collectd-statistics-in-the-browser-with-visage/) (Ruby, JSON)
-   [RRD Tutorial](http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html)