PCの温度・電圧、ファンの監視とグラフ表示

[第1版:2002年10月5日、初出:2002年10月3日]

CPU のファンが止まって CPU が熱暴走で壊れてしまった! という経験はありませんか?

最近の PC は、マザーボードに CPU の温度・電圧、ファンの回転数を検出するセンサが内蔵されていますが、これらの値をマザーボードの BIOS 設定画面だけでなく、Linux の起動後も監視できると便利です。

数値での表示と、ブラウザ上にグラフで表示する2つの方法を易しく紹介します。
目次

1. 概要
2. lm_sensors
3. GKrellM
4. RRDtool
5. rrdstats
6. 課題

7. 参考リンク
8.更新履歴

1.概要

1.1 数値で表示する (こんな感じ)
lm_sensors と GKrellM の2つのソフトを使用します。

(1) lm_sensors
PC に内蔵されたセンサで温度、電圧を計測するコマンドライン型のツール。
(2) GKrellM
lm_sensors が作成した温度・電圧、ファンの回転数だけでなく、様々なデータを表示するシステムモニタ。

lm_sensors のデータはリアルタイムで数値表示されます。(1)(2)の順にインストール、および設定をします。
RedHat 7.3 には上記の2つともデフォルトでインストールされていました。
1.2 ブラウザ上にグラフで表示する (センサ値ではないけど、例えばこんな風に)
上記 lm_sensors と 下記2つのソフトを使用します。
「ええっ、合計3つもぉ〜? インストール面倒だな〜、設定も難しいだろーな〜。やめとこ、パス!」と、尻込みしなくても大丈夫。初心者の方にも分かり易く書いたつもりです。

(3) RRDtool
各種データをグラフ表示する。ネットワークの状態、マシン室の温度、サーバの負荷などの状況をモニタリングするのに使われるようです。
(4) rrdstats
RRDtool の設定用ソフト(フロントエンド)の一つ。

この(1)(3)(4)の順番にインストール、設定します。

このページの目次に戻る

2. lm_sensors

2.1 パッケージの確認、インストール
# rpm -qa | grep -i lm_sensors
と入力して、

lm_sensors-devel-2.6.1-1
lm_sensors-2.6.1-1

のように表示されればパッケージはインストールされています。
インストールされていない場合は、

http://secure.netroedge.com/~lm78/

から入手できますが、インストールの注意点など後述の参考文献をご覧下さい。
2.2 センサの検出
センサは様々なタイプのもの(IC)があるので、自分の PC にどんなものが実装されているのかを調べます。

# sensors-detect

これでも良いですが、

# sensors-detect | tee sensors-detect.log

としてログファイルに記録しておくと、後で役に立つ場合があります。

色々質問してきます。英語です。大体は YES と答えればよい(Enter を押すだけ)ですが、たまにそうでもないのもあるので注意して下さい。後述の参考リンクのところに質問の意味を翻訳して解説しているページを紹介してますので参考にして下さい。

私のマシンでは、National Semiconductor 社の LM80, Serial EEPROM (PC100 DIMM), VIA  Technologies 社の VT82C686 Integrated Sensors という3つのセンサが検出されました。
2.3 モジュールロードの設定
sensors-detect の最後の方で、センサの検出結果に基づいて /etc/rc.d/rc.local と /etc/conf.modules または /etc/modules.conf に、このように追加しなさい、というのが表示されます。それに従ってこれらの設定ファイルを修正します。
2.3 動作確認
一旦マシンをリブートしてから
$ sensors
と入力(root 権限でなく一般ユーザでよい)して、下記のように電圧やファンの回転数がズラズラと表示されれば OK です。

$ sensors
lm80-i2c-0-2d
Adapter: SMBus vt82c596 adapter at 5000
Algorithm: Non-I2C SMBus adapter
+5V:       +5.29 V  (min =  +4.50 V, max =  +0.00 V)   ALARM
VTT:       +1.28 V  (min =  +1.71 V, max =  +1.51 V)   ALARM
+3.3V:     +2.57 V  (min =  +2.97 V, max =  +3.63 V)   ALARM
+Vcore:    +3.09 V  (min =  +2.52 V, max =  +3.08 V)   ALARM
+12V:     +12.95 V  (min = +10.80 V, max = +13.20 V)   ALARM
-12V:     -12.64 V  (min = -14.34 V, max = -12.26 V)  
-5V:       -5.25 V  (min =  -6.25 V, max =  -5.02 V)   ALARM
fan1:     10629 RPM  (min = 6000 RPM, div = 1)         
fan2:     9375 RPM  (min = 6783 RPM, div = 1)         
temp:     +127.00 庵 (hot:limit =  +6庵,  hysteresis = -57庵) ALARM
         (os: limit = -73庵,  hysteresis =  +5庵) ALARM
alarms:   Board temperature input (a LM75 perhaps?)    ALARM
alarms:   Chassis intrusion detection                  ALARM

eeprom-i2c-0-50
Adapter: SMBus vt82c596 adapter at 5000
Algorithm: Non-I2C SMBus adapter
Memory type:            SDRAM DIMM SPD
SDRAM Size (MB):        256

via686a-isa-6000
Adapter: ISA adapter
Algorithm: ISA algorithm
CPU core:  +1.76 V  (min =  +1.79 V, max =  +2.03 V)   ALARM
+2.5V:     +2.49 V  (min =  +2.48 V, max =  +2.03 V)   ALARM
I/O:       +3.25 V  (min =  +3.32 V, max =  +2.71 V)   ALARM
+5V:       +4.99 V  (min =  +5.17 V, max =  +4.23 V)   ALARM
+12V:     +12.10 V  (min = +12.52 V, max = +10.25 V)   ALARM
CPU Fan:  4687 RPM  (min = 135000 RPM, div = 2)          ALARM
P/S Fan:     0 RPM  (min = 3000 RPM, div = 2)         
SYS Temp:  +61.4庵  (limit =  +60庵, hysteresis =  +50庵) ALARM
CPU Temp:  +24.1庵  (limit =  +60庵, hysteresis =  +50庵)
SBr Temp:  +22.6庵  (limit =  +60庵, hysteresis =  +50庵)


「°C」となるべきところ「庵」と文字化けしています。
eeprom-i2c-0-50 というセンサは、メモリの容量を報告してますね。
lm80-i2c-0-2d と via686a-isa-6000 は、同じような内容ですね。どーして似たようなものが2つも必要なんでしょうね? ご存じの方は教えて下さい。

このページの目次に戻る

3. GKrellM

3.1 特徴
これ一つあれば他に何も要らないのでは? というぐらい様々なデータを表示するシステムモニタ。

例えば・・・SMP CPU モニタ、lm_sensors から得た温度・電圧・ファン回転数を表示するモニタ、プロセスモニタ、ディスクモニタ、インターネット・モニタ、ネットインタフェース・モニタ、メモリとスワップ領域使用量メータ、ファイルシステム・メータ、メイルボックス・モニタ、APM ラップトップ電池メータ、・・・など
Linux (RPM, DEB型式パッケージあり), FreeBSD, Mac OS X, NetBSD* / OpenBSD, Windows で動作する。
3.2 入手とインストール
$ rpm -qa | grep gkrellm

で探してみると RedHat 7.3 にはデフォルトで gkrellm-1.2.9 がインストールされていました。少し動かしてみたのですが、電圧は表示できるけど温度やファン回転数が表示できない(やり方がまずかったかもしれませんが)ので、下記 WEB ページから最新版の gkrellm-1.2.13 をダウンロードしました。
http://web.wt.net/~billw/gkrellm/gkrellm.html
RPM 型式のバイナリパッケージを GNOME なら GnoRPM とか、KDE なら Kpackage など、その他お好みのパッケージツールで展開するだけなので簡単です。
3.3 設定
$ gkrellm &

で起動して GKrellM ウィンドウの上部で右クリックすると全体の設定メニューが、図表の上だとそれぞれのモニタの設定メニューがポップアップします。
全体の設定画面の左側にある「内蔵」の「+」記号をクリックし、さらに「センサ」をクリックします。

「設定」タブの「ラベル」欄に +5V, VTT, +3.3V・・・と記入されているものと空白のものがあります。空白のものは、その右の「センサファイル」欄の末尾を参考に temp1, temp2, fan1, fan2 のように記入します。「倍率」と「補正値」の欄の数値に関しては、
$ man gkrellm
で表示される説明を参照して下さい。これらの値は /etc/sensors.conf で定義されています。

「電圧」タブの中にチェックボックスは、取りあえず全部チェックしておき、表示される内容を確認します。各値は刻々変化しますが、lm_sensors の sensors コマンドで表示されるものと近い値かどうかチェックします。

その後、不用な項目はチェックを外します。
3.4 問題点
(1) GKrellM ウィンドウに表示される項目名が文字化けしているものがある。

(2) 一部のセンサの値が変? これは前述の「倍率」と「補正値」の欄や /etc/sensors.conf の数値を調整すると良いのでしょうが、man gkrellm の説明を読んで理解するのが面倒なので、結構重要な問題ではあるが、取りあえずパス。
3.5 その他
ところで GKrellM って何て発音するの? どーゆー意味? ってゆーことがも〜のすごく気になりませんか?

答は GKrellM の WEBページの FAQ に書いてあります。GNU (or Gtk) Krell Monitors (or Meters) という意味だそうです。

Krell は普通の辞書には載ってません。リーダーズ英和辞典第2版という 7,600円もする辞典にも出てません。これは Forbidden Planet「禁断の惑星」という1956年の SF映画に出てくる惑星アルティア4の先住民族クレール人のことです。この映画のことは下記に紹介されています(日本語)。

http://www.geocities.co.jp/Hollywood/5710/forbidden-planet.html

あ〜すっきりした。これで安心してぐっすり眠れますね。


4. RRDtool
各種データをグラフ表示するソフトです。この種のソフトとして MRTG (Multi Router Traffic Grapher) というのが有名なようですが、MRTG は2種類のデータしかグラフ表示できないのに対して、RRDtool (Round Robin Database ツール)はそれ以上のデータを表示できるなどの特徴があるらしいです。但し、MRTG に置き換わるものではないとのこと。

http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
の download をクリックすると
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/download.html
が表示されます。私は Binary Distribution の Linux x86 RPM というのを入手しました。

RRDtool は使い方が難しいので設定用のソフト(フロントエンド)が色々あります。私は rrdstats を使用したのですが RRDtool は RPM パッケージ (rrdtool-1.0.39-1.7.2.i386.rpm) を展開するだけで済みました。設定は不要です。従って、詳しいことは知りません。

このページの目次に戻る

5. rrdstats

5.1 パッケージの入手とインストール
http://sourceforge.net/projects/rrdstats/
から rrdstats-0.3b.tar.gz をダウンロードしました。

tar.gz 形式のパッケージは、通常ならユーザディレクトリ (~) か /usr/local/src といったところに展開するのが普通です。
しかし、このパッケージの場合は /opt/rrdstats 以下にインストールされていることを前提に、設定ファイルやスクリプトが書かれている(ということを、一度失敗した後で調べてみて分かったのですが・・)ため、下記のようにしました。

# cd /opt
# mkdir rrdstats
# cd rrdstats
# tar zxvf rrdstats-0.3b.tar.gz
5.2 設定
付属の install というマニュアルは非常に簡素なものです。作者はマニュアルを書くのが嫌いなのか、あるいは英語が苦手なんでしょうか。ま、要点は押えてあるので必要にして十分と言えなくもないですが。以下に、その一部を翻訳します。

(1) インストールディレクトリは /opt/rrdstats/ です。

(2) /opt/rrdstats/etc/rrdstats.cfg を編集します。

    /opt/rrdstats/etc/rrdseti というファイルのフォーマットは name, email
   です。(seti stats 用のみ)
[訳注] seti stats というのが何ものなのか分からないのですが、とりあえず今回の目的であるCPUの温度、電圧、ファンの回転数の監視とは関係なさそう(?)だから無視。
(3) /opt/rrdstats/rrdhtml を実行して index.html と各種テーブルを作成する。設定ファイルの rrdstats.cfg を変更したときは、変更を有効にするためにこれを実行して下さい。
[訳注] これ、忘れ易いので要注意です!
(4) /etc/crontab に下記を追加して下さい。
* * * * * root /opt/rrdstats/rrdstats
30 * * * * root /opt/rrdstats/rrdstats.dat
(5) /opt/rrdstats/cron.daily の下にあるファイルと /opt/rrdstats/cron.hourly の下にあるファイルを、それぞれ /etc/cron.daily および /etc/cron.hourly にコピーして下さい。

(6) crond を restart して下さい。(service crond restart)
[訳注] crond の restart って、どーするんだっけ〜? たぶんコマンド一発でできるはずなんだけど調べるのも面倒なので安易にマシンをリブートしました。サーバマシンじゃないので、これでEのだ (^_^;;
(7) stats.php (Experimental)
あなたの web の stats.php ディレクトリをコピーし  /stats.php/includes/rrdstats.inc を、/etc/rrdstats.cfg と同じように編集して下さい。
[訳注] これも何のことだか私には意味不明ですが、今回の目的には不要みたいなので何もしません。


上記(2)の /opt/rrdstats/etc/rrdstats.cfg の編集ですが、念のため
# cp -a rrdstats.cfg rrdstats.cfg.ORIGINAL
のようにしてセーブしておくとよいでしょう。

私は次のようにしました。

変更前
変更後
rrdtool="/usr/bin/rrdtool"
rrdtool コマンドのフルパスです。
$ which rrdtool
で確認します。私はデフォルトのままで変更はしてません。
rrdname="hal9000"
rrdname="kawagishi"
これは「サーバ名」ということですが、生成される HTML ファイルの先頭に表示されるマシン名なので適当に入れました。漢字は化けます。
sensor=""
sensor="lm80-i2c-0-2d"
その他
後述

ここで sensor= の右辺に記述するべきものは以下のようにして調べます。
$ cd /proc/sys/dev/sensors
$ ls
chips  eeprom-i2c-0-50  lm80-i2c-0-2d  via686a-isa-6000

$ cd /proc/sys/dev/sensors/eeprom-i2c-0-50
$ ls
data0-15   data16-31  data32-47   data48-63
data64-79  data80-95  data96-111  data-127

$ cd /proc/sys/dev/sensors/lm80-i2c-0-2d
$ ls
alarms  fan1  fan2  fan_div  in0  in1  in2  in3  in4  in5  in6  temp

$ cd /proc/sys/dev/sensors/via686a-isa-6000
alarms  fan1  fan2  fan_div  in0  in1  in2  in3  in4  temp1  temp2  temp3

これらの fan1, in0, temp1 などを、例えば
$ cat fan1
とすると、センサから取り込んだ数値が入っていることが分かります。

このように lm80-i2c-0-2d か、via686a-isa-6000 が使えそうなので sensor="lm80-i2c-0-2d" としてみました。
各センサに関する項目は、GKrellM の設定ウィンドウの「倍率」と「補正値」の値、また/etc/sensors.conf で定義されている値を参考に変更します。
[変更前の /opt/rrdstats/etc/rrdstats.cfg]

〜 〜 〜
rrdname="kawagishi"
〜 〜 〜
# Sensors name

sensor=""
sensors="in0 in1 in2 in3 in4 in5 in6 in7 in8"
sensors_names="V.Core1 V.Core2 +3.3v +5v +12v -12v -5v V5SB V.Bat"
sensors_factor="1 1 1 1.68 3.8 5.14 3.14 1.68 1"
sensors_trans="0 0 0 0 0 14.91 7.71 0 0"

sensors_fan="fan1 fan2 fan3"
sensors_fan_names="Fan.Cpu Fan1 Fan2"
sensors_fan_colors="00FF00 FF0000 0000FF"

sensors_temp="temp2 temp1"
sensors_temp_names="Temp.CPU Temp.Motherboard"
sensors_temp_colors="00FF00 FF0000"

sensors_colors="00FF00"
sensors_color_max="FF0000"
sensors_color_min="0000FF"



変更後の /opt/rrdstats/etc/rrdstats.cfg [赤字が変更した部分]

〜 〜 〜
rrdname="kawagishi"
〜 〜 〜
#Sensors name

sensor="lm80-i2c-0-2d"
sensors="in0 in1 in2 in3 in4 in5 in6"
sensors_names="+5V VTT +3.3V V.Core +12V -12V -5V"
sensors_factor="2.633 1 1.737 1.474 6.316 5.482 3.222"
sensors_trans="0 0 0 0 0 -4.482 -2.222"

sensors_fan="fan1 fan2 fan_div"
sensors_fan_names="Fan1 Fan2 fan_div"
sensors_fan_colors="00FF00 FF0000 0000FF"

sensors_temp="temp"
sensors_temp_names="Temp.????"
sensors_temp_colors="00FF00 FF0000"

sensors_colors="00FF00"
sensors_color_max="FF0000"
sensors_color_min="0000FF"

5.3 動作確認
マシンをリブートして mozilla などのブラウザで URL に file:/var/www/html/stats/index.html を指定します。

様々なデータがグラフ表示され、lm_sensors の sensors コマンドで表示されるものと近い値であれば、とりあえず OKです。

このページの目次に戻る

6. 課題
(1) lm_sensors の sensors コマンドで表示される値で、変なものがある。例えば、
+5V:       +5.29 V  (min =  +4.50 V, max =  +0.00 V)
測定値の +5.29V は +5V に対して +5.8% なので「ま、こんなものかな」と思える値だが、min = +4.50 V で max = +0.00 V というのは???
他のデータも一つ一つよく見ると「ん?」というのがあります。

これに関しては、インターネットで検索中にどこかで「マザーボードの BIOS設定で表示される値と異なるがどうしたらよいか?」といった Q&A を見たので後日挑戦してみたいと思います。
(2) rrdstats でHTML を表示後、しばらく時間が経過してから更新ボタンをクリックしても表示が最新の内容に更新されない。

(3) rrdstats のウェブ経由での監視については、参考リンクをご覧下さい。

このページの目次に戻る

7.参考リンク
(1) 度とか監視
http://www.oag.co.jp/~kuma/junk/unix/sensors.html
lm_sensors のインストール、ウェブ経由での監視について書いてあります。
(2) 自宅サーバ度とかをweb経由で見たい
http://tochan.dip.jp/lab/lm-sensors/part1.htm

lm_sensors のインストール、perl による CGI
(3) Tip 〜CPUの温度や電圧を測る〜
http://www.geocities.co.jp/SiliconValley-Oakland/4432/tip/tip_cpu_temperature.html
Turbo Linux Workstation 7 に lm_sensors をインストール。
(4) lm_sensors
http://www.avr.to/linux/apri/lmsensor.html

Vine 2.5 に lm_sensors をインストール。
(5) RRDToolでサーバの状況を把握したい
http://www.zdnet.co.jp/help/tips/linux/l0479.html
(6) RRDtool 意訳プロジェクト
http://www.ofug.net/~gima/RRDtool/
(7) RRDTOOL 日本語化
http://www.bigfield.com/~hiroshi/rrdtoolja.html
(8) sensor_applet
http://members.jcom.home.ne.jp/jacobi/linux/softwares-ja.html

lm_sensors の値を読み取って GNOME アプレットに表示する
(9) National Semiconductor LM80 のデータシート
http://www.national.com/pf/LM/LM80.html
日本語の PDF ファイルがあります。

http://www.national.com/parametric/0,1850,2261,00.html

ナショセミのその他のセンサIC
このページの目次に戻る

8.更新履歴
2002年 9月30日 ドラフト作成
2002年10月 5日 第1版。公開
このページの目次に戻る


最初のページに戻る

1.GUIでパソコン通信しよう。Seyonの使い方
2.Linuxでスキャナを使おう   3.GUIのメールソフト、Nmail
4. Mozilla を使おう!  5.SoundBlaster AWE64 をLinuxで使う
6.ホームページ作成ソフト   7.翻訳ソフト、辞書   8.ワープロ、表計算、その他
9. ゲーム    10.ウィンドウマネージャ等   11.付箋ソフト
12.Linuxアプリ関連のリンク    13.困ったときは、どーするか?
14.ABOUT-NLSの翻訳   15.ブートマネージャ
16.Linmodem ドライバでWinmodemを動かそう
17.Linuxで FAXを使おう   18.ホイール付きマウスを活用しよう
19.LinuxでCD-Rを焼こう   20.Linux で DV(デジタルビデオ)編集しよう
21.Linux で ADSL に接続しよう   22.NTP で時計をピッタリ合わせよう!
23.Linuxでインターネット電話 (IP電話)
24.PCの静音化
25.PCの温度・電圧、ファンの監視とグラフ表示

gtkfind 1.1 の日本語化パッチ   Tk付箋   Tk  カラー・ブラウザ    conv2nmail4
翻訳魂のGUI クライアント『Tk翻訳』   翻訳の王様のGUI『Tk翻訳王』
Tcl/Tk による I18N(国際化) プログラミングの試み

Free Solaris  <Intel 版>