maehachi08 Anything Blog

2014年01月31日
Munin ことはじめ

Muninとは

Muninとは、言わずも知れたリソース監視ツールです。

Munin本体はPerlで開発されており、グラフ描画にはRRDToolが使用されています。

サーバ監視は、Nagiosなどのサービス・アプリケーション・ネットワークの監視ツールとMuninなどのリソース監視ツールを組み合わせて利用することで継続的なサービス提供を実現することが出来ると思います。

また、Muninと同様のリソース監視ツールとしてはCactiなどがあります。CactiはPHPで記述されたウェブアプリケーションなのでMySQLなどのRDBを必要としますが、MuninはRDBは不要でインストールしたらすぐに使い始めれるところが手軽だと思います。

Muninの動作について

muninは各々のリソース値の監視対象ホストにあたるmuninノードと、muninノードから各々のリソース値を取得し、RRDに格納、グラフイメージ生成、HTML生成を行うmuninマスタに分けられます。

Muninでは、muninマスタのcrondによって5分間隔で/usr/bin/munin-cron が起動します。

/etc/cron.d/munin

#
# cron-jobs for munin
#

MAILTO=root

*/5 * * * *     munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron

/usr/bin/munin-cron はシェルスクリプトです。

/usr/bin/munin-cron

#!/bin/sh

# This used to test if the executables were installed.  But that is
# perfectly redundant and supresses errors that the admin should see.

/usr/share/munin/munin-update $@ || exit 1

# The result of munin-limits is needed by munin-html but not by
# munin-graph.  So run it in the background now, it will be done
# before munin-graph.

/usr/share/munin/munin-limits $@ 

# We always launch munin-html.
# It is a noop if html_strategy is "cgi"
nice /usr/share/munin/munin-html $@ || exit 1

# The result of munin-html is needed for munin-graph.
# It is a noop if graph_strategy is "cgi"
nice /usr/share/munin/munin-graph --cron $@ || exit 1

中で呼び出される/usr/share/munin/munin-updateがmuninノードへ接続して値を取ってきてRRDへ格納します。

次に呼び出される/usr/share/munin/munin-limitsで/etc/munin/munin.confに設定された閾値を超過していないかチェックし、超過しているリソースに関しては別ファイルにて記録します。

次に呼び出される/usr/share/munin/munin-graphでRRDのデータソースを基にグラフを生成し、イメージファイルを作成します。

次に呼び出される/usr/share/munin/munin-htmlで表示用のHTMLファイルを作成します。この時に、/usr/share/munin/munin-limitsで作成された別ファイルをチェックし、閾値超過したリソースがあった場合はHTMLの該当部分を強調した状態で生成します。

これらの一連の動作を図にするとこんな感じでしょか。自分の認識なので異なる箇所があるかもしれません。(画像が小さいですが、近々、lightbox的なプラグインを何かしら導入予定です。。。)

![]("/uploads/file_upload/file/1/normal_20140131160345.jpg ")

次回は、muninマスタとmuninノードのインストールについて書いていきます!