A comparison between Collectd and Munin monitoring software follows.
Munin has different packages (at least in Debian) and configuration files for the server and the client. The packages are named respectively
munin-node, with configuration files
/etc/munin/munin-node.conf. Since the list of clients is stored on the server, one has to update its configuration every time a new node is added.
Server and client functionalities are provided in collectd by a single binary, in Debian available in the
collectd-core package. This package does not include a default configuration file, making it is possible to pre-install a customized configuration. Those looking for a basic configuration will prefer to install the
Push or pull?
Munin uses a pull model: every 5 minutes (by default) the server connects to all client nodes and gathers data.
When using Collectd instead each node has the duty to send its values to the server, following a push model; clients can easily find their way to the server through NAT and firewalls. Multicast groups can be used to transmit the same value to multiple servers at once and at no computational cost.
Both tools store statistical data in RRD files, a file format specifically created to handle time-series data. Since a number of RRD files will have to be updated at regular intervals, rapid random access and I/O to the disk will likely be a critical resource.
Munin is written in Perl and has no persistent daemons, so the interpreter will have to load and evaluate the code at every update.
Collectd is written in C and runs continuously as system daemon, reducing startup time and consolidating memory usage.
Every 5 minutes a Munin cronjob generates daily, weekly, monthly, yearly per-plugin and per-host graphs: a load that grows very quickly when more than a couple of hosts are monitored and a big waste of resources, since many generated graphs will never be seen once. Graphs are generated as static images and cannot be panned or zoomed, so that it becomes difficult to pick out an event in the past.
Collectd does not integrate a visualization layer, but there is a good choice among independent projects; most of them provide panning and zooming, so that a high level of detail is provided in every graph:
- Collectd-web is a Perl CGI which uses jQuery to provide a nice, themable interface;
- Jarmon streams binary RRD data from collectd to the browser, which will generate graphs using Flot and HTML5 Canvas;
- Collectd Graph Panel, written in PHP.
Munin seems the right monitoring tool when the only requirement is simplicity of installation. When working with any constraint in performances, flexibility, level of detail or even minimal network complexity, Collectd will probably be a safer choice.
Comments are welcome at email@example.com.
If this article was valuable to you, you may consider donating.