1月
01
うっかりディスクフルにしてしまいました。これで3回目な気がします。今度こそ監視できるようにしようと思い立ちました。家庭内監視システムは Nagios で組んでいるのですが、Windows に NRPE は無いでしょうから SNMP 経由で監視することを考えます。
Windows では、クライアント Windows でも SNMP エージェントがインストールできます。2000 はどうだったか既に覚えてませんが、XP 以降では大丈夫です。
XP の場合は以下の手順です。
- 「コントロールパネル」→「プログラムの追加と削除」→「Windowsコンポーネントの追加と削除」→「管理とモニタツール」を選んで「詳細」→「簡易ネットワーク管理プロトコル (SNMP)」(「WMI SNMPプロバイダ」は不要) をチェックしてインストール。(要CD)
- SNMP Service サービスのプロパティの「セキュリティ」タブでコミュニティ名を設定する。(デフォルトは例によって “public”)
- 同様に、パケットを受け付けるアドレスを設定する。(デフォルトは全てのホスト)
- エージェントをインストールしただけでは Windows ファイアーウォールに穴が開かないので、がんばって開ける。
Win7 の場合はもうちょっと手順が簡単&セキュアになっています。
- 「コントロールパネル」→「プログラム」→「プログラムと機能」→「Windows の機能の有効化または無効化」→「簡易ネットワーク管理プロトコル (SNMP)」(やっぱり「WMI SNMP プロバイダー」は不要) をチェックしてインストール。(CD不要ぽい)
- エージェントをインストールしただけで Windows ファイアーウォールに適切に穴が開く。(が、後述のとおりセキュリティの問題は無い)
- SNMP Service サービスのプロパティの「セキュリティ」タブでコミュニティ名を設定する。(デフォルトはコミュニティリストが空で、つまり一切のリクエストを拒否することになる)
- 同様に、パケットを受け付けるアドレスを設定する。(デフォルトは 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 に特化したチェックプラグインならこういう問題は無いかもしれませんね。
Windows ホストのディスク使用量を SNMP 経由の Nagios で監視する(その2)
あんま本質的ではない補足なんですが… 設定した閾値を超えても WARNING にならないのでなんでかなーと調べていたら、使っている nagios-plugins-1.4.16-1.el5.rf の中の /usr/lib/nagios/plugins/contrib/che…