2006.10.25 Wednesday
リソース監視奮闘記 〜ねぇ Munin〜
ねぇ Munin こっちむいて〜♪
恥ずかしがらないで〜♪

Y-110's wiki:Muninでらくらくリソース監視生活に詳細をまとめましたのでそちらもどうぞ。
リソース監視には Munin が楽だという話を色んなところで見かけていたので, 社内サーバの監視用に設定してみました。
入れてみた感想。
Munin 楽すぎ。
cacti とは比べ物にならないくらい設定が楽ですね。
MRTG や NagiosGrapher とは比較にすらなりません。
30台のサーバのリソース監視設定が 1日でほぼ終了。
設定して起動するだけで, 大体必要な項目が取得できているのは結構感動モノ。
また, Munin は SNMP で値を取得するのではなく, ノードの /proc の下の値を取得して必要なデータをまとめて監視クライアントに送信しています。
監視クライアントは送信されてきたデータを元に静的な HTML を出力するので, cacti のような動的グラフ出力に比べて表示も軽いです。
(Munin の SNMP経由での取得はMuninでリソース監視 〜SNMP編〜にまとめました。)
リソース監視を行うのに何を使うか迷っている方には, 迷わず Munin をお勧めします。
ソースからのインストールは若干ハマる部分もありましたので, 簡単にインストール手順を紹介しておきます。
恥ずかしがらないで〜♪

Y-110's wiki:Muninでらくらくリソース監視生活に詳細をまとめましたのでそちらもどうぞ。
リソース監視には Munin が楽だという話を色んなところで見かけていたので, 社内サーバの監視用に設定してみました。
入れてみた感想。
Munin 楽すぎ。
cacti とは比べ物にならないくらい設定が楽ですね。
MRTG や NagiosGrapher とは比較にすらなりません。
30台のサーバのリソース監視設定が 1日でほぼ終了。
設定して起動するだけで, 大体必要な項目が取得できているのは結構感動モノ。
また, Munin は SNMP で値を取得するのではなく, ノードの /proc の下の値を取得して必要なデータをまとめて監視クライアントに送信しています。
監視クライアントは送信されてきたデータを元に静的な HTML を出力するので, cacti のような動的グラフ出力に比べて表示も軽いです。
(Munin の SNMP経由での取得はMuninでリソース監視 〜SNMP編〜にまとめました。)
リソース監視を行うのに何を使うか迷っている方には, 迷わず Munin をお勧めします。
ソースからのインストールは若干ハマる部分もありましたので, 簡単にインストール手順を紹介しておきます。
インストール環境は CentOS 4.3。
Debian には aptパッケージがあるようなのですが, CentOS 4.3 の yumリポジトリには見当たりませんでした。
Munin は Perl と RRDtool があれば動きます。
Perlモジュールがいくつか必要ですが, DB や SNMP のインストールは必要ありません。
1. RRDtool のインストール
1.2.x では動作しないため(動作させる裏技はありますが), 1.0.x をインストールします。
今回は 1.0.50 をインストールしました。
予め以下の yum パッケージを導入しておきます。
インストール時に Perlモジュール RRDs.pm と RRDs.so も作成されるので @INC のディレクトリに放り込むか, シンボリックリンクを作成して下さい。
2. Munin(監視クライアント)インストール
Development のステータスでしたが, 1.3.2 をインストールしました。
まずは munin ユーザを作成します。
次に必要な Perlモジュールを CPAN でインストールします。
依存関係のあるモジュールもまとめて入れてしまって下さい。
# Perl に詳しくないのでここら辺テキトーです
最後に munin_1.3.2.tar.gz を解凍して Munin の監視クライアントをインストールします。
Makefile.config を編集すればインストール先を変えられるようなのですが, ごちゃごちゃして面倒くさそうだったので変えない方が無難かも。
デフォルトでは, /opt/munin や /var/opt/munin あたりに色々ファイルが放り込まれます。
Munin のインストールが終了したら, データ取得の cron を /etc/cron.d/munin あたりに仕掛けます。
これで監視側の設定は終了です。
3. Munin(ノード)のインストール
監視対象サーバ全てに対して以下の作業を行います。
ノード側には muninグループのみ作成しておきます。
Perlモジュールを入れます。
Munin のノードとプラグインをインストールします。
プラグインの設定を行います。
最後に munin-1.3.2/dists/redhat/munin-node.rc が起動スクリプトなので, それを /etc/init.d にコピーして完了。
そのままでは動作しないので, 以下の部分を編集します。
そしてノードを起動。
ノードが起動すれば OK です。デフォルトでは TCPポート 4949 で監視クライアントからのリクエストを待ち受けます。
これで設定は完了なので, 監視クライアントサーバの htmlディレクトリ /opt/munin/var/www に Apache の DocumentRoot以下からシンボリックリンクを張ってやれば, 素敵なリソース監視生活が始まります。
何もしなくても色んな値が取れていることに驚くはず。
CPUやメモリ利用率の基本的な項目から, i-node 関連, ネットワーク関連, プロセス関連, MySQL関連などなど。
プラグインも沢山公開されているので, 欲しい値の殆どが簡単に設定可能です。
グラフが出来ない, 値が取得できないといったトラブルが発生した方は, 気まぐれSE日記を参考下さい。
私は tls disabled に気づかず結構ハマりました・・・。
Munin 入れた後は NagiosGrapher に値を取得させるべく, シェルスクリプトをひたすら書いていたあの時間はなんだったんだろうと思えてきます。
気になっている人は取りあえずムーミン Munin 入れてみてくださいな。
Debian には aptパッケージがあるようなのですが, CentOS 4.3 の yumリポジトリには見当たりませんでした。
Munin は Perl と RRDtool があれば動きます。
Perlモジュールがいくつか必要ですが, DB や SNMP のインストールは必要ありません。
1. RRDtool のインストール
1.2.x では動作しないため(動作させる裏技はありますが), 1.0.x をインストールします。
今回は 1.0.50 をインストールしました。
予め以下の yum パッケージを導入しておきます。
・libart_lgpl-2.3.16-3
・libpng-1.2.7-1.el4.2
・libpng-devel-1.2.7-1.el4.2
・freetype-2.1.9-4.el4
・freetype-devel-2.1.9-4.el4
インストール時に Perlモジュール RRDs.pm と RRDs.so も作成されるので @INC のディレクトリに放り込むか, シンボリックリンクを作成して下さい。
2. Munin(監視クライアント)インストール
Development のステータスでしたが, 1.3.2 をインストールしました。
まずは munin ユーザを作成します。
# groupadd -g 4949 munin
# useradd -u 4949 -g munin -m -s /sbin/nologin munin
次に必要な Perlモジュールを CPAN でインストールします。
依存関係のあるモジュールもまとめて入れてしまって下さい。
# Perl に詳しくないのでここら辺テキトーです
# cpan install Time::HiRes
# cpan install HTML::Template
# cpan install Net::SNMP (SNMPを使う場合)
最後に munin_1.3.2.tar.gz を解凍して Munin の監視クライアントをインストールします。
# tar zxvf munin_1.3.2.tar.gz && cd munin-1.3.2
# make install-main
Makefile.config を編集すればインストール先を変えられるようなのですが, ごちゃごちゃして面倒くさそうだったので変えない方が無難かも。
デフォルトでは, /opt/munin や /var/opt/munin あたりに色々ファイルが放り込まれます。
Munin のインストールが終了したら, データ取得の cron を /etc/cron.d/munin あたりに仕掛けます。
*/5 * * * * munin /opt/munin/bin/munin-cron 2>&1
これで監視側の設定は終了です。
3. Munin(ノード)のインストール
監視対象サーバ全てに対して以下の作業を行います。
ノード側には muninグループのみ作成しておきます。
# groupadd -g 4949 munin
Perlモジュールを入れます。
# cpan install Net::Server::Fork
Munin のノードとプラグインをインストールします。
# tar zxvf munin_1.3.2.tar.gz && cd munin-1.3.2
# make install-node install-node-plugins
プラグインの設定を行います。
/opt/munin/sbin/munin-node-configure --shell | sh(実際にやっていることは, /etc/opt/munin/plugins にシンボリックリンクを張っているだけ)
最後に munin-1.3.2/dists/redhat/munin-node.rc が起動スクリプトなので, それを /etc/init.d にコピーして完了。
そのままでは動作しないので, 以下の部分を編集します。
chown munin /var/run/munin → # chown munin /var/run/munin
/usr/sbin/munin-node → /opt/munin/sbin/munin-node
そしてノードを起動。
# /etc/init.d/munin-node.rc start
ノードが起動すれば OK です。デフォルトでは TCPポート 4949 で監視クライアントからのリクエストを待ち受けます。
これで設定は完了なので, 監視クライアントサーバの htmlディレクトリ /opt/munin/var/www に Apache の DocumentRoot以下からシンボリックリンクを張ってやれば, 素敵なリソース監視生活が始まります。
何もしなくても色んな値が取れていることに驚くはず。
CPUやメモリ利用率の基本的な項目から, i-node 関連, ネットワーク関連, プロセス関連, MySQL関連などなど。
プラグインも沢山公開されているので, 欲しい値の殆どが簡単に設定可能です。
グラフが出来ない, 値が取得できないといったトラブルが発生した方は, 気まぐれSE日記を参考下さい。
私は tls disabled に気づかず結構ハマりました・・・。
Munin 入れた後は NagiosGrapher に値を取得させるべく, シェルスクリプトをひたすら書いていたあの時間はなんだったんだろうと思えてきます。
気になっている人は取りあえず









Comments