« OpenBSD SL-C3000正式サポート | メイン | GA-7DPXDW帰宅 »
2005年05月25日
MRTGでCPU温度とHDD温度もグラフ化 [PC Unix]
暑い。暑くなってきた。こう暑いと気になるのは、日中ほったらかしの自宅サーバの温度。以前から一日一回昼間に温度計測結果をメールで投げてはいたが、どうせならグラフ化することに。
稼働しているうちのMRTG状況:MRTG Index Page
CPU負荷がやたら高いのは、Zaurus用の動画をがしがしエンコードさせてるから。こんなことやってるとますます温度が気になる。
MRTGは、SNMPで取得した値の他にも、とにかく値を渡せばグラフ化してくれる。 MRTGに渡す値は
- 入力
- 出力
- 稼働時間
- ホスト名
の4行形式で値を標準出力に出力する。「入力」と「出力」の数字がグラフに使用される。「稼働時間」「ホスト名」は空行でよい。入力出力ってのは、MRTGが基本的にネットワークトラフィック用なので送受信の値が必要ということ。あとは、この形式でCPU温度とHDD温度を取得し出力するスクリプトを書き、MRTGに設定すればよい。
●CPU温度出力スクリプト作成
CPU温度を取得するには、lm_sensorsを使用する。 かなり前にインストールしたので忘れてしまったが、確か 稼動状況をモニタする MB温度からCPU使用率まで1を参考にさせてもらった。なんとなく面倒だった記憶があるけど、インストール後にマシン自体を再起動させないと動かなかった気がする。
・MRTG用スクリプト(getcputemp.sh)
#/bin/sh
/usr/local/bin/sensors | grep CPU | awk '{print substr($3,2,2)}'
echo 0
echo
echo
lm_sensorsの出力をawkで切り出す。入力側の値をCPUの温度として使う。出力側の値は特に使い道がないので0を出力。DUAL CPUだと使い道はある。もしくはマザーボード温度とかでもいいけど、うちの場合はマザーボード温度が測れないから無視。chmod +x して/usr/local/binにでも置く。
●HDD温度出力スクリプト作成
HDD温度を取得するには、SMART情報取得ツールであるsmartmontoolを使用する。 インストール等はLinuxでSMART情報取得 Vine Linux 2.6 + smartmontools参照。
・MRTG用スクリプト(gethddtemp.sh)
#/bin/sh
/usr/sbin/smartctl -A /dev/hda | grep Temperature | awk '{print $10}'
/usr/sbin/smartctl -A /dev/hdb | grep Temperature | awk '{print $10}'
echo
echo
smartmontoolの出力をawkで切り出す。ちょうどHDDを2台搭載しているので、入力側の値をhdaの温度、出力側の値をhdbの温度として使うことにする。chmod +x して/usr/local/binにでも置く。
●MRTGの設定
MRTGのインストールなどは【連載 】SNMPによるネットワークシステムの監視や[@IT]MRTGによるサーバ監視システムの構築あたりを参考に。
mrtg.cfgに温度監視の設定を追加する。[mrtg.cfg全体]
### CPU Temperature ### Target[cputemp]: `/usr/local/bin/getcputemp.sh` MaxBytes[cputemp]:100 Unscaled[cputemp]:dwmy Options[cputemp]: gauge, growright, noinfo , nopercent Title[cputemp]: CPU Temperature PageTop[cputemp]: <H1>CPU温度</H1> ShortLegend[cputemp]: (Celsius) YLegend[cputemp]: CPU Temperature (Celsius) LegendI[cputemp]: CPU LegendO[cputemp]: none Legend1[cputemp]: CPU(Celsius) Legend2[cputemp]: none ### HDD Temperature ### Target[hddtemp]: `/usr/local/bin/gethddtemp.sh` MaxBytes[hddtemp]:100 Unscaled[hddtemp]:dwmy Options[hddtemp]: gauge, growright, noinfo , nopercent Title[hddtemp]: HDD Temperature PageTop[hddtemp]: <H1>HDD温度 緑:hda 青:hdb</H1> ShortLegend[hddtemp]: (Celsius) YLegend[hddtemp]: HDD Temperature(Celsius) LegendI[hddtemp]: hda LegendO[hddtemp]: hdb Legend1[hddtemp]: hda(Celsius)
普通はSNMPのMIBを参照しているTargetを、上記で作ったスクリプトを実行するように書くだけ。smartmontoolの実行にはroot権限が必要なので、MRTGのデータ更新はrootユーザーのcronで行う必要がある。あとは、次の更新タイミングの時に温度グラフも作成される。
投稿者 Naka : 2005年05月25日 10:58
トラックバック
このエントリーのトラックバックURL:
http://voidmain.no-ip.com/~nakamoo/cgi-bin/mt/mt-tb_ren20061115.pl/156