RRDToolとHotSaNICでハードディスク温度を計測
サーバを監視してネットワークトラフィックやCPU使用率などをグラフ化しビジュアル的に見れるMRTGというツールがありますが、現在はだんだんとRRDToolとHotSaNICのような組み合わせで監視を行うのが流行り(?)のようです。
そこで、LinkStationでRRDToolとHotSaNICを使用して監視を試みます。さらにハードディスクの温度を見る hddtemp を使用してハードディスクの温度の計測にもチャレンジしてみました。
画面イメージ
'MRTGによるネットワーク監視' MRTG使うと、ネットワーク帯域の利用状況をIn/Outパケットの2系統でグラフ化する事ができます。 また、MRTGの動作は、数値を取ってきてグラフ化するだけなので、SNMPでGETしたデータやコマンドの出力結果などもグラフ化する事もできます。
'InfoBB - RRDTOOL HotSaNIC SmokePing のインストール' FreeBSD4.7-STABLEにRRDTOOLをインストールしたときのメモです。
前置き
ここでは以下の環境でチャレンジしています。
- BUFFALO HD-H120LAN
- LinkStation/玄箱 ハックキットを使用してVine化済み
準備
HotSaNICでサムネイル表示を行う際にImageMagickが必要です。apt-get でインストールしておきます。
# apt-get install ImageMagick # apt-get clean
また、RRDTOOLのコンパイルには ‘freetype, gd, libpng, zlib’ のdevelパッケージが必要になりますのでこれもインストールします。
# apt-get install freetype-devel gd-devel libpng-devel zlib-devel # apt-get clean
hddtempのインストールと設定
rpmfind にある Mandrakelinux ディストリビューションのRPMがそのまま使えるということなのでいただいてきます。
# cd /tmp # wget ftp://ftp.rediris.es/sites/carroll.cac.psu.edu/mandrakelinux > /devel/cooker/contrib/ppc/hddtemp-0.3-0.beta8.2mdk.ppc.rpm # rpm -ivh hddtemp-0.3-0.beta8.2mdk.ppc.rpm
/usr/sbin/hddtemp が実行バイナリです。
自分のHD-H120LANでは Western Digital WD1200AB というハードディスクが使用されていました。
# /usr/sbin/hddtemp /dev/hda --debug ================= hddtemp 0.3-beta8 ================== Model: WDC WD1200AB-22DYA0 field(1) = 0 field(3) = 244 field(4) = 161 field(5) = 0 field(7) = 0 field(9) = 238 field(10) = 0 field(11) = 0 field(12) = 44 field(194) = 49 field(196) = 0 field(197) = 0 field(198) = 0 field(199) = 0 field(200) = 0
hddtemp で使用するハードディスクデータベースにこのハードディスクの情報が載っていないため ‘/etc/hddtemp.db’ に以下を追記します。
"WDC WD1200AB-22DYA0" 194 C "Western Digital WD1200AB"
# /usr/sbin/hddtemp /dev/hda /dev/hda: WDC WD1200AB-22DYA0: 45 C
RRDTOOLのインストール
RRDTOOLの日本語化パッチが含まれるソースRPMをいただいてコンパイルしてインストールします。
RRDTOOLで作成するグラフ中に日本語(漢字)を表示させることを目的とします。
# wget http://www.bigfield.com/~hiroshi/software/SRPMS/ > rrdtool-1.0.40-1.7.3j.src.rpm # rpm --rebuild rrdtool-1.0.40-1.7.3j.src.rpm
コンパイル後のRPMパッケージはディフォルトで ‘/usr/src/redhat/RPMS/ppc’ 以下に生成されますので、これをインストールします。
# rpm -ivh rrdtool-1.0.40-1.7.3j.rpm rrdtool-devel-1.0.40-1.7.3j.rpm
HotSaNICのインストール
RRDTOOLはただの統計グラフ作成ツールなので、フロントエンドの HotSaNIC をインストールします。ここでは安定版の 0.4 を取得します。HotSaNIC は Perl スクリプト群なので展開するだけです。ここでは展開先を ‘/usr/local’ 以下としています。
HTML overview to System and Network Information Center
HotSaNIC (the acronym stands for "html overview to system and network information center") consists of a set of perl-scripts built on Tobias Oetiker''s "rrdtool" to generate graphical system-statistics, currently supported platforms are linux (main development) and *BSD.
- HotSaNIC-0.4.0.tgzをダウンロード。
- ここでは /tmp に HotSaNIC-0.4.0.tgz があるとします。
# cd /usr/local # tar xzf /tmp/HotSaNIC-0.4.0.tgz
/usr/local/HotSaNIC 以下に HotSaNIC が展開されます。
HotSaNICにhddtemp用モジュールの追加
以下を参考にモジュールを作成しました。
RRDtoolは、 Tobias Oetiker <oetiker @ee.ethz.ch>によって書かれたプログラムで、世界中の沢山の人々が協力しています。このドキュメントは、RRDtoolとは何で、RRDtoolを使って何をできるのか、あなたの理解を助けになるためにAlex van den Bogaerdtによって書かれました。
このtar玉を /usr/local/HotSaNIC 以下に展開します。
cd /usr/local/HotSaNIC tar xzf /tmp/HotSaNIC-hddtemp-module-040706.tar.gz
/usr/local/HotSaNIC/data-hddtemp に展開されます。
HotSaNICのセットアップ
HotSaNICで監視対象とするモジュールのセットアップを行います。 /usr/local/HotSaNIC 以下にある setup.pl を実行します。モジュールごとに y/n で有効にするか否かを聞かれますので答えていきます。ここでは ‘PART, TRAFFIC, DISKIO, SYSTEM, HDDTEMP’ を y で答えて有効にしていきます。
このセットアップだけでは不十分なので以下の修正を行います。
/usr/local/HotSaNIC/settings
HotSaNIC の設定
‘47行目’ HotSaNICのディレクトリの指定
DAEMONDIR="/usr/local/HotSaNIC"
‘54行目’ rrdtoolのバイナリがあるディレクトリを指定
BINPATH="/usr/bin"
‘111行目’ HTMLとグラフの出力先の指定
WEBDIR="/home/httpd/html/rrdgraph"
‘167行目’ ImageMagickのバイナリがあるディレクトリを指定
CONVERTPATH="/usr/X11R6/bin/convert"
/usr/local/HotSaNIC/rrdtimer
ディフォルトでは’10秒毎‘にデータの取得とグラフの更新を行っているのでCPU負荷がかかりすぎるので、更新間隔を少し広くします。ここでは’60秒‘に変更する。
‘130行目’
if ($last+60 < = $now) {
/usr/local/HotSaNIC/data-traffic/settings
任意)TRAFFICモジュールの縦軸を bytes から bits に変更。
‘5行目’
STYLE="bits"
/usr/local/HotSaNIC/data-system/settings
任意)SYSTEMモジュールのCPUの縦軸をパーセンテージ(%)表記に変更。
‘14行目’
CPUGRAPH="percent"
/usr/local/HotSaNIC/data-system/read-data.pl
SYSTEMモジュールの cpu usage の idle と interrupt が逆になっているので修正。
‘70行目’
$cpu4{$cpu}=$cpu4;
‘71行目’
$cpu5{$cpu}=$cpu5;
/usr/local/HotSaNIC/data-system/diagrams
上の修正を行った場合、表示色も変更する。
‘205行目’
STACK:nicavg#00ff00:"nice"
‘209行目’
STACK:idlavg#ffff00:"idle"
/usr/local/HotSaNIC/data-diskio/settings
余計な定義があるのでコメントアウトする。
‘10行目’
#DRIVE=ファイルシステム,マウント場所
環境にあわせて監視するドライブを設定する。
# cat /proc/stat | grep disk_io disk_io: (3,0):(215542,11000,270268,204542,2929328)
3,0 となっている箇所を 3_0 として /usr/local/HotSaNIC/data-diskio/settings に反映
‘25行目’
DEV=3_0,hda
/usr/local/HotSaNIC/data-hddtemp/settings
監視対象にするハードディスクドライブの設定を行う。
‘19行目’
HDDTEMP=/dev/hda,hda,/dev/hda,C
/usr/local/HotSaNIC/data-hddtemp/read-data.pl
hddtemp のバイナリの位置を確認する。ディフォルトでは /usr/sbin/hddtemp となっているので通常は変更の必要がない。
‘21行目’
$value = `/usr/sbin/hddtemp -n $device`;
HotSaNICからグラフを作成する
# cd /usr/local/HotSaNIC # ./makeindex.pl # ./rrdtimer -i # ./diagrams # ./convert.pl
これでHTMLとグラフの出力先のディレクトリにグラフができあがるはずです。 http://foo.bar/rrdgraph で表示されるかと思います。
HotSaNICのrrdgraphの自動起動
毎回 ./rrdtimer -i; ./diagrams; ./convert.pl を実行しなければグラフは更新されませんが、定期的に更新するために /usr/local/HotSaNIC/rrdgraph をデーモンとして動かします。
# cp /usr/local/HotSaNIC/rrdgraph /etc/rc.d/init.d/ # /sbin/chkconfig --add rrdgraph # /sbin/chkconfig rrdgraph on # /sbin/chkconfig --list rrdgraph rrdgraph 0:off 1:on 2:on 3:on 4:on 5:on 6:off # /etc/rc.d/init.d/rrdgraph start</oetiker>