Windows7のリソース監視はSNMPよりもWMI

リソース監視と言えばSNMPですが、残念ながらWindowsのSNMPはロクなデータがとれません。

informantというツールをインストールすれば、SNMPでも詳細に情報をとれるようになるようです。が、自社サービスなら喜んでインストールしますが、お客様のシステムというとそうはいきません。

なるべく、既存の環境に手を入れずに情報収集したいですよね。

いや、しっかり説明して、納得してもらえればinformantをインストールでも良いんですよ。でも、万が一それが原因で何かあったら目も当てられないので、なるべく既存環境に手を入れないと考えるのが人情です。

そこで、目をつけたのがWMI(Windows Management Instrumentation)。WMIはWindows独自のSNMPみたいなもののようです。

Windows7にはwmicというコマンドラインツールが付属していて、それでWindowsの情報を収集できます。詳細は以下のウェブサイトを参照してください。

@IT – WMIとwmicコマンドを使ってシステムを管理する(基本編)

ただ、ここで重要なのがLinuxでもwmiにアクセスできるのか、ということですが、それも大丈夫。linux版wmicが配布されていますので、それを使う事でリモートのwindowsから情報を収集する事ができます。

Linux版wmicの入手とビルドは以下のウェブサイトを参照してください。

奈酢美の部屋 別館 – LinuxからWMI経由でWindowsの情報を取得/プログラム実行してみる
harry’s memorandum – WMI client (WMIC) for Linux は超便利

と、ここまでwindowsでsnmpと同等の情報を取得する方法を紹介してきましたが、今回のこの調査はcactiでWindowsの情報を収集したかったからです。

幸い、wmiでwindowsの情報を収集する為のcactiのtemplateは先人が既に作成済みで入手可能な状態でした。

Monitor Windows via WMI from Cacti on Linux

先ほど紹介したlinux版wmicをインストールして、cactiのtemplateを導入すれば、windows7のCPU使用率やDiskI/Oも取得する事ができる!はずだったんですが、そうは問屋がおろしませんでした。

まず、Windows7側のWindows Firewallが通信を阻んでいる場合があるので、それをどうにかします。

そして、cactiのテンプレートも少々手を入れないと私の環境ではうまく情報が取れませんでした。

手を入れた箇所は付属のwmi.phpのコマンドラインを定義しているData Query Methodのコマンドラインの部分です。そこでは-n などの引数が設定してあるのですが、引数が空欄(”)となっている部分があるとうまくいかないっぽいです。
なので、cactiのログを見ながら、-n '' -k '' -v ''などとなっているData Query Methodのその部分を削除して修正したところ、うまく情報を収集する事ができました。詳細は以下を参照してください。

●変更前

/usr/bin/php -q /path_cacti/scripts/wmi.php -h '<host>' -u '<credential>' -w '<class>' -n '<namespace>' -k '<filter>' -v '<filterval>' -c '<columns>'

●変更後

/usr/bin/php -q /path_cacti/scripts/wmi.php -h '<host>' -u '<credential>' -w '<class>' -c '<columns>'

もちろんデータ取得項目によっては-k-vが必要な場合がありますので、ログを確認しながら変更してみてください。

あと、もう一つ、おそらくバグだと思うのですが、DiskI/Oのcdef functionが正常に動きませんでしたので以下を修正しました。

●変更前

a,e,+

●変更後

a,b,+

この変更はGraph management > CDEFsのWMI – DiskIOで行ってください。

皆さん、Windows7でリソース監視するならWMIが便利ですよー。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です