Muninとは、言わずも知れたリソース監視ツールです。
Munin本体はPerlで開発されており、グラフ描画にはRRDToolが使用されています。
サーバ監視は、Nagiosなどのサービス・アプリケーション・ネットワークの監視ツールとMuninなどのリソース監視ツールを組み合わせて利用することで継続的なサービス提供を実現することが出来ると思います。
また、Muninと同様のリソース監視ツールとしてはCactiなどがあります。CactiはPHPで記述されたウェブアプリケーションなのでMySQLなどのRDBを必要としますが、MuninはRDBは不要でインストールしたらすぐに使い始めれるところが手軽だと思います。
muninは各々のリソース値の監視対象ホストにあたるmuninノードと、muninノードから各々のリソース値を取得し、RRDに格納、グラフイメージ生成、HTML生成を行うmuninマスタに分けられます。
Muninでは、muninマスタのcrondによって5分間隔で/usr/bin/munin-cron が起動します。
#
# cron-jobs for munin
#
MAILTO=root
*/5 * * * * munin test -x /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的なプラグインを何かしら導入予定です。。。)

次回は、muninマスタとmuninノードのインストールについて書いていきます!
Perl |
3
|
Linux |
16
|
Jenkins |
1
|
CI |
1
|
Bashシェル |
1
|
シェルスクリプト |
1
|
Munin |
7
|
Ruby on Rails |
7
|
plenv |
1
|
sudo |
2
|
Cobbler |
6
|
ruby |
1
|
rbenv |
1
|
WeeChat |
1
|
tmux |
2
|
Webistrano |
1
|
capistrano |
1
|
puppet |
8
|
growthforecast |
1
|
Supervisor |
1
|
perlbrew |
1
|
git |
2
|
Python |
1
|
pip |
1
|
PHP |
1
|
Nginx |
1
|
MySQL |
2
|
LXC |
2
|
RPM |
3
|
ImageMagick |
1
|
Subversion |
1
|
qmail |
3
|
yum |
1
|
ucspi-tcp |
1
|
daemontools |
1
|
Puppet |
1
|
IPVS |
1
|
Kickstart |
1
|
aaa |
0
|