2009年4月3日金曜日

muninインストールめも

どうも俺です。
今まで仕事でサーバ監視ツールはMRTGを使っていましたが、今回思いつきでmuninを使ってみようと思いインストールしたのでメモします。

既に数多くの解説サイトがあるのでそれらを参考にしていたのですが、ほとんどがyumでインストールだったのですが、muninの内容を理解するためにソースからインストールしました。

今回は監視対象サーバ(munin-node)と監視サーバ(munin)は同一サーバで行います。
監視対象サーバと監視サーバを分ける場合は、都度読み替えたり付け加えたりしてください。僕もいずれ監視対象サーバーを増やす予定です。

まずは、muninユーザとグループ作成
<監視サーバ/監視対象サーバ>
# groupadd -g 4949 munin
# useradd -u 4949 -g munin -s /sbin/nologin munin
なぜかグループIDとユーザIDは4949ですが、これはmuninが仕様するポートがデフォルトで4949だからだと思います。
気になる人はIDを指定しなくても問題ありません。

次にmuninはRRDToolを必要とするのでインストール。これもソースから。
<監視サーバ>
# wget 'http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.0.x/rrdtool-1.0.49.tar.gz'
# tar zxvf rrdtool-1.0.49.tar.gz
# rrdtool-1.0.49
# ./configure
# make
# make install
RRDToolは1.0.x系でないと正常に動作しません。(munin_1.2.6の場合)

次にCPANモジュールをインストール。
CPANとはPerlモジュールを入手できるサイトのこと。CPANサーバへつなぎモジュールインストールを自動化してくれます。
<監視サーバー>
# cpan
と打つと対話モードになり、初回は設定をあれこれ聞かれます。
基本全て「Enter」でOKですが、最後に接続サーバを選択するよう質問されるので、そこはきちんと選んでください。
僕は「Asia」→「Japan」→「ftp.ringo.gr.jp」というところを選択しました。

<監視サーバ>
# cpan install Time::HiRes
# cpan install HTML::Template
# cpan install Net::SNMP ←SNMP利用する場合
結構時間かかりますが気長に待ってください。

では、munin本体のインストールです。
<監視サーバ/監視対象サーバ>
# wget 'http://jaist.dl.sourceforge.net/sourceforge/munin/munin_1.2.6.tar.gz'
# tar zxvf munin_1.2.6.tar.gz
# cd munin-1.2.6
ここで初期設定を変更したい場合は、Makefile.configを適宜修正
とりあえずこのままデフォルト設定で進めます。
# make install-main ←監視サーバ
これで監視サーバ側のインストールは終わりです。後はMRTGのようにcronでデータを取得できればグラフができます。

まだ監視対象サーバの設定ができていないので、監視対象サーバの設定を行います。
まず、CPANモジュールのインストール。
<監視対象サーバ>
# cpan install Net::Server::Fork
※よくあると思うけど、もし監視対象サーバがローカル接続のみの場合、
cpanコマンドは使えないので、グローバルに出ているサーバへ
# cpan install Net::Server::Fork
してから、@NICにあるNew::Server::Forkモジュールをftpかなんかで落とします。
僕の環境の場合、
/usr/lib/perl5/site_perl/5.8.5/Net
以下のファイル・ディレクトリ全てを持っていきました。


次に、先ほどのmunin-1.2.6で
<監視対象サーバ>
# make install-node install-node-plugins
/etc/opt/munin/plugins内へプラグインへのシンボリックリンクを作成
# /opt/munin/sbin/munin-node-configure --shell | sh

munin-nodeの自動起動設定
<監視対象サーバ>
# cp ${MUNIN-SRC-DIR}/dists/redhat/munin-node.rc /etc/init.d/munin-node ←環境に合わせてファイルを変えてください。
# chkconfig --add munin-node
# chkconfig munin-node on
# service munin-node start
ここでエラーの出る場合は/etc/init.d/munin-nodeを修正
24行目:/usr/sbin/munin-node → /opt/munin/sbin/munin-node
ひとまずココで監視対象側の設定は終わりです。


では設定ファイルを書き換えます。
<監視サーバ>
# vim /etc/opt/munin/munin.conf ←監視サーバ用設定ファイル
特に問題なければそのままでOK。

<監視対象サーバ>
# vim /etc/opt/munin/munin-node.conf ←監視対象サーバ用設定ファイル
これも問題なければそのままでOK。

cron設定
<監視サーバ>
# crontab -e -u munin
*/5 * * * * /opt/munin/bin/munin-cron 2>&1
このcronの設定を行う前に一度手動でテストしたほうが良い。
# /opt/munin/bin/munin-cron
と打つと
Can't locate RRDs.pm in @INC (@INC contains: 
というエラーが出ました。
これはRPDs.pmが見つからない(${PATH}に見つからないと言う事だと思う)ので
# cd /usr/local/src/rrdtool-1.0.x/perl-shared
# perl Makefile.PL
# make && make install
でサクッと解決。

でまた
# /opt/munin/bin/munin-cron
と打つと、
「これはmuninユーザでやった方がエエで!rootでやるなら--force-rootオプション付けたほうがエエけど、あまりスマートちゃうやん」と怒られました。
とりあえずこれでOKです。
--force-rootオプションを付けてやると、コマンドは成功するのですが生成されるファイルの所有者がrootになってしまうので、munin-cronのcronをmuninユーザで設定していると問題です。ま、rootでcron動かせばいいんだろうけどね。。。

<監視対象サーバ>
# service munin-node restart


以上で、終わりです。
あとはApacheの設定を
<監視サーバ>
# vim /usr/local/apache2/conf/httpd.conf
Alias /munin /opt/munin/var/www ←追加

ブラウザで
http://localhost/munin
とすればグラフが表示されます。

グラフが生成されない場合は、munin.confとmunin-node.conf内に書いてある
-- munin.conf
dbdir データ保存先
htmldirhtml ファイル保存先
logdir ログ保存先
rundirlock ファイル保存先

-- munin-node.conf
log_file ログファイル名
pid_filepid ファイル名

で指定されたディレクトリの所有者をmunin:muninにしてください。
特にlog_file / pid_fileは見落としやすいです。

mysql系のnodeをmuninに追加する場合は、
# vim /etc/opt/munin/plugin-conf.d/plugins.conf
[mysql*]
env.mysqladmin /usr/local/mysql/bin/mysqladmin
と、mysqladminへのパスを書く。

apache系のnodeをmuninに追加する場合は、
# vim /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-info.conf

# vim /usr/local/apache2/conf/extra/httpd-info.conf
<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1 localhost
</Location>
ExtendedStatus On
を追加すればヨロシ。

postfix系の監視で
find: deferred: Permission denied
find: active: Permission denied
find: maildrop: Permission denied
find: incoming: Permission denied
find: corrupt: Permission denied
find: hold: Permission denied
のようなログが出る場合は、
# vim /etc/opt/munin/plugin-conf.d/plugins.conf
[postfix_mailqueue]
user root
を追加でOK。

2 件のコメント:

ryotsun さんのコメント...

はじめまして。
ソースからのインストール方法探していました。
環境が整い次第、参考にさせていただきますね~^^

koexuka さんのコメント...

コメントありがとうございます!
cpanのインストール作業で手こずる場面もあると思いますが、是非とも参考にしてみてください^^