MuninでLinuxサーバ性能監視:応用編

前回に引き続き、今回はMuninの応用的として、複数ノード(リモートノード)の監視方法とグラフの追加・削除の方法を紹介する。

◆複数ノードの統計取得

  • 以下の構成の場合で説明
    • 監視サーバ:cluster01:192.168.241.101
    • 被監視サーバ:cluster02:192.168.241.102
  • 監視サーバ(cluster01)側の設定
    • /etc/munin/munin.confに監視対象のノードを登録


[cluster01.local]
address 127.0.0.1
use_node_name yes
[cluster02.local]
address 192.168.241.102
use_node_name yes

  • 被監視サーバ(cluster02)側の設定
    • /etc/munin/munin-node.confの「allow」に監視サーバのIPアドレスを設定し、munin-nodeを再起動


例)allow ^192\.168\.241\.101$

  • ポイント
    • 監視サーバ側でホスト名が正常に表示されない場合には、munin.confのhostnameを設定する


例)host_name cluster01.local

◆グラフの追加・削除

muninのグラフ表示項目は、以下のように決定される。

  • 1. /usr/share/munin/plugins/配下のスクリプトが、muninの性能取得スクリプトの実体
  • 2. 上記スクリプトが/etc/munin/plugins/配下にシンボリックされていれば、当該項目のグラフが作成されることになる。
◇グラフの追加:Apacheのグラフ追加例

ここではApacheの例に説明。Apacheのグラフは複数種類あり、ここではapache_volume、apache_accesses、apache_processesの3つを追加してみる。手順は以下のようになる。

  • munin-node設定

以下のように表示したいapacheのグラフを生成するスクリプトシンボリックリンクを作成し、munin-nodeを再起動。


# ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apahce_processes
# ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apahce_accesses
# ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apahce_volume
# /etc/init.d/munin-node restart
cron実行間隔にもよるが、数分間待つと自動的にグラフが追加される。グラフが表示されない場合には、muninのログが「/var/log/munin/」配下に出力されるので、ここを確認すること。

  • Apahce設定

上記で設定したapacheの情報取得スクリプトは、/usr/share/munin/plugins/配下のスクリプト内でlibwww-perlによりApahceのserver-statusを取得している。このため、muninでApacheの情報取得を行うには以下の条件を満たす必要がある。

    • mod_statusモジュールのロード


LoadModule status_module modules/mod_status.so

    • ExtendedStatusの有効化


ExtendedStatus On

    • /server-statusへのローカルホストからのアクセス許可

※Allow,Denyでソース制限する場合にはローカルホストを許可する



SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from localhost

    • 設定変更が終わったら忘れずにApacheの設定をリロードしておくこと!


# /etc/init.d/httpd reload

  • 補足事項

server-statusへのコンテキストパスを変更する場合の注意点を1つ挙げる。server-statusへアクセスする際のコンテキストパスは、デフォルトのスクリプト(apache_xxx)では「/server-status」で固定されている。このため、httpd.confでコンテキストを変更した場合には、それに合わせてスクリプトを修正する必要がある。変更例を以下に示す。


# cd /usr/share/munin/plugins/
# grep 127.0.0.1 apache_processes
#my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/server-status?auto";
my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/admin/server-status?auto";

◇グラフの追加:Postfixのグラフ追加例
  • postfixのグラフは、デフォルトではPostfix Mailqueueのみ取得されている。これに加えてデフォルトで用意されている Postfix message throughput、Postfix bytes throughputのデータもあわせて取得したい場合には、muninのplugin設定に以下のように追記が必要になるので注意すること。


# grep -A 5 postfix /etc/munin/plugin-conf.d/munin-node
[postfix*]
user root
env.logfile maillog ←これを追記する
参考:http://www.sonorilo.net/2006/09/11/2109

◇デフォル以外のグラフ追加方法

デフォルト以外のグラフを追加する場合、以下のURLからオプションのグラフのダウンロードが可能。参考(MuninExchange):http://muninexchange.projects.linpro.no/?search

◆Muninのメリットとデメリットを考える

【メリット・いいところ】

Munin を利用する最大の利点は, 何もせずに殆どの情報がグラフ化できるところ。

インストールしただけで何も設定しなくても欲しい情報の殆どが取れている。監視ノードのインストールの段階で, インストーラがサーバの構成を確認して必要なプラグインを自動的にリンクしてくれている。CPU利用率, ロードアベレージ, メモリ使用量, ハードディスク使用率, ハードディスクI/O, ネットワーク帯域使用量, スワップ率, プロセス数, メールキュー, NTP, MySQLの各種情報, などが取得可能。
MRTGcacti では一つ一つの項目を監視ノード毎に設定しなければならない。サーバが数十台とかあったら泣きそう。情報が多すぎると感じた場合はプラグインへのリンクを削除すればいいだけ。また, グラフ表示が動的ではなく静的ファイルを定期的に生成しているので, グラフ表示自体も軽い。
リモートホストの監視も可能。htmldir配下を別ホストに定期的にコピーして参照するという運用もあるかな?
カスタイマイズが容易。MuninExchange にてプラグインも多数公開されており, 自分で書くことはほぼ無いと思われる。

【デメリット・課題】

期間指定でグラフが描画できない点、グラフの見た目(色使いとか)がいまひとつかっこよくない点が挙げられる。おそらくrrdtoolで処理する過程を修正すれば改善できるかも?