Hatena::ブログ(Diary)

shibainu55日記

2009-02-23

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

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


Muninの特徴

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

f:id:shibainu55:20090223230602p:image

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サーバの性能監視:応用編

hsskazuhsskazu 2010/07/29 17:31 はじめまして。自分のサーバにも Munin 入れてみました。
導入が簡単で驚きました。

可能であれば、munin-node サービスを立ち上げる手順も入れて
頂けると有り難いです。

※Munin が動かないと小一時間悩んでしまいまして。
 原因は、munin-node サービスを立ち上げていないことでしたので。

shibainu55shibainu55 2010/09/15 23:35 おっと、そうですね!
特に意識して省略していたわけではないので、追記させて頂きます。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/shibainu55/20090223/1235396838