RRDTool のRPM を作ってインストール

以前「MRTG の設定で挫折」 して以来、軽くトラウマーとなり、その後永きに渡って放置してきたハードウェモニタリングですが、MRTG より設定が難しいらしいという噂のRRDTool もHotSaNIC というものと併用すれば比較的簡単に導入出来るらしい、ということが分かったので改めてチャレンジしてみることにしました。参考にしたのは以下のページ。

あと、実際にインストールしたソフトをリスト、関連記事へリンクしておきます。細かいライブラリなどが別途必要になる場合があります。

以下、文末の表記ゆれが多々ありますがご容赦を。
公式サイトから"rrdtool-1.0.49.tar.gz " をダウンロード、中にSPEC ファイルがありますので"/usr/src/redhat/SPECS" へコピーします。漢字パッチはそのまま適用しても問題ないようなので、SPEC ファイルの中に記述してみましたが、記述を間違えたらしく、日本語化に失敗してました。RPM 作り直すのも手間なので、まぁ、またいずれ機会があれば。英語表示でも特には困らないです。


# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/rrdtool.spec # パッチをあてる
# rpmbuild -bc --target i686 /usr/src/redhat/SPECS/rrdtool.spec # コンパイルを行う
# rpmbuild -bi --target i686 /usr/src/redhat/SPECS/rrdtool.spec # インストールテスト
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/rrdtool.spec # パッケージを作成する

出来上がったパッケージをインストールしようとしたところ、依存関係のエラー発生。


# rpm -Uvh /usr/src/redhat/RPMS/i686/rrdtool-1.0.49-1.9.i686.rpm
: Failed dependencies:
perl(Net::SNMP) is needed by rrdtool-1.0.49-1.9

[rrd-users] Re: Can't install rrdtool(failed dependencies--perl(Net::SNMP)is needed by rrdtool-1.0.41-1.8.0)」 の記述を参考に、"cpan2rpm" で"Net::SNMP" パッケージを作り、インストール。


# cpan2rpm Net::SNMP
(snip)
# rpm -Uvh /usr/src/redhat/RPMS/noarch/perl-Net-SNMP-v5.0.1-1.noarch.rpm
: Failed dependencies:
perl(Crypt::DES) is needed by perl-Net-SNMP-v5.0.1-1
perl(IO::Socket::INET6) is needed by perl-Net-SNMP-v5.0.1-1
perl(Socket6) is needed by perl-Net-SNMP-v5.0.1-1

ここでもまた依存関係で怒られたので、またしても"cpan2rpm" で"Crypt::DES"、"IO::Socket::INET6"、"Socket6" それぞれのパッケージを作る。


# cpan2rpm Crypt::DES
# cpan2rpm IO::Socket::INET6
# cpan2rpm Socket6

"IO::Socket::INET6" はパッケージ作成中に良く分からないエラーが出る。コンパイル後のテストでfail してる模様。修正方法も思いつかないのでこれ以上の深追いは諦める。"IO::Socket::INET6"、"Socket6" は共にIPv6 関連のだと思うので、見なかったことにする。


Failed Test        Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/io_multihomed6.t   97 24832     5    5 100.00%  1-5
t/io_sock6.t         97 24832    20   20 100.00%  1-20
Failed 2/3 test scripts, 33.33% okay. 25/32 subtests failed, 21.88% okay.
make: *** [test_dynamic] Error 29

で、"--nodep" を付けて強行。問題があればまた考える。


rpm -Uvh --nodep /usr/src/redhat/RPMS/noarch/perl-Net-SNMP-v5.0.1-1.noarch.rpm

これでやっとRRDTool がインストールできた。


# rpm -Uvh /usr/src/redhat/RPMS/i686/rrdtool-1.0.49-1.9.i686.rpm

HotSaNIC はただのPerl スクリプト群なので、ダウンロードして解凍したものを"/usr/local/HotSaNIC/" 以下に放り込めばOK。hddtemp をsensors 内で使えるようになったみたいなので、daily snapshot の"hotsanic-0.5.0-pre6-snapshot.tgz" を使用。

あとは以下の順番でコマンドを入れ、試行錯誤しつつ設定していけばOK だと思います。細かい解説は上記のサイトなどをご参照ください(手抜きですみません)。


# cd /usr/local/HotSaNIC # 作業時は必ずこのフォルダで
# ./setup.pl # 初回、バージョンアップ、なんかおかしいときなどに実行
# emacs settings # よしなに編集
# emacs modules/hogehoge/settings # これもよしなに編集
# ./makeindex.pl # インデックスを作る
# ./rrdtimer.pl -i # 手動で実行しますよ
# ./rrdgraph start # rrdtool のデーモンを起動
# ./diagrams.pl # グラフを作成
# ./convert.pl # サムネイルを作成

なかでも一番ハマったのがsensors の設定。"lm_sensors howto" とかいうのも見つからないし、具体的な記述例とかもあんまりなかったので少々てこずりましたが、何とかうまくいったので、ASUS TUSL2 + (i2c) + lm_sensors + hddtemp での記述例を書いておきます。参考になれば。


SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/temp2,cpu_temp,CPU temp,3,1.4,25,C"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/temp1,mb_temp,M/B temp,3,1,0,C"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/fan1,cpu_fan,CPU fan,2,1,0,RPM"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/fan2,case_fan,CASE fan,2,1,0,RPM"
SENSOR="/usr/local/sbin/hddtemp -n /dev/hda |",hda,HDD1,1,1,0,C,40,60
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in0,vcore1,Vcore 1,3,1,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in1,vcore2,Vcore 2,3,1,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in2,+3.3v,+3.3V,3,1,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in3,+5v,+5V,3,1.68,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in4,+12v,+12V,3,3.8,0,V"

+5V と+12V の記述が厄介でした。"/etc/sensors.conf" をじっくり読んで、以下のような記述を発見。


label in3 "+5V"
label in4 "+12V"

compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1) compute in4 ((28/10)+1)*@ , @/((28/10)+1)

思いつきで、+5V には"(6.8/10)+1 = 1.68"、+12V には"(28/10)+1) = 3.8" を掛ければ良いのだなと適当に解釈、そのまま書いてみたらうまく出来ました。
全てがうまくいったら、起動スクリプトの設定。


# cp /usr/local/HotSaNIC/rrdgraph /etc/rc.d/init.d/rrdtool
# /sbin/chkconfig --add rrdtool
# /sbin/chkconfig --level 2345 rrdtool on
# /sbin/chkconfig --list rrdtool
rrdtool         0:オフ  1:オン  2:オン  3:オン  4:オン  5:オン  6:オフ
# /etc/rc.d/init.d/rrdtool start

(2005/01/20 15:55 追記)
標準で動いてなかったping を、以下のページを参考にして動くように設定。CPAN から"Net::Ping" をインストール。"modules/ping/settings" にアドレスと説明のリストを作り、"./setup.pl" を再度実行、特にエラーもなく表示されるようになりました。

(2005/06/28 20:00 追記)
CPU とM/B の記述が反対でした。あと、CPU もそのままの温度は不正確だったので、それも修正。修正の根拠は、+5V とかと同じく"/etc/sensors.conf" の"chip "as99127f-*"" 内の記述。ウチのサーバのM/B はTUSL2 なのですが基本的にはCUSL2 と同じでOK。


# Asus CUSL2, Asus CUV266-DLS
compute temp2 (@*60/43)+25, (@-25)*43/60

# Most Asus boards have temperatures settled like that: label temp1 "M/B Temp" label temp2 "CPU Temp"

"(@*60/43)+25" を計算、60/43 は1.3953488372093023255813953488372 なのだけど適当に丸めて1.4倍して25 を足すという感じで。小数点以下の誤差が出るけどこのくらいなら許容範囲内かなー、と。
/etc/sensors.conf(lm_sensors の設定)」 も参照してみてください。