このページは2001年記述の初版
新しい内容の改訂版は http://nadmin.org/howto/temperature.html

CPU温度観察の仕方

安定したサーバ運用のために、 CPUとMotherboardの温度を観察する。 温度情報取得には xmbmon を、グラフ化には MRTG を使う。

mbmonのビルド

FreeBSDのportsを利用。

xmbmonはXアプリケーションであるが、 MRTGによるグラフ化にはGUIは不要。 また、mbmonは一定時間ごとに温度情報を出し続けるが、 MRTG用には一回表示して終了する仕様が適しているので、 以下の短いpatchをあてる。 これで表示間隔に0秒を指定すると、一度表示して終了するようになる。 これをpatch-myというファイル名で/usr/ports/sysutils/xmbmon/filesの下に置いて、 WITHOUT_X11=yes でmake。

--- mbmon.c.orig	Sun Aug 26 16:39:19 2001
+++ mbmon.c	Thu Nov  8 22:12:02 2001
@@ -90,7 +90,7 @@
 	argc-=optind;
 	argv+=optind;
 	if (argc >= 1) {
-	  if((n = atoi(argv[0])) > 0) {
+	  if((n = atoi(argv[0])) >= 0) {
 		sec = n;
 	  } else {
 	    fprintf(stderr, "  argument (%s) should be integer, stop!\n", argv[0]);
@@ -129,6 +129,8 @@
 	printf(" Vcore = %4.2f, %4.2f; Volt. = %4.2f, %4.2f, %5.2f, %6.2f, %5.2f\n", vc0, vc1, v33, v50p, v12p, v12n, v50n);
 
 /* sleep */
+	if (sec == 0)
+		exit (0);
 	sleep(sec);
 
 	}

mbmonの実行例

# mbmon 0
Temp.= 29.5, 29.1,  0.0; Rot.=    0,    0,    0
 Vcore = 1.76, 1.11; Volt. = 3.43, 5.25, 12.19,   0.00,  0.00

MRTGのビルド

FreeBSDのportsを利用。

情報取得用スクリプト

MRTGに読ませるために、 CPU温度、Motherboard温度、uptime、ホスト名、 を出力するスクリプト(mrtg-mbmon.sh)を用意。

#!/bin/sh
#
# mrtg-mbmon.sh
#     Monitor cpu/mb temperature, with arranging output for MRTG
#
# Written by KANAI Makoto <kanai@nadmin.org>

. /path/to/uptime.shlib

set $(/usr/local/bin/mbmon 0 | tr -d .,)
echo $2                                 # output 1
echo $3                                 # output 2

uptimestr $(uptime_in_sec)              # output 3

/bin/hostname                           # output 4

exit 0

MRTGに整数値を与えるため、温度を10倍した値を出力している。

uptime.shlibとuptimestr,uptime_in_secについては、 こちらのMRTG用uptimeライブラリを参照。
uptime表示にこだわらないなら、 uptime.shlibの読み込みをなくし、 output 3のところは単に echo 1 とでもしておけばよい。

MRTG用コンフィギュレーション

Target[temperature]: `/some/where/mrtg-mbmon.sh`
MaxBytes[temperature]: 1000
Title[temperature]: System Temperature
PageTop[temperature]: <H1>System Temperature</H1>
Options[temperature]: nopercent, gauge, absolute, unknaszero, growright
YLegend[temperature]: Temperature
ShortLegend[temperature]: degrees(x10)
Legend1[temperature]: CPU Temperature
Legend2[temperature]: M/B Temperature
LegendI[temperature]: CPU Temp.
LegendO[temperature]: M/B Temp.

出力例

MRTG output
横軸が時刻、 縦軸が温度(℃)の10倍。


Presented by kanai@nadmin.org
Nov. 10, 2001
Home