Differences

This shows you the differences between the selected revision and the current version of the page.

howto:munin_monitoring 2010/12/14 01:00 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's perfect for collecting statistics about different networked machines, including NAS devices like DNS-323. Munin consists of a //master// that collects data from a number of //nodes//, and this tutorial describes how to configure DNS-323 to act as a Munin node.+[[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}} {{howto:munin-example.png}}
Line 7: Line 7:
===== Munin node ===== ===== Munin node =====
-This article assumes that you've already installed [[howto:ffp|ffp]] on the device.+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 where there is enough free space and download the Munin packages (currently hosted on the forum)+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   # chdir /mnt/HD_a2
  # wget http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/perl/perl-5.10-2.tgz   # 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-1.tgz http://forum.dsmg600.info/attachment.php?item=659 +  # 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://forum.dsmg600.info/attachment.php?item=661+  # wget -O perl-mod-Net-Server-0.99-1.tgz http://dns323.kood.org/forum/attachment.php?item=661
-When the download is complete you can install the packages+When the download is complete the packages should be installed
  # funpkg -i perl-5.10-2.tgz   # funpkg -i perl-5.10-2.tgz
Line 22: Line 22:
  # funpkg -i perl-mod-Net-Server-0.99-1.tgz   # funpkg -i perl-mod-Net-Server-0.99-1.tgz
  Installing package perl-mod-Net-Server-0.99-1 ...   Installing package perl-mod-Net-Server-0.99-1 ...
-  # funpkg -i munin-node-1.4.5-1.tgz +  # funpkg -i munin-node-1.4.5-2.tgz 
-  Installing package munin-node-1.4.5-1 ...+  Installing package munin-node-1.4.5-2 ...
  [...]   [...]
-  Executing install script for munin-node-1.4.5-1 ...+  Executing install script for munin-node-1.4.5-2 ...
-Munin has a modular architecture, and information about individual components of the system is provided by plugins. None are installed by default, but there is an auto-detection mechanism that tries to guess which plugins might be useful on a given machine. You can either configure plugins manually by symlinking scripts from ''/ffp/lib/plugins/cpu'' to ''/ffp/etc/munin/plugins/'' or allow Munin to do this automatically using+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   # perl /ffp/sbin/munin-node-configure --shell | sh -x
  # The following plugins caused errors:   # The following plugins caused errors:
  [...]   [...]
-  + ln -s /ffp/lib/plugins/cpu /ffp/etc/munin/plugins/cpu +  + ln -s /ffp/share/munin/plugins/cpu /ffp/etc/munin/plugins/cpu 
-  + ln -s /ffp/lib/plugins/diskstats /ffp/etc/munin/plugins/diskstats +  + ln -s /ffp/share/munin/plugins/diskstats /ffp/etc/munin/plugins/diskstats 
-  + ln -s /ffp/lib/plugins/entropy /ffp/etc/munin/plugins/entropy +  + ln -s /ffp/share/munin/plugins/entropy /ffp/etc/munin/plugins/entropy 
-  + ln -s /ffp/lib/plugins/forks /ffp/etc/munin/plugins/forks +  + ln -s /ffp/share/munin/plugins/forks /ffp/etc/munin/plugins/forks 
-  + ln -s /ffp/lib/plugins/fw_packets /ffp/etc/munin/plugins/fw_packets +  + ln -s /ffp/share/munin/plugins/fw_packets /ffp/etc/munin/plugins/fw_packets 
-  + ln -s /ffp/lib/plugins/http_loadtime /ffp/etc/munin/plugins/http_loadtime +  + ln -s /ffp/share/munin/plugins/http_loadtime /ffp/etc/munin/plugins/http_loadtime 
-  + ln -s /ffp/lib/plugins/interrupts /ffp/etc/munin/plugins/interrupts +  + ln -s /ffp/share/munin/plugins/interrupts /ffp/etc/munin/plugins/interrupts 
-  + ln -s /ffp/lib/plugins/iostat /ffp/etc/munin/plugins/iostat +  + ln -s /ffp/share/munin/plugins/iostat /ffp/etc/munin/plugins/iostat 
-  + ln -s /ffp/lib/plugins/iostat_ios /ffp/etc/munin/plugins/iostat_ios +  + ln -s /ffp/share/munin/plugins/iostat_ios /ffp/etc/munin/plugins/iostat_ios 
-  + ln -s /ffp/lib/plugins/irqstats /ffp/etc/munin/plugins/irqstats +  + ln -s /ffp/share/munin/plugins/irqstats /ffp/etc/munin/plugins/irqstats 
-  + ln -s /ffp/lib/plugins/load /ffp/etc/munin/plugins/load +  + ln -s /ffp/share/munin/plugins/load /ffp/etc/munin/plugins/load 
-  + ln -s /ffp/lib/plugins/memory /ffp/etc/munin/plugins/memory +  + ln -s /ffp/share/munin/plugins/memory /ffp/etc/munin/plugins/memory 
-  + ln -s /ffp/lib/plugins/nfs4_client /ffp/etc/munin/plugins/nfs4_client +  + ln -s /ffp/share/munin/plugins/nfs4_client /ffp/etc/munin/plugins/nfs4_client 
-  + ln -s /ffp/lib/plugins/nfsd /ffp/etc/munin/plugins/nfsd +  + ln -s /ffp/share/munin/plugins/nfsd /ffp/etc/munin/plugins/nfsd 
-  + ln -s /ffp/lib/plugins/nfsd4 /ffp/etc/munin/plugins/nfsd4 +  + ln -s /ffp/share/munin/plugins/nfsd4 /ffp/etc/munin/plugins/nfsd4 
-  + ln -s /ffp/lib/plugins/open_files /ffp/etc/munin/plugins/open_files +  + ln -s /ffp/share/munin/plugins/open_files /ffp/etc/munin/plugins/open_files 
-  + ln -s /ffp/lib/plugins/open_inodes /ffp/etc/munin/plugins/open_inodes +  + ln -s /ffp/share/munin/plugins/open_inodes /ffp/etc/munin/plugins/open_inodes 
-  + ln -s /ffp/lib/plugins/proc_pri /ffp/etc/munin/plugins/proc_pri +  + ln -s /ffp/share/munin/plugins/proc_pri /ffp/etc/munin/plugins/proc_pri 
-  + ln -s /ffp/lib/plugins/processes /ffp/etc/munin/plugins/processes +  + ln -s /ffp/share/munin/plugins/processes /ffp/etc/munin/plugins/processes 
-  + ln -s /ffp/lib/plugins/swap /ffp/etc/munin/plugins/swap +  + ln -s /ffp/share/munin/plugins/swap /ffp/etc/munin/plugins/swap 
-  + ln -s /ffp/lib/plugins/threads /ffp/etc/munin/plugins/threads +  + ln -s /ffp/share/munin/plugins/threads /ffp/etc/munin/plugins/threads 
-  + ln -s /ffp/lib/plugins/uptime /ffp/etc/munin/plugins/uptime +  + ln -s /ffp/share/munin/plugins/uptime /ffp/etc/munin/plugins/uptime 
-  + ln -s /ffp/lib/plugins/users /ffp/etc/munin/plugins/users+  + ln -s /ffp/share/munin/plugins/users /ffp/etc/munin/plugins/users
-By default a Munin node accepts connections only from localhost, so you should modify ''/ffp/etc/munin/munin-node.conf'' to allow at least the Munin master to connect +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 ^127\.0\.0\.1$
  allow ^191\.168\.1\.2$   allow ^191\.168\.1\.2$
-Of course you should substitute 191.168.1.2 with the IP of the Munin master. The addresses look strange because the ''allow'' directives takes Perl regular expressions.+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 The next step is to enable the ''munin-node'' daemon
Line 68: Line 100:
  # /ffp/start/munin-node.sh start   # /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 listing all available plugins+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   # nc localhost 4949
Line 75: Line 107:
  cpu entropy forks fw_packets http_loadtime interrupts ...   cpu entropy forks fw_packets http_loadtime interrupts ...
-For additional security you can run ''munin-node'' from inetd or tunnel it over SSH, but this is beyond the scope of this tutorial.+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 ==== ===== Munin master ====
-When the node is up and running all that you need is a master that will collect the data and visualize it in a meaningful way.+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 computer that is always on and has network access to all the nodes. Every decent Linux distribution should have a Munin package available, and if not you should follow [[http://munin-monitoring.org/wiki/Documentation|the documentation]]. From now on I assume that you use a Debian-based distribution, in which case the installation is as simple as+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   $ sudo apt-get install munin
Line 88: Line 124:
  [dns323]   [dns323]
-      address 192.168.1.2+      address 192.168.1.3
      use_node_name yes       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.2'' you should provide the IP address of the node. +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.
- +
-When this is done you don't have 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 the following URL in a browser+
-  file:///var/cache/munin/www/index.html+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 logs of the Munin master are available at ''/var/log/munin/munin-update.log''.+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]].+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]].

Navigation

Personal Tools