うっかりディスクフルにしてしまいました。これで3回目な気がします。今度こそ監視できるようにしようと思い立ちました。家庭内監視システムは Nagios で組んでいるのですが、Windows に NRPE は無いでしょうから SNMP 経由で監視することを考えます。

Windows では、クライアント Windows でも SNMP エージェントがインストールできます。2000 はどうだったか既に覚えてませんが、XP 以降では大丈夫です。

XP の場合は以下の手順です。

  1. 「コントロールパネル」→「プログラムの追加と削除」→「Windowsコンポーネントの追加と削除」→「管理とモニタツール」を選んで「詳細」→「簡易ネットワーク管理プロトコル (SNMP)」(「WMI SNMPプロバイダ」は不要) をチェックしてインストール。(要CD)
  2. SNMP Service サービスのプロパティの「セキュリティ」タブでコミュニティ名を設定する。(デフォルトは例によって “public”)
  3. 同様に、パケットを受け付けるアドレスを設定する。(デフォルトは全てのホスト)
  4. エージェントをインストールしただけでは Windows ファイアーウォールに穴が開かないので、がんばって開ける。

Win7 の場合はもうちょっと手順が簡単&セキュアになっています。

  1. 「コントロールパネル」→「プログラム」→「プログラムと機能」→「Windows の機能の有効化または無効化」→「簡易ネットワーク管理プロトコル (SNMP)」(やっぱり「WMI SNMP プロバイダー」は不要) をチェックしてインストール。(CD不要ぽい)
  2. エージェントをインストールしただけで Windows ファイアーウォールに適切に穴が開く。(が、後述のとおりセキュリティの問題は無い)
  3. SNMP Service サービスのプロパティの「セキュリティ」タブでコミュニティ名を設定する。(デフォルトはコミュニティリストが空で、つまり一切のリクエストを拒否することになる)
  4. 同様に、パケットを受け付けるアドレスを設定する。(デフォルトは localhost のみ)

で、インストールすると、以下のように見えます(ストレージのところだけ)

[umezawa@nyx:pts/0 ~]$ snmpwalk -v 1 -c public windows-xp-host.local .1.3.6.1.2.1.25.2.3.1 | nkf -Sw
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2
HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3
HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4
HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageRam
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: C:\ Label:  Serial Number c8bf8738
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: D:\ Label:ボリューム  Serial Number 22ac536
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: Z:\ Label:SWAP  Serial Number 9c04ff9e
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Physical Memory
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 25165814
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 94371834
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 2558351
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 115928
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 53238
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 5353942
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 55312796
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 1058002
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 16946
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 25723
HOST-RESOURCES-MIB::hrStorageAllocationFailures.1 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.2 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.3 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.4 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.5 = Counter32: 0
[umezawa@nyx:pts/0 ~]$

ボリュームラベルを SJIS で送ってくるので、上では UTF-8 に変換しています。(ターミナルが UTF-8 なので)

で、これを Nagios で監視するわけですが、/usr/lib/nagios/plugins/contrib/snmp_disk_monitor.pl というのがあったのでこれを使います。

[umezawa@nyx:pts/1 contrib]$ ./check_snmp_disk_monitor.pl -H windows-xp-host.local -C public -m 'C:\ Label:  Serial Number c8bf8738'; echo $?
Disk OK - 21% used on C:\ Label:  Serial Number c8bf8738
0
[umezawa@nyx:pts/1 contrib]$

うまくできているようです。あとは他のモノの監視と同じように設定ファイルに書けば OK。

最後に注意点が2つほど。

  • ドライブレター(つまり Unix で言うところのマウントポイント)だけでなくボリュームラベルやボリュームシリアルナンバーまで含めて指定しなければいけないため、ボリュームラベルを変更したりディスクを再フォーマットしてボリュームシリアルナンバーが変化したりすると設定ファイルを書き換えなければならない。
  • ボリュームラベルを設定ファイルに書くことになるので、監視対象のボリュームラベルに漢字等を使うのは避けた方がよさそう。

SNMP 汎用ではなく Windows の SNMP に特化したチェックプラグインならこういう問題は無いかもしれませんね。

Trackback

only 1 comment untill now

  1. Windows ホストのディスク使用量を SNMP 経由の Nagios で監視する(その2)

    あんま本質的ではない補足なんですが… 設定した閾値を超えても WARNING にならないのでなんでかなーと調べていたら、使っている nagios-plugins-1.4.16-1.el5.rf の中の /usr/lib/nagios/plugins/contrib/che…

Add your comment now