Munin development environment¶
Getting started¶
- Install perl
- Check out the munin repository
- Install perl dependencies
- Install munin in a sandbox
- Start munin in a sandbox
- Start hacking
Install perl¶
You need perl 5.10
or newer for munin development. Check your
installed version with perl --version
.
If you have an older perl, look at using perlbrew
to have perl in
a sandbox.
Check out the munin repository¶
Munin is hosted on github. Clone the git repository, and enter the work directory.
git clone https://github.com/munin-monitoring/munin
cd munin
Install perl dependencies¶
Munin needs a lot of perl modules. The dependencies needed to
develop, test, build and run munin is listed in the Build.PL
file.
With the Debian osfamily¶
This includes Debian, Ubuntu, and many other operating systems.
Dependencies for running Munin from the development environment.
apt install libdbd-sqlite3-perl libdbi-perl \
libfile-copy-recursive-perl libhtml-template-perl \
libhtml-template-pro-perl libhttp-server-simple-perl \
libio-socket-inet6-perl liblist-moreutils-perl \
liblog-dispatch-perl libmodule-build-perl libnet-server-perl \
libnet-server-perl libnet-snmp-perl librrds-perl \
libnet-ssleay-perl libparams-validate-perl liburi-perl \
libwww-perl libxml-dumper-perl
Dependencies for running the Munin development tests:
apt install libdbd-pg-perl libfile-readbackwards-perl \
libfile-slurp-perl libio-stringy-perl libnet-dns-perl \
libnet-ip-perl libtest-deep-perl libtest-differences-perl \
libtest-longstring-perl libtest-mockmodule-perl \
libtest-mockobject-perl libtest-perl-critic-perl \
libxml-libxml-perl libxml-parser-perl
With modules from CPAN¶
perl Build.PL
./Build installdeps
Install munin in a sandbox¶
The dev_scripts
directory contains scripts to install munin in a
sandbox. We also need to disable taint
in the perl scripts to
enable it to run outside the normal perl installation.
dev_scripts/install node
dev_scripts/disable_taint
Run munin in a sandbox¶
Each of these can be done in a separate terminal window, to keep the logs apart.
Start a munin node. This will start the node in the background, and tail the log. If you hit Ctrl-C, the log tailing will stop, and the node will still run in the background.
dev_scripts/start_munin-node
The contrib
directory contains a daemon used for simulating a lot
of munin nodes. This step is optional. First output a number of node
definitions to the munin configuration, and then run the daemon in the
background.
contrib/munin-node-debug -d > sandbox/etc/munin-conf.d/nodes.debug
contrib/munin-node-debug &
Start a munin-update loop. Normally, munin-update runs from cron every 5 minutes.
while :; do dev_scripts/run munin-update; sleep 60; done &
The munin httpd listens on http://localhost:4948/ by default.
dev_scripts/run munin-httpd
Run plugins in a sandbox¶
Very simple plugins can be executed directly. Other plugins may require additional environment settings (e.g. for storing the plugin state or for sourcing the shell helpers). Testing a symlink configuration also requires a bit of manual preparation.
Many non-trivial situations can be simplified with the sandbox plugin
wrapper dev_scripts/plugin
:
dev_scripts/plugin run ./my_foo_plugin
dev_scripts/plugin run if_ suggest
dev_scripts/plugin run_as if_eth0 if_
MUNIN_CAP_MULTIGRAPH=1 dev_scripts/plugin run diskstats config
MUNIN_CAP_DIRTYCONFIG=1 dev_scripts/plugin run df
Start hacking¶
Make changes, restart sandboxed services as necessary.
Make a git feature branch, commit changes, publish branch to a public git repository somewhere, submit pull requests, make things happen.