Munin
その他UNIX系
概要
Muninは、サーバのリソース監視を行うためのアプリケーションです。
リソース監視のためのアプリケーションは、他にも MRTG や cacti がありますが、これらのリソース監視アプリケーションは設定がなかなか大変です。
Munin を使うことにより、面倒な設定を一切しなくても良く、非常にお手軽に使うことが出来る、、、、らしいのですが、個人的には少々特殊な環境で使っていることもあり、正直なところ現状では MRTG で十分お手軽だと個人的には考えていますw
既にコツを覚えてしまっているのでwww
インストール
Munin はクライアントサーバ形式で稼働します。
サーバ側が監視される各サーバ上で監視情報を提供するプロセスとして常駐し、クライアント側がいわゆる監視プログラムとなりますので、それぞれインストールする必要があります。
なお、サーバ側で常駐するプロセスを Munin ではノードと呼んでいます。
クライアント
まず、RRDtool の Perl モジュールである RRDs と HTML::Template が必要なのでインストールしておきます。
Munin 用のユーザーとグループを作成します。
# groupadd -g 4949 munin # useradd -u 4949 -g munin -s /sbin/nologin munin
公式サイトからアーカイブをダウンロードし、展開します。
% gzip -dc munin-1.4.4.tar.gz | tar xvf - % cd munin-1.4.4
Makefile.config がインストールのための設定ファイルとなるので、このファイルを編集します。
デフォルトで良い場合には特に編集する必要はありません。
個人的にはデフォルト設定は少々摩訶不思議な設定となっているので以下のように全面的に書き換えてしまいました(/_\;)
PREFIX = /project/munin CONFDIR = /project/munin/etc BINDIR = $(PREFIX)/bin SBINDIR = $(PREFIX)/sbin DOCDIR = $(PREFIX)/doc MANDIR = $(PREFIX)/man LIBDIR = $(PREFIX)/lib HTMLDIR = $(PREFIX)/www/docs CGIDIR = $(PREFIX)/www/cgi SSPOOLDIR = $(PREFIX)/spool DBDIR = /project/munin/var PLUGSTATE = $(DBDIR)/plugin-state LOGDIR = $(PREFIX)/log STATEDIR = /var/run/munin PERLLIB = /project/perllib
上記のように変えたので、Munin 用のディレクトリを作成しておきます。
% mkdir /project/munin
ここまでで準備は完了したので、ビルドしてインストールします。
% make # su # make install
サーバ
まず Munin 用のグループを作成します。
# groupadd -g 4949 munin
次に、Perl モジュール Net::Server::Fork が必要となるので、インストールしておきます。
これ以降のアーカイブ取得、インストール設定、ビルドまではクライアントと同様です。
make install だけが異なり、以下を実行してインストールします。
# make install-common-prime install-node-prime install-plugins-prime
以下のようにしてプラグインの設定を行います。
実際に行っているのは、シンボリックリンクを張るだけのようです。
# /project/munin/sbin/munin-node-configure --shell --families=contrib,auto | sh -x
設定
設定もクライアントとサーバをそれぞれ行います。
クライアント側の設定は、インストール時に設定したディレクトリ下の munin.conf で行います。
サーバ側の設定は、インストール時に設定したディレクトリ下の munin-node.conf で行います。
host で Listen IP を設定できるので、セキュリティ的にここだけは設定しておいた方が良いかと思います。
プラグイン
Munin では様々なプラグインがデフォルトで用意されており、etc/plugins 以下にシンボリックリンクが張られているものが実際に使用される仕様となっています。
従って、新たにプラグインを追加する場合にはシンボリックリンクを張り、逆に削除したい場合にはシンボリックリンクを削除すればOKです。
ちなみに、私は yum は明らかに情報不要なので削除しました。
PostgreSQL 接続数プラグイン
PostgreSQL の接続数を監視するためのプラグインは、デフォルトではインストールされますが有効となっていません。
有効とする場合には、まず以下のようにシンボリックリンクを張ります。
# ln -s /project/munin/lib/plugins/postgres_connections_ /project/munin/etc/plugins/postgres_connections_xxx
上記の xxx の部分には、接続数を取得したい DB 名を入れます。
※全てであれば "ALL" とする
さらに、/project/munin/etc/plugin.d 以下に、例えば postgres.conf という名前で以下の内容のファイルを作成します。
[postgres_*] user postgres env.PGUSER postgres
実行
クライアント側は cron で定期的に実行する想定となっているので、例えば以下のように munin ユーザーの crontab に設定を行います。
*/5 * * * * /project/munin/bin/munin-cron
なお、crontab に登録する前に、以下のように munin ユーザーでログインし、実際に実行して動作確認を行った方がよいでしょう。
# su - munin --shell=/bin/bash
サーバ側は、init スクリプトがアーカイブに含まれているので、インストールした各サーバ上で以下のようにして登録します。
# cp -i dists/redhat/munin-node.rc /etc/init.d/munin-node # chkconfig --add munin-node
※インストール設定がデフォルトではない場合には、init スクリプトを手動で修正する必要があります。
正常に登録できたら実行しておきます。
# /etc/init.d/munin-node start