印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
LinuxWindows Windows XP マシンの温度を SNMP 経由で監視

2年前にやろうとして挫折した「SNMP 経由の Windows XP マシンの温度監視」に再チャレンジ。予想以上に上手くいく。

■ ■ ■

はじめに

Windows XP の SNMP サービスについて調べたのが,ちょうど2年前の今日(nlog(n): Windows XP の SNMP サービス)。調べるきっかけとなったのは,Windows マシンの温度監視が Linux でできないかと思ったからだった。Motherboard Monitor (MBM) を使うと,Windows 自身では温度監視ができるが,他のマシンからリモートで監視することはできなかった。MBM にはファイル転送機能がついているので,測定した温度を Linux に転送すれば温度のグラフができることになる(nlog(n): Motherboard Monitor 5 で温度監視)。Linux で MBM2MRTG を動かせばグラフができるから,2年越しでやってみようかと思ったら,サイトに接続できない。

もう少し調べてみると,SNMP Informant を使うと,MBM のデータを SNMP に乗せることができることが分かった。

以下は,Windows XP で MBM と SNMP エージェントを動かし,MBM で得られた Windows XP の CPU の温度を Linux で取得し,MRTG でグラフ化する方法である。

動作環境としては,温度監視対象マシンは Windows XP Home Edition,Motherboard Monitor 5.3.7.0,SNMP Informant MBM Monitor 1.0,温度監視マシンは Vine Linux 3.2, net-snmp 5.2.1.2, MRTG 2.12.1 (MRTG: The Multi Router Traffic Grapher)である。

Windows XP の設定

まず,Motherboard Monitor をインストールし(nlog(n): Motherboard Monitor 5 で温度監視),SNMP エージェントをインストールして有効化しておく(nlog(n): Windows XP の SNMP サービス)。MBM5 の日本語化パッケージを作っている人もいる(MBM5(Motherboard Monitor 5)用日本語パッケージ)。これはお好みで。

次に,SNMP Informant MBM のインストールを行う。snmp-informant.com にアクセスし,「Download」のページを開く。「Choose the file」で「SNMP Informant-MBM v1.0」を選択する。「SNMP Informant-STD v1.4」には温度監視が含まれていないので注意。メールアドレスは入力しなくてもよい。更新情報が欲しい場合は登録する。ダウンロードしたファイルをダブルクリックすればインストールできる。

SNMP Informant-STD の使い方については 【コラム】Yet Another 仕事のツール 第82回 SNMP InformantによるWindowsサーバのSNMPエージェント (MYCOMジャーナル) が参考になる。SNMP Informant-MBM は MIB のツリー番号が違うだけである。

Linux で動作確認

Linux から動作確認するには,snmpwalk コマンドを使う。snmpwalk がない場合は,net-snmp-utils パッケージをインストールする。同じ snmpwalk コマンドでも ucd-snmp のコマンドは書式が違うので注意が必要である(nlog(n): Windows XP の SNMP サービス)。

Windows に SNMP Informant-MBM をインストールすると「1.3.6.1.4.1.9600.1.10」で始まる MIB のオブジェクトツリーが追加される。確認はこのツリーを参照すればよい。Windows のホスト名を silver だとすると,次のように入力する。

$ snmpwalk -On -v 1 -c public silver 1.3.6.1.4.1.9600.1.10

これでズラズラと表示がされれば動作確認完了。ホスト名の替わりに IP アドレスでもよい。もし,次のように表示された場合は

Timeout: No Response from silver

Windows のファイアウォール機能が効いているので,設定を変えなければならない。

Windows に戻ってファイアウォール設定変更

Linux の snmpwalk コマンドで「Timeout」となった場合,Windows のファイアウォールの設定を変更しなければならない。まずは,ファイアウォール機能を無効にして snmpwalk コマンドを試すことである。これで反応がなかったらファイアウォール以外に問題がある。

ファイアウォールを無効にして動作したら,もう一度ファイアウォールを有効にする。そして,SNMP だけを通す穴を開ける。SNMP は,UDP の 161 番ポートを使うので,このポートを例外として登録すればよい。

  1. コントロールパネルの「Windows ファイアウォール」を開く
  2. 「全般」タブで,ファイアウォールを有効にし,「例外を許可しない」のチェックを外す
  3. 「例外」タブで「ポートの追加」ボタンをクリックする
  4. 「名前」に「SNMP」,「ポート番号」に「161」を入力し,「UDP」にチェックする
  5. 「OK」で閉じる

MRTG の設定

Linux 上の MRTG の設定を行う。設定内容は nlog(n): 温度変化を MRTG で表示する とほぼ同じ。違うのは「Target」の指定である。SNMP Informant を導入すると,ケース温度が「.1.3.6.1.4.1.9600.1.10.6.1.5.1」,CPU 温度が「.1.3.6.1.4.1.9600.1.10.6.1.5.2」という MIB のオブジェクト ID で参照できるようになるので,これにネットワーク経由でアクセスするように記述すればよい。

Target[index]: .1.3.6.1.4.1.9600.1.10.6.1.5.1&.1.3.6.1.4.1.9600.1.10.6.1.5.2:public@silver

SNMP Informant-MBM の監視対象と MIB との対応については,MRTGによるサーバ監視(Windows2K/XP編) が詳しい。参考までに,実際に使用している MRTG の設定ファイル silver-temp.cfg の内容を示す。

WorkDir: /home/httpd/html/mrtg/data
IconDir: ../images
Interval: 5
Refresh: 300
WriteExpires: Yes

Directory[index]: silver.temp
Options[index]: gauge,growright,nopercent,absolute,unknaszero
MaxBytes[index]: 65
Unscaled[index]: dwmy
WithPeak[index]: wmy
YLegend[index]: Celcius
Legend1[index]: CPU Temperature in Celcius Degrees
Legend2[index]: Case Temperature in Celcius Degrees
Legend3[index]: Maximal 5 Minute Temperature
Legend4[index]: Maximal 5 Minute Temperature
LegendI[index]: Case Temp:
LegendO[index]: CPU Temp:
ShortLegend[index]: C

Target[index]: .1.3.6.1.4.1.9600.1.10.6.1.5.1&.1.3.6.1.4.1.9600.1.10.6.1.5.2:public@silver
Title[index]: CPU and Case Temperature of Windows XP PC
PageTop[index]: <H1>CPU and Case Temperature of Windows XP PC</H1>
 <TABLE>
   <TR><TD>System:</TD> <TD>silver</TD></TR>
 </TABLE>

コンフィグレーションファイルが作成できたら,mrtg コマンドを3回入力する。

$ /usr/local/mrtg-2/bin/mrtg silver-temp.cfg
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for index
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for index was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove index.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename index.log to index.old updating log file
$ /usr/local/mrtg-2/bin/mrtg silver-temp.cfg
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove index.old updating log file
$ /usr/local/mrtg-2/bin/mrtg silver-temp.cfg

2回の入力で必要なファイルが全て生成されるため,3回目以降は警告が出なくなる。

グラフが上手く出力されていれば,上述の mrtg コマンドを crontab に書いて定期的に動作させればよい。5分毎に動作させるなら,次のように書いておく。

*/5 * * * * /usr/local/mrtg-2/bin/mrtg /home/httpd/html/mrtg/silver-temp.cfg >/dev/null 2>&1

実行結果が5分毎にメールで送られてくるのを防止するために /dev/null にリダイレクトしている。ディレクトリの構造がそのまま出ちゃってるけど,まあいいか。

MRTG による Windows XP パソコンの温度グラフ
MRTG による Windows XP パソコンの温度グラフ


開始して間もないので,まだちょっとしか表示されていないが,上手くいっている。

Posted by n at 2006-07-07 22:52 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?