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)