Munin maintenance

This page is designed to describe the maintenance tasks to consider when working on Munin.

Source code repository
Upstream moved their main source repository to GitHub which makes maintenance much simpler. All the patching is handled on GitHub as well, in the Gentoo Linux fork.

For each release that needs to be patched, a new Gentoo branch is created starting from the upstream branch

At this point it's possible to either use git cherry-pick to bring in the patches committed upstream, or commit new changes to send upstream so that they can be merged by the developers.

Once the patches are in the branch you can then use the git commands to create a patchset tarball and upload it to the dev.gentoo.org space. As of July 2012, Diego (Flameeyes) is providing access to his webspace at for patchset storage.

Using this method is actually possible to keep pretty empty (with only the extra configuration files), which is good as users don't have to put up with a long sync time for packages they don't use.

New features
While upstream is very friendly, sometimes things need to be prodded along to work correctly. This has been the case with the libwww-perl version support as well as recently the FreeIPMI-based plugin. Don't be surprised of what you can find into our patchset tarballs.

IPMI
The official IPMI monitoring plugins coming with Munin 2.0 (ipmi_ and ipmi_sensor_) are based off — but by default this tool does not cache the sensor description data which makes it useless for most modern systems as the node will time out the plugin way before it completes.

For this reason our IPMI plugin is instead the new one Flameeyes contributed to upstream, which is based off and supports all the same features (as long as a patched, or new enough FreeIPMI version is used), and is interface compatible with both the original plugins.

TODO
The support for CGI-based graph generation is really untested in Gentoo — although upstream prefers it to the cron-handled version. Somebody should see whether this should be integrated with webapp-config or if it should just provide a default Apache/lighttpd configuration file for optional inclusion.

Starting from version 2 Munin supports natively rrdcached (from ) but we neither have an easy way to set that up nor an init script for it. It would be cool to be able to have it working out of the box, this ties in with the CGI support (as then it should be relatively lightweight to generate the graphs on the fly).

The final important feature that is not well supported by the ebuilds (as of August 2012) is the SSH transport and the (related) async node polling — the former requires the munin user to be enabled for SSH (which is probably not that great an idea), the latter links to that and requires the presence of another service running on the box. An init script for munin-asyncd service has been committed in 2.0.4-r1 by Flameeyes but it's still vastly untested.

It has to be noted that upstream would prefer for new plugins not to be added to the main package, and instead rely on a Contrib repository. This repository does not have releases, have possibly untested scripts but it's likely we'll need a package for it if anything because there won't otherwise be any new plugins. The big hurdle with this is that not all the files have a clear license, which makes it hard to package.