Simple tutorial to setup the Munin plugins for your Munin monitoring.

Munin has plugins that allow us to get nice graphs of the DNS queries made to Unbound on the machine. However, they aren’t working by default!

This tutorial assumes Munin and Unbound are already configured and working on your server. I’m using Debian 8 and 9, but it should work on Ubuntu, and certainly most distributions.

Tip

You can use my script if you want to install Unbound a local DNS resolver on your machine.

First, we need to enable unbound stats.

Edit /etc/unbound/unbound.conf and add:

statistics-interval: 0
statistics-cumulative: no
extended-statistics: yes

python:
remote-control:
  control-enable: yes

Restart Unbound:

service unbound restart

Then, enable the munin plugins:

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_by_class
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_by_flags
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_by_opcode
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_by_rcode
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_by_type
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_histogram
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_hits
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_memory
ln -s /usr/share/munin/plugins/unbound_munin_ /etc/munin/plugins/unbound_munin_queue

If /usr/share/munin/plugins/unbound_munin_ doesn’t exist, that means you’re running an old version of Unbound like 1.4.22 on Debian 8.

The solution is to download the source package and extract the plugin.

First, make sure your /etc/apt/sources.list contains the deb-src entries. If not, this one is needed:

deb http://deb.debian.org/debian jessie main

Then update your local repositories and download the Unbound packages:

apt update
apt-get source unbound

Copy the Unbound plugin from the extracted package:

cp unbound-*/contrib/unbound_munin_ /usr/share/munin/plugins/

That’s all.

Finally, configure Munin for your Unbound installation. On Debian, add the following to /etc/munin/plugin-conf.d/munin-node:

[unbound*]
user root
env.statefile /var/lib/munin-node/plugin-state/unbound-state
env.unbound_conf /etc/unbound/unbound.conf
env.unbound_control /usr/sbin/unbound-control

You can now test your plugins, for example:

root@lyra /e/m/plugins# munin-run unbound_munin_by_type
n_q_t_A.value 16
n_q_t_PTR.value 12
n_q_t_AAAA.value 16

Restart munin-node, and you should see nice Unbound graphs appear on your web interface:

munin-unbound-graphs

That seems easy, and it is, however finding documentation about this is awfully hard to find so I’m glad I can share it here.

Sources: