仮想マシンのsqueezeにMuninを導入してみた

■Muninはサーバにノードを追加する方式で、Webサーバ経由でリソースのグラフが見られるツール。

$ apt-cache search ^munin
munin-libvirt-plugins - Munin plugins using libvirt
munin-common - network-wide graphing framework (common)
munin-java-plugins - network-wide graphing framework (java plugins for node)
munin-node - network-wide graphing framework (node)
munin-plugins-extra - network-wide graphing framework (user contributed plugins for node)
munin - ネットワーク中をグラフ化するフレームワーク (グラフ生成/データ収集器)

■MuninはSqueezeのapacheと相性が悪いらしい。

 第5章 squeeze で知っておくべき問題点
 http://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html

■MRTGではDebian Squeeze/Lenny、Windows(2003/XP/2008R2)、CentOS5/6で動作することは確認している。

 debian squeezeにMRTGを導入する。
 http://d.hatena.ne.jp/labunix/20110718

 vmwareのNIC設定変更によるMRTGのトラブルシューティング
 http://d.hatena.ne.jp/labunix/20110724

 自分のブログのダメ出し4 2008R2のMRTG 
 http://d.hatena.ne.jp/labunix/20111115

 Debian Lenny + MRTGでCPU、メモリ、ディスク監視
 http://d.hatena.ne.jp/labunix/20120110

 MRTGでディスクIO、メモリキャッシュの情報取得
 http://d.hatena.ne.jp/labunix/20120111

■MuninではノードとしてWindowsも追加可能なようだ。

 Munin Node for Windows(munin-node-win32)
 http://sourceforge.net/projects/munin-nodewin32/

 Munin Node for Windows v1.5 (x64)
 http://www.aska-inet.co.jp/business/download/munin.html

■というわけではapacheの入っていない仮想マシンで単体のテストをしてみる。
 ※localhostもノードのひとつ。

$ dpkg -l | grep ^ii | grep apache | wc -l
0

■Muninの導入。
 「plug-in」に地雷の予感がするので、まずはクリーンな構築を行う。

$ sudo apt-get install -y munin munin-node

■「/etc/munin/munin.conf」の編集。
 デフォルトの「localhost.localdomain」が存在しない。
 ただ、ここで要求されているのはFQDNなので、「/etc/hosts」側を修正する方が良いと思う。

$ grep localhost /etc/munin/munin.conf
[localhost.localdomain]
$ grep localhost.localdomain /etc/hosts || echo "Not Found: localhost.localdomain"
Not Found: localhost.localdomain

$ sudo cp -pi /etc/munin/munin.conf /etc/munin/munin.conf.org
$ sed s/"localhost.localdomain"/"localhost"/ /etc/munin/munin.conf.org | sudo tee /etc/munin/munin.conf 1> /dev/null
$ grep -v "^#\|^\$" /etc/munin/munin.conf
includedir /etc/munin/munin-conf.d
[localhost]
    address 127.0.0.1
    use_node_name yes

■デーモンの再起動

$ grep -A 1 Usage /etc/init.d/munin-node | head -2
        log_failure_msg "Usage: /etc/init.d/munin-node" \
                        "{start|stop|restart|force-reload|try-restart}"

$ sudo /etc/init.d/munin-node restart
Stopping Munin-Node: done.
Starting Munin-Node: done.

■apacheの導入
 muninと一緒には導入されない。

$ sudo apt-get install -y apache2

■muninの「apache.conf」
 ※IPv6は不要。「/var/cache/munin/www」が「http://localhost/munin」にエイリアスされている。
  最悪、以下を直接apacheの設定に埋め込めば良い。

$ grep -v "#\|^\$" /etc/munin/apache.conf
Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
        Order allow,deny
        Allow from localhost 127.0.0.0/8 ::1
        Options None

    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault M310
    </IfModule>
</Directory>

■ファイル数多いなw。。。

$ find /var/cache/munin/www/ -type f -print | wc -l
428

■プラグインも多いな。。。

$ find /usr/share/munin/plugins -type f -print | sed s%".*/"%%g | wc -l
178

■ログは以下に出る。

$ sudo find /var/log/munin/
/var/log/munin/
/var/log/munin/munin-html.log
/var/log/munin/munin-graph.log
/var/log/munin/munin-node.log
/var/log/munin/munin-node-configure.log
/var/log/munin/munin-limits.log
/var/log/munin/munin-update.log

■エラーや警告を沢山吐くタイプなのですね。。。

$ sudo find /var/log/munin/ -type f -exec grep -v INFO {} \;  | wc -l
694

■cronのログもその都度吐くのですね。。。

$ sudo grep munin /var/log/syslog | sed s/".*CRON\[.*\]\: "//g | sort -u | sed s/"\;"/"&\n"/g
(munin) CMD (if [ -x /usr/bin/munin-cron ];
 then /usr/bin/munin-cron;
 fi)
(root) CMD (if [ -x /etc/munin/plugins/apt_all ];
 then /etc/munin/plugins/apt_all update 7200 12 >/dev/null;
 elif [ -x /etc/munin/plugins/apt ];
 then /etc/munin/plugins/apt update 7200 12 >/dev/null;
 fi)

■現在の監視項目を確認。

$ sudo munin-node-configure | grep -v " no "
Plugin                     | Used | Extra information
------                     | ---- | -----------------
cpu                        | yes  |
df                         | yes  |
df_inode                   | yes  |
diskstats                  | yes  |
entropy                    | yes  |
forks                      | yes  |
fw_packets                 | yes  |
http_loadtime              | yes  |
if_                        | yes  | eth0 eth1
if_err_                    | yes  | eth0 eth1
interrupts                 | yes  |
iostat                     | yes  |
iostat_ios                 | yes  |
irqstats                   | yes  |
load                       | yes  |
memory                     | yes  |
munin_stats                | yes  |
ntp_kernel_err             | yes  |
ntp_kernel_pll_freq        | yes  |
ntp_kernel_pll_off         | yes  |
ntp_offset                 | yes  |
open_files                 | yes  |
open_inodes                | yes  |
postfix_mailqueue          | yes  |
postfix_mailvolume         | yes  |
proc_pri                   | yes  |
processes                  | yes  |
swap                       | yes  |
threads                    | yes  |
uptime                     | yes  |
users                      | yes  |
vmstat                     | yes  |

■apache2のデフォルトは「/var/www」で、80ポートで待ち受けます。

$ sudo grep DocumentRoot /etc/apache2/sites-available/default
        DocumentRoot /var/www

$ netstat -an | grep "\:80"
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN

■とりあえず、余計なことをしない方針で。。。

$ sudo ln -s /var/cache/munin/www /var/www/munin
$ w3m -no-proxy -dump http://localhost/munin
Refresh (300 sec)

  Overview

  &#8226; localhost
      □ localhost [ disk munin network postfix processes system time ]

This page was generated by Munin version 1.4.5 at 2012-12-15 19:15:10+0900
(JST)

■上記はiptablesで「localhost」以外は見れない環境なので、試しにホストOS側に持ってくる。

$ sudo mkdir /var/www/munin
$ sudo scp -r root@vmsqueeze:/var/www/munin/* /var/www/munin/

■ログを大量に吐くので、監視専用のサーバを準備して、
 apache2の設定ファイルを含めた更新に対応する為に、
 「/var/cache/munin/www」配下を別のWebサーバと同期する方法で使う分には良いと思う。

■ということで、仮想マシン側のapache2は削除。
 ※所有者が「munin」なので、これを同期する。

$ sudo apt-get purge apache2
$ ls -l /var/www/munin
lrwxrwxrwx 1 root root 20 2012-12-15 19:14 /var/www/munin -> /var/cache/munin/www
$ sudo rm /var/www/munin

$ ls -l /var/cache/munin/www/
合計 36
-rw-r--r-- 1 munin munin 2555 2012-12-15 18:50 definitions.html
-rw-r--r-- 1 munin munin 2046 2012-12-15 18:50 favicon.ico
-rw-r--r-- 1 munin munin 2150 2012-12-15 19:30 index.html
drwxr-xr-x 3 munin munin 4096 2012-12-15 18:50 localdomain
drwxr-xr-x 3 munin munin 4096 2012-12-15 18:55 localhost
-rw-r--r-- 1 munin munin 1794 2012-12-15 18:50 logo-h.png
-rw-r--r-- 1 munin munin  473 2012-12-15 18:50 logo.png
-rw-r--r-- 1 munin munin 5351 2012-12-15 18:50 style.css

■ホストOSでは閲覧するタイミングで同期すればよい。
 ※所有者を「root」にして同期。
  ファイルだと「rsync」の更新時間になる為、「generated」で更新時間を確認。

$ sudo rsync -avz -e "ssh -p 8022" root@vmsqueeze:/var/cache/munin/www /var/www/
$ w3m -no-proxy -dump http://localhost/munin | grep generated
This page was generated by Munin version 1.4.5 at 2012-12-15 19:20:10+0900

$ ls -l /var/www/munin/
合計 36
-rw-r--r-- 1 root root 2555 2012-12-15 19:22 definitions.html
-rw-r--r-- 1 root root 2046 2012-12-15 19:22 favicon.ico
-rw-r--r-- 1 root root 2150 2012-12-15 19:22 index.html
drwxr-xr-x 3 root root 4096 2012-12-15 19:22 localdomain
drwxr-xr-x 3 root root 4096 2012-12-15 19:22 localhost
-rw-r--r-- 1 root root 1794 2012-12-15 19:22 logo-h.png
-rw-r--r-- 1 root root  473 2012-12-15 19:22 logo.png
-rw-r--r-- 1 root root 5351 2012-12-15 19:22 style.css