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日本語化

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-Tutorial-jp

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>

Copyright © yu-ji All Rights Reserved.