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 and released under GPLv2 (see LICENSE file) Features -------- MuninLite implements the following plugins: * df * cpu * if_ * if_err_ * load * memory * processes * swap * netstat * uptime * interrupts * irqstats Included files -------------- * `Changelog`: Changelog * `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 Build requirements ------------------ * Make: not sure what requirements * Perl: even very old versions should work Requirements ------------ * 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 Installation ------------ Download source and unpack it. Edit Makefile to suit your choice of plugins Make munin-node by running "make" ```shell $ 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) ```shell cp munin-node /usr/local/bin chmod +x /usr/local/bin/munin-node ``` Add munin port to `/etc/services`: ```shell 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 `examples/xinetd.d/munin`: ```shell cp examples/xinetd.d/munin /etc/xinetd.d killall -HUP xinetd ``` Sample configuration for inetd is located in `examples/inetd.conf`: ```shell 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: ```shell iptables -A INPUT -p tcp --dport munin --source 10.42.42.25 -j ACCEPT ``` Test ---- To test script, just run it (`/usr/bin/local/munin-node`): ```shell $ /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. ```shell # 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. ``` Plugin configuration -------------------- To configure which plugins should be enabled, locate the `PLUGINS` variable in munin-node and remove unwanted plugins. There is no specific configuration for plugins. Munin configuration ------------------- 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 ```