README for MuninLite
MuninLite is a single Bourne Shell script that implements the Munin protocoll as well as some Linux specific plugins. The motivation for developing MuninLite was to provide a simple Munin Node, using inetd on systems without a full featured Perl and/or bash or a busybox system.
MuninLite is Copyright (C) 2007 Rune Nordbøe Skillingstad firstname.lastname@example.org and released under GPLv2 (see LICENSE file)
MuninLite implements the following plugins:
CREDITS: Credits to contributors
LICENSE: GPLv2 License
Makefile: Rules to make munin-node
README: This file
TODO: Things to do in future releases
VERSION: Current version
munin-node.in: The MuninLite script skeleton
examples/xinetd.d/munin: Sample xinetd configuration
examples/inetd.conf: Sample inetd.conf configuration
examples/inetd.busybox: Sample inetd.conf configuration for busybox
examples/hosts.deny: Sample hosts.deny configuration
examples/hosts.allow: Sample hosts.allow configuration
plugins/cpu: CPU usage plugin
plugins/df: Filesystem usage plugin
plugins/if_: Network interface traffic plugin
plugins/if_err_: Network interface errors plugin
plugins/interrupts: Interrupts & context switches plugin
plugins/irqstats: Individual interrupts plugin
plugins/load: Load average plugin
plugins/memory: Memory usage plugin
plugins/netstat: Netstat plugin
plugins/processes: Number of Processes plugin
plugins/swap: Swap in/out plugin
plugins/uptime: Uptime plugin
- Make: not sure what requirements
- Perl: even very old versions should work
- Bourne Shell: ash or dash should be sufficient
- grep: simple grep in busybox is sufficient
- sed: simple sed in busybox is sufficient -- but a bit strange...
- cut: cut in busybox is sufficient
- wc: wc in busybox is sufficient
- xargs: xargs in busybox is sufficient
- inetd: inetd in busybox is sufficient
Download source and unpack it. Edit Makefile to suit your choice of plugins
Make munin-node by running "make"
$ make Making munin-node for muninlite version 0.9.14 Adding plugin df Adding plugin cpu Adding plugin if_ Adding plugin if_err_ Adding plugin load Adding plugin memory Adding plugin processes Adding plugin swap Adding plugin netstat Adding plugin uptime Adding plugin interrupts Adding plugin irqstats
Copy munin-node to a suitable location (/usr/local/bin/) and make it executable (there will be a "make install" at a later release)
cp munin-node /usr/local/bin chmod +x /usr/local/bin/munin-node
Add munin port to
echo "munin 4949/tcp lrrd # Munin" >>/etc/services
Configure inetd or xinetd to fork this script for request on the munin port (4949).
Sample configuration for xinetd is located in
cp examples/xinetd.d/munin /etc/xinetd.d killall -HUP xinetd
Sample configuration for inetd is located in
cat examples/inetd.conf >> /etc/inetd.conf killall -HUP inetd
Restrict access to munin port using hosts.allow and hosts.deny or add a rule to your favorite firewall config. Examples of hosts.allow/deny settings is provided in the examples directory.
Iptables might be set with something like this:
iptables -A INPUT -p tcp --dport munin --source 10.42.42.25 -j ACCEPT
To test script, just run it (
$ /usr/local/bin/munin-node # munin node at localhost.localdomain help # Unknown command. Try list, nodes, config, fetch, version or quit list df cpu if_eth0 if_eth1 if_err_eth0 if_err_eth1 load memory version munins node on mose.medisin.ntnu.no version: 0.0.5 (munin-lite) quit
For inetd-test, try to telnet to munin port from allowed host.
# telnet localhost 4949 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. # munin node at localhost.localdomain help # Unknown command. Try list, nodes, config, fetch, version or quit list df cpu if_eth0 if_eth1 if_err_eth0 if_err_eth1 load memory version munins node on mose.medisin.ntnu.no version: 0.0.5 (munin-lite) quit Connection closed by foreign host.
To configure which plugins should be enabled, locate the
variable in munin-node and remove unwanted plugins.
There is no specific configuration for plugins.
Configure your /etc/munin/munin.conf as you would for a regular munin-node.
[some.host.tld] address 10.42.42.25 use_node_name yes