Munin

最終更新日時:2010-05-13 00:00:00
その他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


お問い合わせは 掲示板 にて。