このページは2001年記述の初版
新しい内容の改訂版は
http://nadmin.org/howto/temperature.html
安定したサーバ運用のために、 CPUとMotherboardの温度を観察する。 温度情報取得には xmbmon を、グラフ化には MRTG を使う。
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
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 とでもしておけばよい。
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.
横軸が時刻、
縦軸が温度(℃)の10倍。