サーバの監視 RRDTool + HotSaNIC のインストール
ながらく MRTG を愛用してきましたが、アーキテクチャ的に古くささ満点なので、新サーバの監視には RRDTool + HotSaNIC を使うことにしました。いやぁ RRDTool も古いよって言われそうですけど・・・まぁいいや。
同じく RRDTool のグラフ化ツールとして cacti もあるんですけど、こっちはインストールが面倒くさいのでパス。Nagios も面倒くさいのでパス。自宅サーバ規模には RRDTool + HotSaNIC の手軽さがピッタリだと思います。
デフォルトで自動生成される index.html をちょいと好みの形に整形したり不要項目を消したりしてできたものがこんな感じ。グラフの見方が MRTG と違うので慣れるまでちょっと大変。おまけに sensors がチップセットが新しすぎて HDD の温度しか表示できていないのが致命的なんだけど・・・まぁいいや。近いうちに CPU 温度くらいは表示できるようにしたいです。
さて、ではインストール手順まとめです。まずは参考にしたサイト一覧。
- InfoBB - RRDTOOL + HotSaNIC + SmokePing のインストール
- HotSaNIC・rrdtool・設定・インストール・VineLinux
- HotSaNICで状態監視 - ももーい鯖覚書
- tool/HotSaNIC - Linux Tips
- System statistics by HotSaNIC/RRDTool - tuchiya.org Wiki
- HotSaNICでCPUの温度等をグラフ化 - K64's Home Web Server Debian GNU/Linux
実際に僕がインストールに使った手順は下記の通り。このマシン固有の手順とかちょっとあります。
まずは yum で足りないライブラリ関連をインストールします。
yum install lm_sensors yum -y install hddtemp yum install rrdtool yum install cairo-devel yum install pango yum install pango-devel yum install diskstat
なんだか HotSaNIC の設定でうまく動かなかったので、結局、最新の lm_sensors を手動でインストールします。
cd /usr/local/src wget http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-3.1.0.tar.bz2 tar jxf lm_sensors-3.1.0.tar.bz2 cd lm_sensors-3.1.0 make make install /usr/local/sbin/sensors-detect ln -s /usr/local/sbin/sensors-detect /usr/sbin/sensors ln -s /usr/local/sbin/sensors /usr/sensors
なんだか HotSaNIC の設定でうまく動かなかったので、結局、最新の RRDTool を手動でインストールします。
cd /usr/local/src/ wget http://oss.oetiker.ch/rrdtool/pub/rrdtool.tar.gz tar xvfz rrdtool.tar.gz cd rrdtool-1.3.7 ./configure make make install ln -s /usr/local/rrdtool-1.3.7 /usr/local/rrdtool cd bindings/perl-shared/ perl Makefile.PL make make install
次に HotSaNIC をインストールします。
cd /usr/local/src/ wget http://jaist.dl.sourceforge.net/sourceforge/hotsanic/hotsanic-0.5.0-pre5.tgz tar xvfz hotsanic-0.5.0-pre5.tgz mv HotSaNIC /usr/local/ cd /usr/local/HotSaNIC ./setup.pl
全て Yes でインストールしました。下記のように表示されたら n (or そのままリターン)と入力。
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
NetworkManager (running 1 times now) - Use this item?? (y/N) > y
/usr/local/HotSaNIC/settings に設定を追加してコンテンツ吐き出しパスを設定。画像形式は何となく PNG 形式にしてみる。
echo ' BINPATH="/usr/local/rrdtool/bin" WEBDIR="/var/htdocs/drk7.jp/admin/mrtg/" IMAGEFORMAT="png" ' >> /usr/local/HotSaNIC/settings
/usr/local/HotSaNIC/rrdtimer.pl を修正してデータの収集周期を10秒から60秒に変更。何故だか初期状態では秒数の制御部分がコメントアウトされているので、コメント解除+数値を10→60へ変更。
※赤文字の部分が修正部分。
if ($last+60 <= $now) { if ($CONFIG{DEBUGLEVEL} > 0) { print "$now: main loop running\n"; } # scan for modules and (re-)start them if necessary # if ($lastscan+$CONFIG{STIME} <= $now) { @modules=HotSaNICparser::scan_for_modules($CONFIG{MODULEDIR},$CONFIG{DEBUGLEVEL},$CONFIG{RUN}); %PIDs=call_modules(@modules); @PIDs=keys(%PIDs); $lastscan=$now; if ($CONFIG{DEBUGLEVEL} < 0) { logrotate(); } } # for each module call the read-data script. # if ($CONFIG{DEBUGLEVEL} > 0) { print "$now: signaling ",join " ",@PIDs,"\n"; } if (@PIDs) { if ($CONFIG{SCHEDULED} == 0) { kill "SIGUSR1", @PIDs; } else { foreach (@PIDs) { kill "SIGUSR1", $_; my $wait=int($CONFIG{SCHEDULE_MIN}+rand($CONFIG{SCHEDULE_MAX}-$CONFIG{SCHEDULE_MIN}))/1000; if ($CONFIG{DEBUGLEVEL} >3) { print "$wait($PIDs{$_}) "; } select(undef,undef,undef,$wait); } if ($CONFIG{DEBUGLEVEL} >3) { print "\n"; } } } $last=$now; }
cron 経由で起動されると、perl のライブラリパスがうまく通っていないのでエラーになる。
考えるのが面倒くさいので多少強引だけど、全ての .pl ファイルに以下を追加。
convert.pl、 diagrams.pl、makeindex.pl、rrdtimer.pl を以下のように修正。
use warnings; use lib '/usr/local/HotSaNIC/lib/';
まだエラーが発生。convert.pl、diagrams.pl において
my %CONFIG=HotSaNICparser::get_config("./"); の部分がうまくパスが通って以内模様。面倒なのでフルパス指定にしちゃう。
#my %CONFIG=HotSaNICparser::get_config("./"); my %CONFIG = HotSaNICparser::get_config("/usr/local/HotSaNIC/");
これで正常に動作する状態になったので、初期状態の index.html のテンプレ作成。
cd /usr/local/HotSaNIC/ /usr/local/HotSaNIC/rrdgraph restart /usr/local/HotSaNIC/makeindex.pl /usr/local/HotSaNIC/convert.pl
あとはサービスに追加してサーバのステータス監視の設定完了。
cp /usr/local/HotSaNIC/rrdgraph /etc/init.d/ chkconfig --add rrdgraph chkconfig --level 2 rrdgraph on chkconfig --level 3 rrdgraph on chkconfig --level 4 rrdgraph on chkconfig --level 5 rrdgraph on
まぁ〜前述したとおり、最終的に sensors とか一部動作していないみたいだけど、対応していないようなので仕方ありません。
結局は /usr/local/HotSaNIC/var/log/ 配下のエラーを見ながら匍匐前進で設定を進めていった感じです。
コメントやシェアをお願いします!