====== だぁやま的 Fedora8 に Munin インストール ======
===== 準備 =====
* rrdtool install
tar xvfz rrdtool-1.2.27.tar.gz
cd rrdtool-1.2.27
./configure --prefix=/usr/local/rrdtool
make
sudo make install
sudo make site-perl-install
* Perl Modules
- Crypt-CBC-2.29
- Crypt-DES-2.05
- Digest-SHA1-2.11
- Digest-HMAC-1.01
- Net-SNMP-5.2.0
- Test-Simple-0.80
- HTML-Template-2.9
- Net-Server-0.97
- Date-Manip-5.54
* 以下DateManipのための努力
* Pod-Escapes-1.04
* Pod-Simple-3.05
* Test-Pod-1.26
* Devel-Symdump-2.08
* Pod-Coverage-0.19
* Test-Pod-Coverage-1.08
* Munin Install
- /usr/sbin/groupadd -g 600 munin
- /usr/sbin/useradd -u 600 -g 600 munin
- cd munin-1.2.6/
- vi Makefile.config
#
# the base of the Munin installation.
#
#PREFIX = $(DESTDIR)/opt/munin
PREFIX = /usr/local/munin
- make install-main
- make install-node install-node-plugins
- /usr/local/munin/sbin/munin-node-configure --shell | sh
* これをしないとmunin-nodeは何もしない=グラフが表示されない。
==== Setup ====
* このままじゃRRD-Toolが見つからないので、各種ファイルを変更。
* 変更対象
- /usr/local/munin/lib/munin-graph
- /usr/local/munin/lib/munin-update
- [追記] 最近のは munin-html / munin-limits にも書く必要がある
* use lib でrrdの場所を記述
use lib '/usr/local/rrdtool/lib/perl';
use RRDs;
use Munin;
* 画像ファイルが /usr/local/munin/var/www/ にできた。
- あまりにも深いので、 ApacheからAliasでショートカット。
# Munin
Alias /munin/ "/usr/local/munin/var/www/"
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
* munin-cron をcronに追加
# vi /etc/crontab
*/5 * * * * munin /usr/local/munin/bin/munin-cron 2>&1
* Nodeの起動用ファイルの配置
* srcディレクトリの dist/redhat/munin-node.rc を /etc/rc.d/init.d/ にコピー。
==== DEBUG ====
* 動かねーよって場合の対応
* munin-node にtelnet してみる。
* telnet で ディスク状態を見てみる。
$ telnet localhost 4949
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
# munin node at RX-93
fetch df
_dev_sda3.value 12
_dev_sda6.value 1
_dev_sda2.value 36
_dev_sda1.value 19
tmpfs.value 1
.
quit
Connection closed by foreign host.
* 動いていない場合には、munin-node.conf や Pluginsがあることを確認する。
* なお、confやpluginsを変更した場合には、munin-nodeをrestartすることを忘れずに。
===== Munin-node インストール =====
* ユーザ作成
# /usr/sbin/groupadd -g 6000 munin
# /usr/sbin/useradd -u 6000 -g 6000 -s /sbin/nologin munin
* ディレクトリ整備
# mkdir /home/munin
# mkdir /home/munin/dbdir
# chown -R munin.munin /home/munin
# chmod 755 /home/munin
# mkdir /var/log/munin
# chown -R munin.munin /var/log/munin
* 必要なもの
- Net-SNMP-5.2.0
- Crypt-DES-2.05
- Digest-SHA1-2.11
- Digest-HMAC-1.01
- Net-Server-0.9
* 展開
- tar xvfz munin_1.6.2rc2.tar.gz
- cd munin-1.6.2~rc2
* Munin-node の Makefile.config の変更箇所
PREFIX=/usr/local/munin
CONFDIR=$(PREFIX)/etc
DBDIR=/home/munin/dbdir
LOGDIR=/var/log/munin
STATEDIR=/var/run/munin
* make
# make install-node
# make install-node-plugins
* 起動ファイルの配置
- vi dist/redhat/munin-node.rc
- munin-node のディレクトリPATHを確認、変更
- sudo cp dist/redhat/munin-node.rc /etc/rc.d/init.d
- sudo /sbin/chkconfig --level 3 munin-node.rc on
* Pluginの自動配置
# /usr/local/munin/sbin/munin-node-configure --shell | sh
* munin-node 起動
- /etc/rc.d/init.d/munin-node.rc start
* Debug
- telnet localhost 4949
- fetch df でディスク情報がとれることを確認。
* munin-node.conf で許可IP追加
- vi /usr/local/munin/etc/munin-node.conf
* allow を正規表現で追加
* 変更後は munin-node を restartする。
===== マイプラグイン作成 =====
- 今回はDB2のコネクション数をとってみる
- でも、5分毎のCronに出力する必要がなかったので、30分毎のデータを集めることにした。
* データ出力
* db2inst1権限のcrontabで30分毎にコネクション数を出力するように設定。
* cron用のShell作成
# su - db2inst1
$ vi DB2connection.sh
#!/bin/bash
/opt/ibm/db2/V9.1/bin/db2 list applications 2>&1 | wc -l > /var/tmp/db2connectoins
* crontab 設定
$ crontab -e
*/30 * * * * sh /home/db2inst1/DB2connection.sh
* プラグイン作成
* code
# cd /usr/local/munin/lib/plugins
# vi db2_connect
#!/bin/sh
case $1 in
config)
cat <<'EOM'
graph_order connection
graph_title DB2 connections
graph_vlabel connection
graph_category DB2
connection.label DB2 connections
EOM
exit 0;;
esac
echo -n 'connection.value '
cat /var/tmp/db2connections
* chmod 755 するのを忘れずに。
* テスト
* Symlink作成
# cd /usr/local/munin/etc/plugins
# ln -s /usr/local/munin/lib/plugins/db2_connect ./
* munin-run テスト
# /usr/local/munin/sbin/munin-run db2_connect
connection.value 77
# /usr/local/munin/sbin/munin-run db2_connect config
graph_order connection
graph_title DB2 connections
graph_vlabel connection
graph_category DB2
connection.label DB2 connections
* 問題なければmunin-nodeを再起動し、反映する。
# /etc/rc.d/init.d/munin-node.rc restart
* 念のためmuninサーバからtelnet してみる
$ telnet db2server 4949
fetch db2_connect
connection.value 77
.
fetch db2_connect config
graph_order connection
graph_title DB2 connections
graph_vlabel connection
graph_category DB2
connection.label DB2 connections
.
quit
* グラフオプション
- 1000 を越える数字の場合、1kなどと表示されてしまう。この単位を指定する。例は1k=1024。
graph_args --base 1024
- 1000 を越える数字の場合、1kなどと表示されてしまう。これをやめる。
graph_scale no
===== ALERT設定してみる =====
==== munin.conf ====
* munin.conf に下記を追記
contact.email.command /usr/local/bin/email -s "SDLAB ALERT - ${var:group}::${var:host}" daxayama@sdlab.org
contact.email.max_messages 3
contact.email.always_send warning critical
* なお、/usr/local/bin/email は 普通のmailコマンドに置き換えてください。
* max_messages 3 は 3回まで(15分間)はメール送るという意味。見逃さないように3回にした。
* Alert対象から外したい場合は、対象.contacts no でOK
[GROUPS;servername]
address xx.xx.xx.xx
df.contacts no
* サーバ単位でAlertを止める場合には、contacts noと記述
* その他にこんな値も出せるよ。
${var:worst} WARNING / CRITICAL
${var:graph_title} グラフタイトル
詳しくは、munin-limit のsourceみちゃえ
==== plugin 設定を変更 ====
* さっき作成したdb2を例にする。
* code
#!/bin/sh
case $1 in
config)
cat <<'EOM'
graph_order connection
graph_title DB2 connections
graph_vlabel connection
graph_category DB2
connection.label DB2 connections
connection.warning 200:
connection.critical 250:
EOM
exit 0;;
esac
echo -n 'connection.value '
cat /var/tmp/db2connections
* 2行追加しました。
* connection.warning 200: は 200を越えたらALERT。 200を下回ったらALERTは:200。10以上200未満が正常値なら、 10:200。これから外れるとALERT。
==== ALERT SAMPLE ====
* サンプル
Subject: SDLAB ALERT - DB::db2m
DB :: db2m :: DB2 connections
CRITICALs: DB2 connections is 252.00 (outside range [:250]).
* 正常値にもどる
Subject: SDLAB ALERT - DB::db2m
DB :: db2m :: DB2 connections
OKs: DB2 connections is 202.00
===== TIPS =====
==== 画像サイズを変更 ====
* デフォルトで表示される画像は、「495 x 276」くらいの大きめなので、HTMLで表示させると横1024をやや越えて気持ち悪い。#br これをmunin.confで一括指定可能。
* 全体適応 munin.confうまく動いてくれない?
# Make graphs show values per minute. instead of per second
#graph_period minute
の下あたりに追記
graph_height 220
graph_width 400
* 個別適応 munin.conf
# a simple host tree
[DB2;db2server]
address 192.168.0.100
use_node_name yes
graph_height 220
graph_width 400
※上記は80%縮小、ホストツリーに書いてあげればOK
==== グラフの指定。最大値とか ====
* 使っていると、「あれ?muninってどーやって最大値していするの?」という疑問がでてくる。
* Pluginでrrdtoolに引数を渡すパラメータを指定すればOK
graph_args --base 1000 -r --lower-limit 0 --upper-limit 1500
* ちなみに、Kとかで丸めたくない人は、graph_scaleを指定すればよい。
graph_scale no
* --baseは 1K の単位指定。byteなどを扱う場合には1024で指定する。
* --lower-limit 0 はグラフの下限の値を0にする。
* --upper-limit 1500 はグラフの上限を1500にする。
* -r は自動スケールを許可する。
* 他には、こんなのあるけど試してない。
* -h -w グラフのサイズ。Defaultは400x100
* --only-graph グラフのみの表示。
* http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html