サーバの監視 RRDTool + HotSaNIC のインストール

ながらく MRTG を愛用してきましたが、アーキテクチャ的に古くささ満点なので、新サーバの監視には RRDTool + HotSaNIC を使うことにしました。いやぁ RRDTool も古いよって言われそうですけど・・・まぁいいや。

同じく RRDTool のグラフ化ツールとして cacti もあるんですけど、こっちはインストールが面倒くさいのでパス。Nagios も面倒くさいのでパス。自宅サーバ規模には RRDTool + HotSaNIC の手軽さがピッタリだと思います。

デフォルトで自動生成される index.html をちょいと好みの形に整形したり不要項目を消したりしてできたものがこんな感じ。グラフの見方が MRTG と違うので慣れるまでちょっと大変。おまけに sensors がチップセットが新しすぎて HDD の温度しか表示できていないのが致命的なんだけど・・・まぁいいや。近いうちに CPU 温度くらいは表示できるようにしたいです。

hotsanic01.jpg

さて、ではインストール手順まとめです。まずは参考にしたサイト一覧。

- スポンサーリンク -

実際に僕がインストールに使った手順は下記の通り。このマシン固有の手順とかちょっとあります。

まずは 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 そのままリターン)と入力。

setting up apps ...
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/ 配下のエラーを見ながら匍匐前進で設定を進めていった感じです。

- スポンサーリンク -