LinuxからWMI経由でWindowsの情報を取得/プログラム実行してみる

Linuxから、WMI経由でWindowsの情報を取得できるツールがあったので試してみた。

これと、ZABBIXとうまく連携できれば、(SNMP経由でない)本当のエージェントレスができそう。

インストール方法は以下の通り

ここで、以下のメッセージが出る場合は、
/bin/sh: line 2: ./configure: そのようなファイルやディレクトリはありません
yumで autoconfをインストールして、再度makeします。

makeには結構時間かかります。

make install前に動作確認します。

 

試しに、情報を取得してみます。

Windowsの情報を取得

特定のプロセスの情報を取得(EpgTimerSrv.exe)

特定のプロセスの情報を取得(値の行のみ)

動作確認したら、インストールします。

RPMもあるっぽい(けど、まだ試していません)
http://www.harumaki.net/2012/05/09/centos%E3%81%ABwmi%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%82%8B/

ちなみに、ファイルの情報を取得する場合は以下の様にします。

なぜか、\ -> \\\に変換しないと、エラーになります(\\ではダメ)。
それと、ファイルパスに2バイト文字を含むような場合も失敗しますが、こちらはまだ未解決。
フォルダ単位で各ファイル全部をWMIで取得して後からGrepで文字列抽出するのならいけましたが、とりあえずこれで。

 

なお、接続先がWindows Vista,2008以降だとセキュリティーがきびしくなっているので、
UACを無効にするか、ローカルのAdministratorもしくは、管理者権限を持ったドメインユーザで接続する必要があるようです。

UACはGUIで設定するか、レジストリを変更して再起動します。

UACを無効にできるのであれば一番早いですが、そのままだと管理者権限を持ったローカルユーザで接続しても接続を拒否られる場合は、以下のレジストリを作成・変更してみてください。
再起動は不要らしいです。

 

その他接続できない場合は次の点を確認してみてください。
(Administratorsグループのユーザであれば、Firewall以外はデフォルトでは大丈夫なはずですが・・・)

・Firewallの設定

WindowsFireWallが有効の場合は以下の項目を有効にします。
[標準プロファイル]or[ドメインプロファイル]
・[Windowsファイアウォール:リモート管理の例外を許可する](2003)
・[Windowsファイアウォール:着信リモート管理の例外を許可する](2008以降)

・サービスの起動確認
Windows Management Instrumentationサービス(サービス名:WinMgmt)が
起動しているかの確認

・DCOMのアクセス権限(接続元)

dcomcnfg.exeを起動し、
コンポーネントサービス->コンピュータ->マイコンピュータのプロパティーを開き、
・[既定のプロパティ]タブを選択して,[このコンピュータ上で分散COMを有効にする]が
チェックされているか確認する。

 

・DCOMのアクセス権限(接続先)

dcomcnfg.exeを起動し、
コンポーネントサービス->コンピュータ->マイコンピュータのプロパティーを開き、
・[既定のプロパティ]タブを選択して,[このコンピュータ上で分散COMを有効にする]が
チェックされているか確認する。
・[COMセキュリティ]タブを選択して、[制限の編集]から接続ユーザで
アクセス許可されているかを確認する。

 

・WMIの名前空間のセキュリティーの確認

wmimgmt.mscを起動し、WMIコントロールでプロパティーを表示し、
セキュリティタブのRoot->CIMV2のセキュリティーを確認します。
接続ユーザでアクセス許可されていることを確認します。
どうしてもうまくいかない場合でUACのセキュリティ機能が有効の場合は、
ユーザー自身に対して設定するか、
UsersグループとAdministratorsグループ以外のユーザーが属するグループに対して
設定してみてください。

 

 

 

なお、一緒に、winexeというツールもインストールされます。
これは、Linux側のコマンドラインからWindows上でプログラムを実行するものです。
基本的には、以下のコマンド実行できます。

ただ、実行時以下のようにエラーが出ることがあります。

その場合は、対象のWindows側で、以下のコマンドを実行しておけばよいようです。(参考:http://community.zenoss.org/people/chitambira/blog)

ちなみにこれ、バグだそうで、
winexe/service.c ファイルの以下の部分を修正して、
再度make&make installすれば治るようです。

実際やってみたら、ちゃんと自動でWindows側にサービスが登録され、リモート実行できるようになりました。

また、以下のようにメッセージが出た場合は、

いったん、次のコマンドを入れると解決できる場合もあるそうです

なお、上記winexeはバージョン0.80ですが、、最新版(1.00)が出ているんので、必要があればこちらを
http://sourceforge.net/projects/winexe/files/

インストール方法はこちらを参考に

winexe(1.00)のインストール

Zabbix で Nexentastorを監視するためのメモ

ESXi用データストアとして家で使っている
ストレージソフトNexentastorの監視のためのメモ

Nexentastor側でSNMPを有効にした状態で
以下のテンプレートを割り当てることで監視しています

Template ICMP Ping
Template SNMP OS Linux

これだけで、以下の項目は自動認識します。

  • Disk Partirions([各マウント領域毎])
    • Allocation units for Storage (例:512B)
    • Description of Storage (例:/)
    • Total disk space (例:11.13GB)
    • Total disk space in units (例:23.35 Munits)
    • Used disk space (例:6.39GB)
    • Used disk space in units (例:13.4 Munits)
  • General(通常のSNMP情報)
    • Device contact details (例:Root@example.com)
    • Device description (例:NexentaOS)
    • Device location (例:Huge Data Center)
    • Device name (例:NS001)
    • Device uptime (例:23日, 05:24:42)
  • ICMP(Ping状況)
    • ICMP loss (例:0%)
    • ICMP ping (例:UP(1))
    • ICMP responce time (例:6.5ms)
  • ネットワーク使用状況(サマリ)
    • Number of network interfaces (例:3)
  • ネットワーク使用状況(ネットワークインターフェース毎)
    • Admin status of interface (例:up(1))
    • Alias of interface (例:)
    • Description of interface (例:e1000g0)
    • Inbound errors on interface (例:0)
    • Incoming traffic on interface (例:23.7 Mbps)
    • Operational status of interface (例:up(1))
    • Outbound errors on insterface (例:0)
    • Outgoing traffice on interface (例:14.65Mbps)
  • Processeors(CPUコア単位)
    • Utilization of processor (例:19%)

そのほか、SNMP Trapの設定もしていれば、SNMP Trap情報も取得できます(ZFSのRAID異常メッセージも通知されます)。

 

あと、ZFSのステータスまで、取得したければ、
Zabbix Agentを導入して、テンプレートを追加してやればできそう・・・・

For Nexenta CE 3.1.3.5 and zabbix agent 2.0.4 tested right now (11 Jan 2013):
https://www.zabbix.com/wiki/howto/install/solaris/opensolaris

Zabbix ZFS discovery monitoring
https://www.zabbix.com/forum/showthread.php?p=141209

こちらはそのうち試す予定です。

Windows7で長時間稼働させていると、ファイル共有の動作が不安定になる場合の対策メモ

以下のシステムイベントログが出てしまった時の対策

うちの環境だと、1週間程度を過ぎるとファイル共有が不安定になってきます。
EDCBが全力稼働のせいかもしれんけど。

srv エラー 2017 非ページ プール割り当ての制限に達したため、サーバーはシステムの非ページ プールから割り当てることができませんでした。

レジストリエディタ(regedit)で

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\Parameters
に移動し、以下を設定する。

但し、項目が存在しない場合があるので、その場合は、DWORD値(32ビット)を作成の上で設定する。

  • Size:3(10進数)にする。
    1:ローカルアプリケーション用にサーバを最適化、2:ローカルとリモートに配分、
    3:ネットワークの処理用に最適化。
  • IRPStackSize:50(10進数)にする。
    デフォルトは、10進数の15。お奨めは10進数の20もしくは50。
    33~38はエラー可能性ありとのこと。I/O 要求パケット (IRP) のスタック ロケーション数。
  • MaxMpxCt:255(10進数)とする。
    10~255まで。サーバーをサポートしている要求の最大数。
  • MaxWorkItems:1024(10進数)とする。
    少なくとも MaxMpxCtの値の4倍にする。デフォルトで64 最大で1,024。

Size,IRPStackSize,MaxMpxCt,MaxWorkItemsの4つを設定

このSize,IRPStackSize,MaxMpxCt,MaxWorkItemsの4つを設定 以上の設定をし、
サーバーを再起動して現在検証中。