Windows SNMP エージェントのインストール
コントロールパネルのプログラムの追加と削除より、「Windowsコンポーネントの追加と削除」でSNTPサービスをインストールする。
サービスを自動起動させるよう設定する
Windows Vistaの場合は、サービス名を右クリックしてプロパティを表示し、コミュニティ名を設定する必要性がある。(通常、コミュニティ名はpublicとする)
Windows標準のSNMPエージェントで得られるのは MIB-2, RFC1514など。ハードウエアの状態などは得られない。
システム関連 のSNMPエージェント拡張
CPUの負荷状態やメモリーの利用状況、ハードディスクの容量などを得るためのSNMPエージェント拡張機能をインストールする。
Windows NT系に対応したフリーのもので、よく使われているものは次の2つくらいか
SNMP Informant Standard (http://www.snmp-informant.com/)
SNMP4W2K Standard (http://www.snmp4tpc.com/snmp4w2k.htm)
どちらか一つを入れればよい。
CPU温度などをSNMP経由で得たい場合は
MBM (Motherboard Monitor) 用の拡張
SNMP Informant-MBM (http://www.wtcs.org/informant/products.htm)
MBMは2004年に開発と配布が終了しているらしい
SpeedFan 用の拡張
SpeedFan SNMP Extension (http://code.bastart.eu.org/projects/sfsnmp/)
MIBが配布されていないので、OIDを直接叩く以外に無い。
CPU温度などの温度センサーは次のOIDに割り付けられている。
.1.3.6.1.4.1.16.0.1.x (x=0,1,2...)
Perlのインストール
Active Perl (http://aspn.activestate.com/ASPN/Downloads/ActivePerl/)
MRTGのインストール
MRTGの入手と日本語ドキュメント (http://www.mrtg.jp/doc/)
Windows用zipファイルをダウンロードして、C:\Program Filesに解凍する。
mrtg.cfgを自分で作成しない場合は、自マシンのNIC情報のみを付加したmrtg.cfgを自動生成させることも出来る。
※ MRTGのログデータを格納するフォルダ名には、空白が入ってはいけないようだ。
c:\Program Files\mrtg-2.15.0\bin>perl cfgmaker public@localhost --global "WorkDir: c:\mrtg" --output mrtg.cfg
--base: Get Device Info on public@localhost:
--base: Vendor Id:
--base: Populating confcache
--coca: populate confcache public@localhost:
--coca: store in confcache public@localhost_ Descr MS TCP Loopback interface --> 1
--coca: store in confcache public@localhost_ Descr Marvell Yukon 88E8053 PCI-E G
igabit Ethernet Controller #2 --> 65539
--coca: store in confcache public@localhost_ Type 24 --> 1
--coca: store in confcache public@localhost_ Type 6 --> 65539
--coca: store in confcache public@localhost_ Ip 127.0.0.1 --> 1
--coca: store in confcache public@localhost_ Ip 192.168.1.10 --> 65539
--coca: store in confcache public@localhost_ Eth --> 1
--coca: store in confcache public@localhost_ Eth 00-01-80-61-00-00 --> 65539
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
--base: Walking ifMtu
--base: Walking ifSpeed
--base: Writing mrtg.cfg
自動作成で出来るファイルは次のようなものなので、これと同じ書式にしたがって自分でmrtg.cfgを作ってもよい
# Created by
# cfgmaker public@localhost --global "WorkDir: h:\mrtg" --output mrtg.cfg
### Global Config Options
# for UNIX
# WorkDir: /home/http/mrtg
# or for NT
WorkDir: c:\mrtg
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
EnableIPv6: no
Target[localhost_65539]: 65539:public@localhost:
SetEnv[localhost_65539]: MRTG_INT_IP="192.168.1.10" MRTG_INT_DESCR="Marvell-Yukon-88E8053-PCI-E-Gigabit-Ethernet-Controller-#2"
MaxBytes[localhost_65539]: 12500000
Title[localhost_65539]: Network Interface
PageTop[localhost_65539]: Network Interface
MRTGの実行
MRTG本体のあるフォルダで実行する。
c:\Program Files\mrtg-2.15.0\bin>perl mrtg mrtg.cfg
5分おきにグラフをアップデートするように設定
Windows 版 cron サービスをインストールする。
Cron NT service (http://www.kalab.com/freeware/cron/cron.htm)
インストーラがインストール先のフォルダ名を聞いてくるので、(たとえば)c:\Windows\system32 にインストールする。
アンインストール用のショートカットなどは「全く」作成されない。インストールしたフォルダでcmd.exeを開き crons.exe /? と実行すれば取り得るオプションが表示される。
Linuxと同じく、1分おきにcrontabを確認しに来るので、crons.exeがあるフォルダに crontab ファイルを作成する。
0,5,10,15,20,25,30,35,40,45,50,55 * * * * cron-mrtg-run.cmd
※ */5 のような記述はシンタックスエラーになる。完全にLinux互換とはいかない様だ…
なお、実行するコマンドは次のようなスクリプトファイルにまとめている。
cd c:\Program Files\mrtg-2.15.0\bin
perl mrtg mrtg.cfg
MIBブラウザ
Windowsには snmpwalk コマンド等の SNMP を扱うプログラムが標準では提供されていない。
GUIでMIBのOIDツリーを眺められる次のようなツールを使う。
GetIf SNMP MIB Browser (http://www.wtcs.org/informant/free_snmp_tools.htm)
インストールしたら、GetIfのフォルダ内に「mibs」というサブフォルダが作成される。ここに、SNMP Informant や SNMP4W2K のインストールフォルダから MIBツリーの定義ファイルをコピーする。
※ コピーしない場合は、何のキーワードも表示されないだけで、データ自体は参照できる。
Host Name に、ターゲットのアドレスを入力 (自マシンの場合は localhost) して Enter キーを押す
MBrowser タブに移り、OIDツリーをたどって必要な項目を表示(①)させて enter キーを押す。
SNMP経由でレスポンスが返ってきたら、必要な項目をクリック(②)して、 enter キーを押す。
そうすると、OIDの識別値が ③ に表示される。
OIDを直接指定してSNMPエージェントから値を得るだけなら、マイクロソフト純正のツールがある。
SnmpUtilG というソフトが、Windows 2000 Resource Kit や Windows XP Support Tool として配布されている。
mrtg.cfg のカスタマイズ
(ここで説明している mrtg.cfg をダウンロードする)
たとえば、CPU負荷のグラフを描かせたい場合は、次のような設定を追加する。
# SNMP4W2Kを用いる場合
Target[cpuload]: 1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48&1.3.6.1.4.1.311.1.1.3.1.1.2.1.4.1.48:public@localhost:
MaxBytes[cpuload]: 100
Title[cpuload]: CPU Load Log (MRTG)
PageTop[cpuload]: CPU Load Log
Options[cpuload]: growright,absolute,gauge,nopercent,unknaszero,integer
WithPeak[cpuload]: ymw
Unscaled[cpuload]: dwmy
YLegend[cpuload]: CPU Load
ShortLegend[cpuload]: %
LegendI[cpuload]: System
LegendO[cpuload]: User
Legend1[cpuload]: System
Legend2[cpuload]: User
SpeedFanで温度変化のグラフを描かせたい場合は、次のような設定を追加する。 (sf2mrtgの設定ファイルのサンプルはここからダウンロード)
# sf2mrtg を用いる場合
Target[temp]: `C:\Program Files\SpeedFan\sf2mrtg\sf2mrtg.exe`
# SpeedFan SNMP Extension を用いる場合
#Target[temp]: 1.3.6.1.4.1.16.0.1.0&1.3.6.1.4.1.16.0.1.1:public@localhost:
MaxBytes[temp]: 60
Title[temp]: System Temperature Log (MRTG/SpeedFan)
PageTop[temp]: System Temperature Log
Options[temp]: growright,absolute,gauge,nopercent,unknaszero,integer
WithPeak[temp]: ymw
Unscaled[temp]: dwmy
YLegend[temp]: Temperature
ShortLegend[temp]: deg-C
LegendI[temp]: System Temp
LegendO[temp]: CPU Temp
Legend1[temp]: System Temp
Legend2[temp]: CPU Temp
MRTG の cfgmaker で作成されたネットワークの負荷を監視するグラフは次のようになる。
Target[network]: 65539:public@localhost:
SetEnv[network]: MRTG_INT_IP="192.168.1.111" MRTG_INT_DESCR="Marvell-Yukon-88E8053-PCI-E-Gigabit-Ethernet-Controller"
MaxBytes[network]: 62500
Title[network]: Network Interface Log (MRTG)
PageTop[network]: Network Interface
Options[network]: growright,nopercent,unknaszero,bits
フリーのLinuxでは簡単に出来て、Windowsは有料ソフトなのに結構手間がかかりますね。
大して技術力もないのに濡れ手に粟のような商売をしている日本のITベンチャー企業にとっては、「何でも金を取れる」ビジネスチャンスのソフトなのかもしれませんが… > Windows
見た目や素人向けのセキュリティ(の雰囲気)を全面に出した Vista より、もっとSEに喜ばれる(?)製品構成にしましょうよ > M$さん