« 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

コメント

コメントしてください




保存しますか?