2004年10月18日
状態監視ツールRRDToolとHotSaNICのFreeBSDへの導入
システムの状態を監視し、その数値をグラフ化するツールの導入を考える。有名で実績のあるものとしてMTRGがある。RRDToolは、MTRGの作者が作ったラウンドロビンデータベースであり、MTRGの次世代版とされている。そのRRDToolをバックエンドとして使うツールに、HotSaNICとCactiがある。今回は、そのRRDToolとHotSaNICをFreeBSDに導入する。
1週間のトラフィックの変動からWebのアクセスパターンがよく分かる。
![]()
1ヶ月のマザーボードの温度変化から、季節の移り変わりが感じ取れる。
![]()
まず、RRDToolをインストールする。
# portinstall net/rrdtool
今回の作業ではrrdtool-1.0.49がインストールされた。
次に、HotSaNICをインストールする。
/root/hotsanic/ 以下に展開し、動作させることにした。またグラフは、/usr/local/www/data-commoore/hotsanic/ に出力させることにした。
HotSaNIC には、安定版のバージョン0.4と開発版のバージョン0.5がある。
開発版の最新であるhotsanic-0.5.0-pre5.tgzの設定を試みたが、FreeBSDでは必要な機能がうまく動かなかった。そこで、安定版HotSaNIC-0.4.0.tgzの導入を行った。
# mkdir /root/hotsanic
# cd /root/hotsanic
# fetch http://puzzle.dl.sourceforge.net/sourceforge/hotsanic/HotSaNIC-0.4.0.tgz
# tar xvfz HotSaNIC-0.4.0.tgz
# chown -R root:wheel HotSaNIC/
# cd HotSaNIC
設定のためのコマンドを実行する。
# ./setup.pl
HotSaNICには様々な計測ツールが同梱されており、利用するものを選択して設定する。今回はそのうちの part、sensors、system、trafficを使うこととした。
(計測ツールに関する詳細は、/root/hotsanic/HotSaNIC/.settings.defaultにある)
setup.plの実行によって/root/hotsanic/HotSaNIC/ にrrdgraph と setting というファイルができる。また、var/ ディレクトリ以下にデータベースなどが準備される。
生成されたsetting ファイルを編集して、グラフが出力される場所を指定する。WEBDIRの項目にディレクトリを指定する。
#WEBDIR="not configured"
WEBDIR="/usr/local/www/data-commoore/hotsanic"
インデックスファイルを作成しておく。
# ./makeindex.pl
makeindex.plの実行で、/usr/local/www/data-commoore/hotsanic にディレクトリとhtmlができる。なお、事前に次のコマンドでsettingに指定したディレクトリを作っておくこと。
# mkdir -p /usr/local/www/data-commoore/hotsanic
# ln -s /usr/local/www/data-commoore /usr/local/www/data
FreeBSDでHotSaNICを動作させるにはいくつかの修正が必要だった。
1.swapの情報取得箇所の修正
/root/hotsanic/HotSaNIC/data-system/read-data.pl を次のように修正
open(IN,"/usr/sbin/pstat -sk|");
while(
#if (/Total/) { (undef, undef, $swpuse, $swpfre) = split; last; }
if (/\/dev\//) { (undef, undef, $swpuse, $swpfre, undef) = split; last; }
}
/root/hotsanic/HotSaNIC/data-system/makerrd を次のように修正
最大値を10GB弱から20GB弱へ拡大
if [ "$1" = "mem" ]; then
DEV=mem
#MAX=10000000000
MAX=20000000000
echo $SECS SYSTEM: setting up database $DEV.rrd for values [0..$MAX]
2.trafficの情報取得箇所の修正
/root/hotsanic/HotSaNIC/data-traffic/settings の重複項目を削除
/root/hotsanic/HotSaNIC/data-traffic/read-data.pl を次のように修正
# update database
# RRDs::update "rrd/$name.rrd",$sampletime{$name}.":".$devin{$name}.":".$devout {$name}."\n";
RRDs::update "rrd/$name.rrd",$sampletime{$name}.":".$devin{$name}.":".$devout{$name};
if ($ERROR = RRDs::error) { dupe_control("die",$ARGS{"MODNAME"},": unable to update `$name.rrd': $ERROR"); }
}
3.CPUの情報取得箇所の修正
cpu usageのidleとinterruptが逆
/root/hotsanic/HotSaNIC/data-system/read-data.plを編集(70行目あたり)
$cpu4{$cpu}=$cpu4;
$cpu5{$cpu}=$cpu5;
/root/hotsanic/HotSaNIC/data-system/diagramsを編集(205行目あたり)
STACK:nicavg#00ff00:"nice" \
STACK:idlavg#ffff00:"idle" \
4.partの情報取得箇所の修正
/root/hotsanic/HotSaNIC/data-traffic/settings から devfs の削除
更に、FreeBSDでsensorsを使うためには、マザーボードから温度・回転数・電圧の情報を取得するxmbmonを利用するための設定が必要になる。xmbmonのインストールはxmbmonで温度確認を参照。
まず、xmbmonのパッケージ(xmbmon204.tar.gz)に含まれているファイル mbmon-rrd.pl をHotSaNICのdata-sensorsディレクトリにコピーする。
# cd /root/hotsanic
# fetch http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/xmbmon204.tar.gz
# tar xvfz xmbmon204.tar.gz
# cp -p xmbmon204/mbmon-rrd.pl /root/hotsanic/HotSaNIC/data-sensors
次に、http://www.infobb.com/pc/bsd-rrdtool.htmlにxmbmonを使うための修正作業が紹介されている。これを適用する。
# cd /root/hotsanic
# fetch http://www.infobb.com/pc/HotSaNIC-0.4.0-20030121.patch
# cd HotSaNIC
# patch -p1 < ../HotSaNIC-0.4.0-20030201.patch
更に、次の修正を加えた。
・変更点その1
mbmon-rrd.plのmbmonの呼び出し方法を変更した。mbmonの呼び出しに-Iオプションを追加(遅延・負荷解消のため明示)し、また、システムの自動起動を使う場合を考慮して、絶対パスにしておく。
sub read_status()
{
local( %status ) ;
local( $key, $val ) ;
#open( FD, "mbmon -rc1|" ) || die "ERROR: Cannot run mbmon\n" ;
open( FD, "/usr/local/bin/mbmon -Irc1|" ) || die "ERROR: Cannot run mbmon\n" ;
while( $_ =
・変更点その2
data-sensors/settingsを編集
SENSOR=,mbmon,temperature & voltage,,,,volts/temp.
・変更点その3
settingsのRUN,SHOW,ORDER各行に'sensors'を追加
RUN="sensors part traffic system"
SHOW="sensors part traffic system"
ORDER="sensors traffic system part"
・変更点その4
temp1 (CPU温度)も表示するように修正した。
data-sensors/diagramsを編集
--- diagrams.patched Sun Sep 5 01:34:26 2004
+++ diagrams Sun Sep 5 02:07:54 2004
@@ -41,6 +41,7 @@
$BINPATH/rrdtool graph tmp.$IMAGEFORMAT -i -b 1024 -v $LEGEND \
-s -$RANGE -w $WIDTH -h $HEIGHT --alt-autoscale --alt-y-grid \
--title="$HEAD - last $DESCR ($DATESTRING)" \
+ DEF:temp1="rrd/$DEV".rrd:temp1:AVERAGE \
DEF:temp0="rrd/$DEV".rrd:temp0:AVERAGE \
DEF:vc0="rrd/$DEV".rrd:vc0:AVERAGE \
DEF:v33="rrd/$DEV".rrd:v33:AVERAGE \
@@ -50,7 +51,11 @@
"CDEF:v33_draw=v33,-1,*" \
"CDEF:v50p_draw=v50p,-1,*" \
"CDEF:v12p_draw=v12p,-1,*" \
- AREA:temp0#ff9900:"temp0 avg [c]" \
+ AREA:temp1#99ff00:"CPU temp. avg [c]" \
+ GPRINT:temp1:MIN:"(min\:%1.2lf %s," \
+ GPRINT:temp1:AVERAGE:"avg\:%1.2lf %s," \
+ GPRINT:temp1:MAX:"max\:%1.2lf %s)\n" \
+ AREA:temp0#ff9900:"M/B temp. avg [c]" \
GPRINT:temp0:MIN:"(min\:%1.2lf %s," \
GPRINT:temp0:AVERAGE:"avg\:%1.2lf %s," \
GPRINT:temp0:MAX:"max\:%1.2lf %s)\n" \
以上で、xmbmonのための修正は終わり。
HotSaNICを動作させるための自動起動スクリプトを準備する。
# cd /root/hotsanic/HotSaNIC
# cp rrdgraph /usr/local/etc/rc.d/rrdgraph.sh
HotSaNICの起動とデーモンの常駐を行う。
# cd /root/hotsanic/HotSaNIC
# ./rrdgraph start
もしくは
# /usr/local/etc/rc.d/rrdgraph.sh start
Starting rrdtimer...
reading & checking config (/root/hotsanic/HotSaNIC/settings) ...
evaluating cmdline arguments...
entering daemon mode...
標準の設定では、10秒おきにシステムの状態が取得され、15分おきにグラフが更新され(DTIME="15")、24時間おきにインデックスのグラフがweekly diagramsの小さい画像として更新される(CTIME="24")。
デーモンを止めるには、
# ./rrdgraph stop
もしくは
# /usr/local/etc/rc.d/rrdgraph.sh stop
Stopping rrdtimer...
とする。
再起動時に,mbmonの初回の読み込みが異常値を示す不具合が発生した。そこで、事前に数回呼び出してウォーミングアップさせておくように、自動起動スクリプトの修正し、次の4行を追加した。
case $1 in
start)
+ echo "Warming-up monitor..."
+ /usr/local/bin/mbmon -Irc1 > /dev/null 2>&1
+ /usr/local/bin/mbmon -Irc1 > /dev/null 2>&1
+ /usr/local/bin/mbmon -Irc1 > /dev/null 2>&1
echo "Starting rrdtimer..."
./rrdtimer Dp
;;
stop)
最後に、HotSaNICのツールの使い方をまとめる。
・インデックスなどのhtmlを作成するには、(次のどちらか)
./makeindex.pl
./rrdtimer -i
・各モジュールのgifを作成するには、
./diagrams
・インデックスのgifを作成するには、
..../convert.pl
参考になったページ
・RRDTOOL + HotSaNIC + SmokePing のインストール
http://www.infobb.com/pc/bsd-rrdtool.html