
高原の里
> パソコン
> > マザーボードの温度監視 |
lm_sensorsとMRTGによるマザーボードの温度監視
何ができるか
マザーボードの温度監視ができないかと考えていました。Linuxで動くBP-6の温度監視ということで、googleを使いあれこれと探したところ、lm_sensorsというプロジェクトがあるそうです。
http://www2.lm-sensors.nu/~lm78/index.html
早速、インストールし、SNMPにて監視できるようにして、MRTGを用いてマザーボードの温度変化のグラフを自動生成するようにしました。これで出先からマザーボードの温度がわかります。
すでに、SNMPとMRTGの設定は済んでいることを仮定しています。まだの人は、ITMEDIAの「エンタープライズ ヘルプデスク: Linux How-To - 第6回:SNMPによるネットワークモニタリング」
http://www.itmedia.co.jp/help/howto/linux/0007master/06/index.html
などを参考にして、ネットワークカードのトラヒックを監視できるようにしておきましょう
なお、お約束ですが、本インストールは自己責任でお願いします。
インストール
- 上記アドレスのダウンロードページより、i2c-2.8.1.tar.gz と lm_sensors-2.8.1.tar.gz
(新しいものがあればそちらを)をダウンロードします。
- /usr/src/linuxにソースツリーを用意します。
[Debian使いの方へ]
カーネルをコンパイルし直さなくてもかまいません。rootになり、以下の(1)-(4)の作業を行います。
(1) dselectを用いて、カーネルに対応する kernel-header と kernel-source
をダウンロードします。
(2) kernerl-sourceを展開するため、/usr/srcディレクトリーに移り、bzip2 [カーネルソース圧縮ファイル]
| tar xvf - 実行します。
(3) /usr/src/linux 以下にソースツリーが見えるようにするため、ln -s [カーネルソース展開ディレクトリー]
linux 実行します。
(4) 次のコマンドを実行して、カーネルコンパイル時の条件がソースツリーに残るようにします。
cd linux
mv include include.old
ln -s ../[カーネルヘッダーディレクトリー]/include .
ln -s ../[カーネルヘッダーディレクトリー]/.config .
これで、i2cやlm_sensorをだませます...。私はwoodyの2.4.18-1-686-smpカーネルでうまくいきました。
- tar xvfz i2c-2.8.1.tar.gz としてファイルを展開し、I2Cのディレクトリーに移り、makeを実行します。一時的にrootになり、make
installを実行します。
- 次に、tar xvfz lm_sensors-2.8.1.tar.gz としてファイルを展開して、lm_sensorsのディレクトリーに移り、makeを実行します。一時的にrootになり、make
installを実行し、depmod -aを実行します。私の環境では、depmod実行時に「Unresolved
symbols in ... matroxfb_maven.o」というエラーが出ますが、make実行時のコメントにあるように、このエラーは無視してかまいません。
- /etc/ld.so.conf に /usr/local/lib を追加して、ldconfigを実行します。
- prog/mkdev/mkdev.shを実行します。/devの下に関係デバイスファイル(/dev/i2c-0,
/dev/i2c-1, ..., /dev/i2c-31)が作成されます。
[Debian使いの方へ]
ここで、mkdir /etc/sysconfigとしてディレクトリーをつくっておきます。
- prog/detect/sensors-detectを実行します。たくさん質問されますが、規定値で大丈夫です。最後に次にようなメッセージが表示されます。最後の、/etc/modules.confに追加するものはメモしておきましょう。
To make the sensors modules behave correctly, add these lines to
/etc/modules.conf:
#----cut here----
# I2C module options
alias char-major-89 i2c-dev
#----cut here----
To load everything that is needed, add this to some /etc/rc* file:
#----cut here----
# I2C adapter drivers
modprobe i2c-isa
# I2C chip drivers
modprobe w83781d
# sleep 2 # optional
/usr/local/bin/sensors -s # recommended
#----cut here----
- /etc/modules.confに先のモジュールの記述(alias char-major-89...)を追加します。
[Debian使いの方へ]
システムがこのファイルを管理していますので、次のようにします。/etc/modutils/lm_sensorsというファイルを作成して、この部分を書きます。その後、update-modulesを実行します。前述の「***
Unresolved symbols...」が出ても気にしてはいけません。
- prog/init/lm_sensors.init を /etc/rc.d/init.d/lm_sensorsにコピーして、chkconfigで起動可能にします。
[Debian使いの方へ]
prog/init/lm_sensors.init を /etc/init.d/lm_sensorsにコピーして、update-rc.d
lm_sensors defaults を実行します。
- ここでsensorsを実行すれば、いろいろな情報が得られるはずです。うまくいかなければ、再起動してみてください。このとき、温度を示すセンサー名を記録しておきます。私の使用しているBP-6では、w83782d-isa-0290でした。sensors
w83782d-isa-0290 とすれば、次のような情報が得られます。温度の部分は、℃の丸の部分が文字化けして「庵」となっています。
w83782d-isa-0290
Adapter: ISA adapter
Algorithm: ISA algorithm
VCore 1: +2.04 V (min = +4.08 V, max = +4.08 V)
VCore 2: +1.52 V (min = +4.08 V, max = +4.08 V)
+3.3V: +3.37 V (min = +2.97 V, max = +3.63 V)
+5V: +5.11 V (min = +4.50 V, max = +5.48 V)
+12V: +12.20 V (min = +10.79 V, max = +13.11 V)
-12V: -11.98 V (min = -13.21 V, max = -10.90 V)
-5V: -5.17 V (min = -5.51 V, max = -4.51 V)
V5SB: +5.04 V (min = +4.50 V, max = +5.48 V)
VBat: +2.03 V (min = +2.70 V, max = +3.29 V)
fan1: 0 RPM (min = 3000 RPM, div = 2)
fan2: 0 RPM (min = 3000 RPM, div = 2)
fan3: 0 RPM (min = 3000 RPM, div = 2)
temp1: +39庵 (limit = +60庵) sensor = thermistor
temp2: +35.5庵 (limit = +60庵, hysteresis = +50庵) sensor = thermistor
temp3: +45.0庵 (limit = +60庵, hysteresis = +50庵) sensor = thermistor
vid: +2.000 V
alarms:
beep_enable:
Sound alarm disabled
- ここまでくれば、後はSNMPやMRTGにうまく読み込ませるだけです。上述のsensorコマンド実行例から、温度を読み取るためには、sensorコマンド出力の16行目から18行目までを切り出せばよいことがわかります。そこで、/usr/local/bin/sensor4mrtgというファイルを作成して、次の内容を書き込み、chmod
755 sensor4mrtg として実行可能にします。
/usr/local/bin/sensors w83782d-isa-0290 | \
/usr/bin/awk '{if ((16 <= NR ) && (NR <= 18)) print $2}' | \
/bin/sed -e 's/+//' -e 's/[^0-9+\.].*//'
- 次に、/etc/snmp/snmpd.confに次の内容を追加します。その後、snmpdにHUPのシグナルを送ります(kill
-HUP [snmpdのプロセス番号])。
exec .1.3.6.1.4.1.2021.53 sensors /usr/local/bin/sensor4mrtg
- /etc/mrtg.cfgに次の内容を追加します。下記の例では、コミュニティ名をpublic、ホスト名をhostとしています。環境に合わせて修正してください。
Target[temp-cpu]: 1.3.6.1.4.1.2021.53.101.1&1.3.6.1.4.1.2021.53.101.2:public@host
MaxBytes[temp-cpu]: 80
Title[temp-cpu]: CPU Temperture (Host)
PageTop[temp-cpu]: <H1>CPU Temperture (Host)</H1>
Options[temp-cpu]: gauge, absolute
YLegend[temp-cpu]: Temperature [C]
ShortLegend[temp-cpu]: C
Legend1[temp-cpu]: CPU1
Legend2[temp-cpu]: CPU2
LegendI[temp-cpu]: CPU1
LegendO[temp-cpu]: CPU2
Target[temp-sys]: 1.3.6.1.4.1.2021.53.101.3&1.3.6.1.4.1.2021.53.101.3:public@host
MaxBytes[temp-sys]: 80
Title[temp-sys]: System Temperture (Host)
PageTop[temp-sys]: <H1>System Temperture (Host)</H1>
Options[temp-sys]: gauge, absolute
YLegend[temp-sys]: Temperature [C]
ShortLegend[temp-sys]: C
Legend1[temp-sys]: System
Legend2[temp-sys]: System
LegendI[temp-sys]: System
LegendO[temp-sys]: System
- ウェブの表示ディレクトリーに移り、indexmaker /etc/mrtg.cfg > index.html
を実行します。そして、ブラウザーにはCPU温度と、システム温度が現れるはずです。お疲れ様でした。
冷却ファンの効果
先日のパソコンケース内の温度上昇対策のため、秋葉原でファンを購入しました。通常タイプのものです。2000円くらいでした。あまり期待していなかったのですが、ケース内温度が10度くらい下がります。現在50度くらいです。ちなみに、ケースを外しても、同じ50度くらいに下がりました。

|