diff --git a/skills/monitoring-with-munin/SKILL.md b/skills/monitoring-with-munin/SKILL.md index c89e45afc6a4744661fbc1478d09b4f1c006a89e..d167f5a4fabd6d49f06fb0c2bd6b0508151fef34 100644 --- a/skills/monitoring-with-munin/SKILL.md +++ b/skills/monitoring-with-munin/SKILL.md @@ -85,9 +85,36 @@ echo 'quit' | nc -w3 4949 A working node responds with `# munin node at ` followed by the plugin list. +## Installing third-party plugins + +Third-party plugins (including our custom ones) go in `/usr/local/munin/lib/plugins/`, **not** the distribution plugin directory (`/usr/share/munin/plugins/` on Debian, `/usr/lib/munin/plugins/` on Arch). This avoids package updates overwriting custom plugins. + +```bash +mkdir -p /usr/local/munin/lib/plugins +cp my_plugin /usr/local/munin/lib/plugins/ +chmod +x /usr/local/munin/lib/plugins/my_plugin +``` + +Create symlinks in `/etc/munin/plugins/` manually: + +```bash +# Simple plugin +ln -s /usr/local/munin/lib/plugins/my_plugin /etc/munin/plugins/my_plugin +# Wildcard plugin +ln -s /usr/local/munin/lib/plugins/my_plugin_ /etc/munin/plugins/my_plugin_instance +``` + +Auto-detection with `munin-node-configure` requires `--libdir`: + +```bash +munin-node-configure --libdir /usr/local/munin/lib/plugins --shell +``` + +Note: `munin-node-configure` runs `autoconf`/`suggest` as the munin user. Plugins that need root (e.g. smartctl) will hang. For those, run `autoconf` and `suggest` manually as root and create symlinks by hand. + ## Writing plugins -A plugin is any executable in `/etc/munin/plugins/` (usually a symlink to `/usr/share/munin/plugins/` or `/usr/lib/munin/plugins/`). It must handle two invocations: +A plugin is any executable in `/etc/munin/plugins/` (usually a symlink from the plugin library directory). It must handle two invocations: ```bash ./plugin config # print graph metadata