Munin Masterサーバ構築

snmpdが立ち上がったら、次はリソースの収集とグラフ化。
これも、世の中に山のようにありますが、、、今回は Munin。
理由は中がperlだから。(コレにつきる)

Munin自体はざっと触った感じで、サーバ&クライアント型。
オフィシャルの用語だと、Master&node。
付属のINSTALLファイルだと、"main programs"&"client"

とりあえず、Masterサーバの設定をします。

○必要なもの:


Apache (Muninとは関係なしで、後々いろんなものから使うので、ソースから入れた)
rrdtool (PerlのRRDsモジュールも)
Perlモジュール (私の場合は、HTML::Templateをcpanpで入れて完了。)
GNU make (Sunのmakeだと、MuninのMakefileが動かない。。。)
Perlのモジュールは、最後のあたりに書いている munin-cron を実行した時に、loadにコケタ時に入れればOKです。


○個人的な動作ポリシー


基本的にmuninユーザを作成し、そのHOME(/export/home/munin)以下で動かす。
ということで、ユーザとか。

$ pfexec zfs create -o mountpoint=/export/home/munin rpool/export/home/munin
$ pfexec groupadd munin
$ pfexec useradd -g munin -s /bin/bash -d /export/home/munin munin
$ pfexec chown munin:munin /export/home/munin
$ pfexec passwd munin
New Password:
Re-enter new Password:
passwd: password successfully changed for munin
$


GNU Make
Sunのmakeが "/usr/bin/make"。
GNUのmakeが "/usr/bin/gmake"で入ります。/usr/gnu/bin/make からシンボリックリンクが張られて、一般ユーザのデフォルトPATHが "PATH=/usr/gnu/bin:/usr/bin:..."となるようなので、このあたりは記憶の片隅に覚えて置きましょう。
make叩くとGNU側が動くようになります。(まぁ、困ることは無いとは思いますが)


$ pfexec pkg install SUNWgmake
DOWNLOAD
...
$ ls -al /usr/gnu/bin/make
lrwxrwxrwx 1 root root 15 3月 16 02:29 /usr/gnu/bin/make -> ../../bin/gmake
$


rrdtool
OpenSolarisの場合、ちゃんとSunからパッケージで提供されていてびっくりしました。


$ pkg info -r SUNWrrdtool
名前: SUNWrrdtool
概要: Data analysis tool generating graphical representations
カテゴリ: Applications/System Utilities
状態: インストール済みでない
権限: opensolaris.org.dev
バージョン: 0.5.11
ビルドリリース: 5.11
分岐: 0.109
パッケージ化の日付: Thu Mar 5 20:07:37 2009
サイズ: 4.81 M バイト
FMRI: pkg:/SUNWrrdtool@0.5.11,5.11-0.109:20090305T200737Z

ただ、他のLLから使うモジュールが同梱されないので、結局はソースから入れることになります。


$ su - munin
$ mkdir src
$ cd src
$ wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.30.tar.gz
$ tar xzf rrdtool-1.2.30.tar.gz
$ cd rrdtool-1.2.30
$ ./configure --prefix=/export/home/munin --disable-tcl --disable-python --disable-ruby PERL=/usr/local/bin/perl
...
Config is DONE!

With MMAP IO: yes
Perl Modules: perl_piped perl_shared
Perl Binary: /usr/local/bin/perl
Perl Version: 5.10.0
Perl Options: PREFIX=/export/home/munin LIB=/export/home/munin/lib/perl/5.10.0
Ruby Modules:
Ruby Binary: no
Ruby Options: sitedir=$(DESTDIR)/export/home/munin/lib/ruby
Build Tcl Bindings: no
Build Python Bindings: no
Build rrdcgi: yes
Build librrd MT: yes
...
$ make
$ make install
$ ls ~/
bin include lib man share src
$

ちなみに、rrdtool 1.3系はコンパイルに挫折しました。。。


○Munin Masterサーバ

Makefile.config はその環境しだいですが、、、面倒ぐさがらずにちゃんと書きましょう。。。


$ su - munin
$ cd src
$ wget http://jaist.dl.sourceforge.net/sourceforge/munin/munin_1.2.6.tar.gz
$ tar xzf munin_1.2.6.tar.gz
$ cd munin-1.2.6/
$ cp -p Makefile.config Makefile.config.org
$ vi Makefile.config
...
$ diff Makefile.config Makefile.config.org
10c10< PREFIX = /export/home/munin

    • -

> PREFIX = $(DESTDIR)/opt/munin
13c13< CONFDIR = /export/home/munin/etc

    • -

> CONFDIR = $(DESTDIR)/etc/opt/munin
31,32c31,32< HTMLDIR = $(PREFIX)/public_html< CGIDIR = $(HTMLDIR)/cgi-bin

    • -

> HTMLDIR = $(PREFIX)/var/www
> CGIDIR = $(HTMLDIR)/cgi
35c35< DBDIR = /export/home/munin/opt

    • -

> DBDIR = $(DESTDIR)/var/opt/munin
42c42< LOGDIR = /export/home/munin/var/log

    • -

> LOGDIR = $(DESTDIR)/var/log/munin
46c46< STATEDIR = /export/home/munin/var/run/munin

    • -

> STATEDIR = $(DESTDIR)/var/run/munin
49c49< PERL = /usr/local/bin/perl

    • -

> PERL = $(shell which perl)
68c68< PERLLIB = /export/home/munin/lib/perl/5.10.0

    • -

> PERLLIB = $(DESTDIR)$(shell $(PERL) -V:sitelib | cut -d"'" -f2)
$
$ /usr/gnu/bin/make install-main
...
./install-sh -m 0755 build/server/munin-limits /export/home/munin/lib/
./install-sh -m 0755 build/server/munin-cgi-graph /export/home/munin/public_html/cgi-bin/
./install-sh -m 0644 build/server/Munin.pm /export/home/munin/lib/perl5/5.10.0/
$

rrdtoolとMuninのPerlモジュールはシステムではなく、muninユーザ下にあるので実行するcron用シェルは以下のように PERL5LIB を追加しておく。
(2,3行目を追加してます。)


$ vi /export/home/munin/bin/munin-cron
#!/usr/xpg4/bin/sh
PERL5LIB=/export/home/munin/lib/perl/5.10.0
export PERL5LIB
[ -x /export/home/munin/lib/munin-update ] && /export/home/munin/lib/munin-update $@;
[ -x /export/home/munin/lib/munin-limits ] && /export/home/munin/lib/munin-limits $@;
[ -x /export/home/munin/lib/munin-graph ] &&
nice /export/home/munin/lib/munin-graph --cron $@ 2>&1 |
fgrep -v "*** attempt to put segment in horiz list twice"
[ -x /export/home/munin/lib/munin-html ] && nice /export/home/munin/lib/munin-html $@;
$ crontab -e
0,10,20,30,40,50 * * * * /export/home/munin/bin/munin-cron > /dev/null 2>&1
5,15,25,35,45,55 * * * * /export/home/munin/bin/munin-cron > /dev/null 2>&1
$

とりあえず、ここまで。
Munin初めてなので、けっこう大変でした。