Differences
This shows you the differences between the selected revision and the current version of the page.
howto:munin_monitoring 2010/12/13 22:47 | howto:munin_monitoring 2017/09/06 18:38 current | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== How to set up Munin monitoring ====== | ====== How to set up Munin monitoring ====== | ||
+ | |||
+ | [[http://munin-monitoring.org/|Munin]] is a lightweight and simple monitoring system. It can gather statistics from different networked machines, including NAS devices like DNS-323. Munin consists of a //master// that collects, stores and visualizes data from a number of //nodes//, and this tutorial describes how to configure DNS-323 to act as a Munin node. | ||
+ | |||
+ | {{howto:munin-example.png}} | ||
+ | |||
+ | ===== Munin node ===== | ||
+ | |||
+ | This article assumes that [[howto:ffp|ffp]] is already installed on the device. | ||
+ | |||
+ | You should login to the device either over ssh or telnet, cd to a directory on a filesystem with enough free space and download the funpkg packages (currently hosted on the forum) | ||
+ | |||
+ | # chdir /mnt/HD_a2 | ||
+ | # wget http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/perl/perl-5.10-2.tgz | ||
+ | # wget -O munin-node-1.4.5-2.tgz http://dns323.kood.org/forum/attachment.php?item=662 | ||
+ | # wget -O perl-mod-Net-Server-0.99-1.tgz http://dns323.kood.org/forum/attachment.php?item=661 | ||
+ | |||
+ | When the download is complete the packages should be installed | ||
+ | |||
+ | # funpkg -i perl-5.10-2.tgz | ||
+ | Installing package perl-5.10-2 ... | ||
+ | # funpkg -i perl-mod-Net-Server-0.99-1.tgz | ||
+ | Installing package perl-mod-Net-Server-0.99-1 ... | ||
+ | # funpkg -i munin-node-1.4.5-2.tgz | ||
+ | Installing package munin-node-1.4.5-2 ... | ||
+ | [...] | ||
+ | Executing install script for munin-node-1.4.5-2 ... | ||
+ | |||
+ | Munin has a modular architecture, and information about individual components of a system is provided by plugins. None are enabled by default, but there is an auto-detection mechanism available that can guess which plugins might be useful on a given machine. You can either enable plugins manually by symlinking scripts from ''/ffp/lib/plugins/cpu'' to ''/ffp/etc/munin/plugins/'' or rely on Munin to do this automatically using | ||
+ | |||
+ | # perl /ffp/sbin/munin-node-configure --shell | sh -x | ||
+ | # The following plugins caused errors: | ||
+ | [...] | ||
+ | + ln -s /ffp/share/munin/plugins/cpu /ffp/etc/munin/plugins/cpu | ||
+ | + ln -s /ffp/share/munin/plugins/diskstats /ffp/etc/munin/plugins/diskstats | ||
+ | + ln -s /ffp/share/munin/plugins/entropy /ffp/etc/munin/plugins/entropy | ||
+ | + ln -s /ffp/share/munin/plugins/forks /ffp/etc/munin/plugins/forks | ||
+ | + ln -s /ffp/share/munin/plugins/fw_packets /ffp/etc/munin/plugins/fw_packets | ||
+ | + ln -s /ffp/share/munin/plugins/http_loadtime /ffp/etc/munin/plugins/http_loadtime | ||
+ | + ln -s /ffp/share/munin/plugins/interrupts /ffp/etc/munin/plugins/interrupts | ||
+ | + ln -s /ffp/share/munin/plugins/iostat /ffp/etc/munin/plugins/iostat | ||
+ | + ln -s /ffp/share/munin/plugins/iostat_ios /ffp/etc/munin/plugins/iostat_ios | ||
+ | + ln -s /ffp/share/munin/plugins/irqstats /ffp/etc/munin/plugins/irqstats | ||
+ | + ln -s /ffp/share/munin/plugins/load /ffp/etc/munin/plugins/load | ||
+ | + ln -s /ffp/share/munin/plugins/memory /ffp/etc/munin/plugins/memory | ||
+ | + ln -s /ffp/share/munin/plugins/nfs4_client /ffp/etc/munin/plugins/nfs4_client | ||
+ | + ln -s /ffp/share/munin/plugins/nfsd /ffp/etc/munin/plugins/nfsd | ||
+ | + ln -s /ffp/share/munin/plugins/nfsd4 /ffp/etc/munin/plugins/nfsd4 | ||
+ | + ln -s /ffp/share/munin/plugins/open_files /ffp/etc/munin/plugins/open_files | ||
+ | + ln -s /ffp/share/munin/plugins/open_inodes /ffp/etc/munin/plugins/open_inodes | ||
+ | + ln -s /ffp/share/munin/plugins/proc_pri /ffp/etc/munin/plugins/proc_pri | ||
+ | + ln -s /ffp/share/munin/plugins/processes /ffp/etc/munin/plugins/processes | ||
+ | + ln -s /ffp/share/munin/plugins/swap /ffp/etc/munin/plugins/swap | ||
+ | + ln -s /ffp/share/munin/plugins/threads /ffp/etc/munin/plugins/threads | ||
+ | + ln -s /ffp/share/munin/plugins/uptime /ffp/etc/munin/plugins/uptime | ||
+ | + ln -s /ffp/share/munin/plugins/users /ffp/etc/munin/plugins/users | ||
+ | |||
+ | Munin plugins are in fact simple scripts with plain-text output that can be executed using ''munin-run'' | ||
+ | |||
+ | # perl -T /ffp/sbin/munin-run cpu | ||
+ | user.value 6639837 | ||
+ | nice.value 0 | ||
+ | system.value 6932479 | ||
+ | idle.value 186026521 | ||
+ | iowait.value 2634360 | ||
+ | irq.value 8 | ||
+ | softirq.value 209867 | ||
+ | steal.value 0 | ||
+ | |||
+ | |||
+ | The 'df' script (/ffp/share/munin/plugins/df) not work properly because the busybox df command is less about. | ||
+ | Change the original line to the repaired line: | ||
+ | |||
+ | The original line: | ||
+ | my $dfopts = "-P -l".join(' -x ',('',split('\s+',$exclude))); | ||
+ | The repaired line | ||
+ | my $dfopts = "-k | grep -v -e /dev/loop0 -e rootfs"; | ||
+ | |||
+ | or use this script: | ||
+ | #!/ffp/bin/sh | ||
+ | |||
+ | cp /ffp/share/munin/plugins/df /ffp/share/munin/plugins/df_bak | ||
+ | cat /ffp/share/munin/plugins/df_bak | sed 's/my \$dfopts = "-P -l".*$/my $dfopts = "-k | grep -v -e \/dev\/loop0 -e rootfs";/' > /ffp/share/munin/plugins/df | ||
+ | ln -s /ffp/share/munin/plugins/df /ffp/etc/munin/plugins | ||
+ | killall -9 munin-node | ||
+ | /ffp/start/munin-node.sh restart | ||
+ | |||
+ | Be aware that some plugins may require additional dependencies. | ||
+ | |||
+ | A newly installed Munin node accepts only localhost connections, so you should modify ''/ffp/etc/munin/munin-node.conf'' to allow at least incoming connections from the Munin master | ||
+ | |||
+ | allow ^127\.0\.0\.1$ | ||
+ | allow ^191\.168\.1\.2$ | ||
+ | |||
+ | Of course you should substitute ''191.168.1.2'' with the IP of the Munin master. The addresses look weird because the ''allow'' directives takes Perl regular expressions, and dots have to be escaped. | ||
+ | |||
+ | The next step is to enable the ''munin-node'' daemon | ||
+ | |||
+ | # chmod a+x /ffp/start/munin-node.sh | ||
+ | # /ffp/start/munin-node.sh start | ||
+ | |||
+ | In order to verify that the node is up and running you can connect to it and invoke a command which lists all available plugins | ||
+ | |||
+ | # nc localhost 4949 | ||
+ | # munin node at localhost | ||
+ | list << YOU SHOULD TYPE THIS AND PRESS ENTER | ||
+ | cpu entropy forks fw_packets http_loadtime interrupts ... | ||
+ | |||
+ | You can try the same command from the Munin master to make sure that it can connect to the node. | ||
+ | |||
+ | For additional security ''munin-node'' can be run from inetd or tunnelled over SSH, but this is beyond the scope of this tutorial. | ||
+ | |||
+ | ===== Munin master ==== | ||
+ | |||
+ | When the node is up and running all that you need is a master that will collect, store and visualize the data. | ||
+ | |||
+ | The Munin master should be installed on a server that is always on and has network access to all the nodes. Most decent Linux distributions should have a Munin package available, and if not you should follow [[http://munin-monitoring.org/wiki/Documentation|the documentation]]. | ||
+ | |||
+ | In case of Debian-based distributions the installation is as simple as | ||
+ | |||
+ | $ sudo apt-get install munin | ||
+ | |||
+ | Then you should edit the ''/etc/munin/munin.conf'' configuration file and add a following entry | ||
+ | |||
+ | [dns323] | ||
+ | address 192.168.1.3 | ||
+ | use_node_name yes | ||
+ | |||
+ | Instead of ''dns323'' you can put any other string that identifies the device, for example its hostname, and instead of ''192.168.1.3'' you should provide the IP address of the node. | ||
+ | |||
+ | There is no need to restart anything, the Munin master is a process executed from cron, not a daemon. You just have to wait about 5 minutes for the next cron invocation and check the HTML output by opening ''file:///var/cache/munin/www/index.html'' in a browser. | ||
+ | |||
+ | This directory contains static HTML output that can be either viewed locally or served using any HTTP server. In case of problems the master logs are available at ''/var/log/munin/munin-update.log'', and the logs of a node at ''/ffp/var/log/munin/munin-node.log''. | ||
+ | |||
+ | You can see a sample output from the Munin master at [[http://munin.ping.uio.no/|the demo installation]]. If you want to learn more about Munin, spend some time reading [[http://munin-monitoring.org/wiki/Documentation|the documentation]]. |