MuninでLinuxサーバの性能監視:基礎編

最近忙しくてなかなかアップできずにいたこのブログですが、久しぶりの更新。MySQL Clusterのバックアップ・リカバリ運用やオープンソースシステム構築など、色々アップしたいネタがたまっているものの、今日は直近でよく使う性能管理系のネタについて書いていきます。(前者のネタ更新をお待ちいただいている方、リクエストも頂いておりますがすみませんorz)。さて、今回は性能管理データを「とにかく簡単に」自動でグラフ化するツールとして、Muninを紹介します。

Muninの特徴

まず製品名ですが、muninと書いて「ムーニン」と読むようです。CPUやメモリ、ネットワークトラフィックミドルウェアの性能状況などが取得できます。RPMForgeのリポジトリからyumでインストールでき、導入・設定が非常に簡単。細かな制御ができない部分もありますが、「できるだけ簡単に、ライトに性能グラフを書きたい」「リモートサーバの監視をしたい」という場合に非常に役に立つツール。中身はperlで書かれたスクリプトになっていて、RRDToolというツールでグラフ化される。グラフはWebインターフェース上で確認でき、画面イメージは以下の通り。

MRTGなどほど細かな制御はできませんが、逆に導入・設定はとても簡単で、お手軽に導入できる性能監視ツールと言える(自宅サーバの性能監視にも使っています)。性能データを取得するmunin-nodeと、これらをWebインターフェースで表示させるmunin-serverとで構成される。

Munin監視サーバー(munin)導入

まずはRPMForgeのリポジトリをインストールする。RPMForgeリポジトリの導入方法はCentOS:RPMForgeリポジトリの追加方法を参照。準備ができたら、早速munin-serverをインストール。yumでインストールして終わり。2つの環境で導入した場合の結果は以下のようになる。


# yum install munin

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
munin noarch 1.2.5-1.el4.rf rpmforge 126 k
Installing for dependencies:
perl-Crypt-DES x86_64 2.05-3.2.el4.rf rpmforge 19 k
perl-HTML-Template noarch 2.9-1.el4.rf rpmforge 62 k
perl-Net-SNMP noarch 5.2.0-1.2.el4.rf rpmforge 95 k
perl-Net-Server noarch 0.97-1.el4.rf rpmforge 154 k
perl-Socket6 x86_64 0.20-1.el4.rf rpmforge 50 k
perl-rrdtool x86_64 1.2.29-1.el4.rf rpmforge 52 k
rrdtool x86_64 1.2.29-1.el4.rf rpmforge 963 k

Transaction Summary
=============================================================================


# yum install munin

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
munin noarch 1.2.5-1.el5.rf rpmforge 128 k
Installing for dependencies:
perl-Crypt-DES i386 2.05-3.2.el5.rf rpmforge 37 k
perl-DateManip noarch 5.44-1.2.1 base 144 k
perl-Digest-HMAC noarch 1.01-15 base 12 k
perl-Digest-SHA1 i386 2.11-1.2.1 base 48 k
perl-HTML-Template noarch 2.9-1.el5.rf rpmforge 62 k
perl-Net-SNMP noarch 5.2.0-1.2.el5.rf rpmforge 96 k
perl-Net-Server noarch 0.97-1.el5.rf rpmforge 157 k
perl-Socket6 i386 0.19-3.fc6 base 22 k
perl-rrdtool i386 1.2.29-1.el5.rf rpmforge 49 k
rrdtool i386 1.2.29-1.el5.rf rpmforge 951 k

Transaction Summary
=============================================================================
Install 11 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Munin監視サーバー機能設定

  • /etc/munin/munin.conf

設定ファイル「/etc/munin/munin.conf」を以下のように編集


# diff -u munin.conf.orig munin.conf
--- munin.conf.orig 2007-04-29 22:34:54.000000000 +0900
+++ munin.conf 2009-01-24 09:28:37.000000000 +0900
@@ -4,7 +4,7 @@
# databases, the HTML output, and the logs, severally. They all
# must be writable by the user running munin-cron.
dbdir /var/lib/munin
-htmldir /var/www/html/munin
+htmldir /var/www/munin
logdir /var/log/munin
rundir /var/run/munin

@@ -24,7 +24,7 @@
#contact.nagios.command /usr/sbin/send_nsca -H nagios.host.com -c /etc/send_nsca.cfg

# a simple host tree
-[localhost]
+[<ホスト表示名(任意)>]
address 127.0.0.1
use_node_name yes

@@ -69,3 +69,4 @@
# node_order Totals fii.foo.com fay.foo.com
#

+fork no
「fork no」は、下記メッセージ(メール)を出してmuninが停止してしまう事象への対応として追加。
⇒参考:http://full-of-nothing.blog.so-net.ne.jp/2008-05-21#

Lock already exists: /var/run/munin/munin-update.lock. Dying.

muninがcronでデータを収集し、/etc/munin/munin.confのdatadir(上記設定例では/var/www/munin)にデータを書き込むため、muninユーザに${datadir}に対する書き込み権限が必要になる


# chown -R munin.munin /var/www/munin
# chown -R munin.munin /var/www/munin

  • Apahce設定

デフォルトでは「/etc/httpd/conf.d/munin.conf」の記述は以下の部分のみ有効化されているので、セキュリティ面や仮想ホストに絞るなど、必要に応じて編集する。


ScriptAlias /munin/cgi/ /var/www/munin/cgi/
Alias /munin/ /var/www/munin/

  • cron設定

デフォルトでは以下のようにcron設定ファイル「/etc/cron.d/munin」が作成されるが、特に変更する必要はない。ただし、監視項目が多すぎる場合などには、1回の性能取得自体にcronの実行間隔よりも長い時間を要する場合があり、この場合には当然その回の情報収集はうまくいかない。こんな場合にはcronの実行間隔を長くするか、監視項目を減らして対応する必要がある。


#
# cron-jobs for munin
#

MAILTO=root
*/5 * * * * munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron

muninノード(munin-node)導入

サーバ同様、RPMForgeリポジトリが導入されていることを前提として、yumでインストール


# yum -y install munin-node
ただ動かすだけであればデフォルト設定でも十分なので、ひとまずこれでOK。簡単。

muninノード(munin-node)設定

  • /etc/munin/munin-node.conf

hostname程度は設定しておくほうが無難。それ以外はあまり変更する必要はない。


host_name hoge.example.com
なお、/etc/munin/munin-node.confの末尾にはデフォルトで以下のような設定が入っているが、これはローカルホスト上のmuninサーバがmunin-nodeと通信することを許可する設定となっている。munin監視サーバー⇒muninノード間の通信にはデフォルトでTCPの4949番ポートが使用される。

allow ^127\.0\.0\.1$

muninノード起動(追記)

  • munin-nodeを起動し、あわせてOS起動時の自動起動設定もしておく


# service munin-node start
# chkconfig --level 2345 munin-node on

さて、今回はmuninの基本的な導入方法と設定を紹介した。muninはデフォルトでも様々な情報の取得とグラフ化が可能だが、グラフの追加・削除やカスタマイズなど、さらに使いこなしたい場合の応用が可能になっている。応用的な活用方法については、今後引き続き紹介していく予定。

続きはこちら⇒ MuninでLinuxサーバの性能監視:応用編