Linux Tips

MRTGでCPUの温度変化をグラフ化するには

北浦訓行
2005/10/6

 MRTGでハードディスクの温度変化をグラフ化するにはで説明したとおり、MRTGを使えば外部プログラムによって得た数値をグラフ化することができる。ここでは、CPUの温度変化をグラフ化する方法を紹介する。

 CPUの温度は、「lm_sensors」というプログラムで測定できる。lm_sensorsのインストールおよび実行方法については、CPUの温度やファンの回転数などをモニタするにはで紹介している。

 lm_sensorsを実行すると、以下のような測定結果が得られる。テストに使用したPCの場合、ファンの回転数を得ることができなかったが、マザーボードの温度を測定することができるようなので、CPUと合わせてマザーボードの温度もグラフ化することにする(MRTGは1つのグラフで値を2つ使用するため)。

# sensors
as99127f-i2c-0-2d
Adapter: SMBus Via Pro adapter at e800
VCore 1:   +1.78 V  (min =  +0.00 V, max =  +0.00 V)       ALARM
VCore 2:   +2.54 V  (min =  +0.00 V, max =  +0.00 V)       ALARM
+3.3V:     +3.31 V  (min =  +3.14 V, max =  +3.46 V)
+5V:       +4.92 V  (min =  +4.73 V, max =  +5.24 V)
+12V:     +12.04 V  (min = +10.82 V, max = +13.19 V)
-12V:      -5.47 V  (min = -13.22 V, max = -10.74 V)       ALARM
-5V:       -6.14 V  (min =  -5.25 V, max =  -4.74 V)       ALARM
fan1:        0 RPM  (min =    0 RPM, div = 2)
fan2:        0 RPM  (min =    0 RPM, div = 2)
fan3:        0 RPM  (min =    0 RPM, div = 2)
M/B Temp:    +36°C  (high =  +105°C, hyst =    +0°C) ←マザーボードの温度
CPU Temp:  +27.5°C  (high =   +90°C, hyst =   +80°C) ←CPUの温度
temp3:     -31.5°C  (high =  +122°C, hyst =  +121°C)
ERROR: Can't get VID data!
alarms:
beep_enable:
          Sound alarm enabled

 MRTGの設定は、/etc/mrtg/mrtg.cfgに行う。ここでは、MRTGでハードディスクの温度変化をグラフ化するにはで行った設定を丸ごとコピーして、それを変更することにする。

 ハードディスクの温度測定では、「Target[hddtemp]」としたが、このhddtempをすべてcputempに変更する。これによって、Webブラウザでcputemp.htmlというファイルを開けば、CPUとマザーボードの温度変化がグラフで現れることになる。hddtempの設定をすべて残しておけば、hddtemp.htmlを開くことによって、ハードディスクの温度変化も知ることができる。

 もう1つ重要なのは、「Target[cputemp]」で入力するCPUとマザーボードの測定結果だ。測定プログラムは、上記のとおりsensorsコマンドを使用するが、結果の表示が多岐にわたるため、そこからCPUとマザーボードの温度だけを取り出す必要がある。

 幸いなことに、sensorsの出力は測定結果の数値が変化するだけで、行数などは固定されている。上記の測定結果では、マザーボードの温度が13行目に、CPUの温度が14行目に表示されるため、13行目と14行目の最初に出てくる数字を抜き出せばいいことになる。

 ここでは、sensorsの出力結果からgrepでTempという文字列がある行を抜き出し、awkで測定結果を得て、sedで数値だけを取り出している(頭の「+」と単位の「℃」を削除)。sensorsの出力結果はマザーボードによって異なるので、環境に応じて「Target[cputemp]」を変更する必要がある。複雑な処理が必要な場合は、独立したシェルスクリプトを書いて、「Target[cputemp]」でそのシェルスクリプトを実行するようにした方がいいだろう。

Target[cputemp]: `/usr/bin/sensors | grep Temp | awk '{print $3}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'`
MaxBytes[cputemp]: 100
Title[cputemp]: CPUとマザーボードの温度
PageTop[cputemp]: <h1>CPUとマザーボードの温度</h1>
Options[cputemp]: growright,absolute,gauge,nopercent,noinfo
WithPeak[cputemp]: ymw
#unscaled[cputemp]: dwmy
YLegend[cputemp]: Temperature
ShortLegend[cputemp]: C
LegendI[cputemp]: M/B
LegendO[cputemp]: CPU
Legend1[cputemp]: M/B
Legend2[cputemp]: CPU

 /etc/mrtg/mrtg.cfgを編集して保存すれば、自動的に温度測定とグラフ化が行われるようになる。初期設定では、結果のファイル群が/var/www/mrtgに作成されるので、

http://PCのIPアドレス/mrtg/cputemp.html

にWebブラウザでアクセスするとグラフが表示される。当然ながら、ApacheなどのWebサーバが稼働している必要がある。

上記の設定で作成されたCPUとマザーボードの温度変化グラフ


Linux Tips Index



 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間