忘れがちなことを、つらつらと...

俺的備忘録を公開してみるテスト

完全にエージェントレスでWindowsサーバーを監視してみるテスト

zabbixのエージェント入れればいいやん!

と言う結論が出そうなアレではあるけれども、Windowsサーバーを弄れない場合があるかもしれないし、ないかもしれない。

と言うことで、試してみた。

zabbixはCentOS上で動かしていて、Windowsサーバーを監視したいというシチュエーションで。

Windows側でSNMPサービス動かすという選択肢もあるが、敢えて、違うアプローチとして、CentOSにwmicをインストールする。これでWMIを使ってリモートから情報を収集しようと。 サンプルとして、サーバーのメモリー使用率をもとめてみる。

# wmic -U hoge/administrator%password //HOGESVR "select FreePhysicalMemory,TotalVisibleMemorySize from Win32_OperatingSystem"

hogeドメインのHOGESVRに問い合わせしてます。ドメインのアカウントはadministratorでパスワードがpasswordの場合、上記のような感じになる。

CLASS: Win32_OperatingSystem
FreePhysicalMemory|TotalVisibleMemorySize
1024|4096

という結果が返ってきた。

(TotalVisibleMemorySize - FreePhysicalMemory) * 100 / TotalVisibleMemorySize

で、使用率が求まるはず。

これを、返してくれるようなスクリプトを、まずは用意する。

ちょっとphpで書いてみたけど、中身は手抜きなので突っ込まない!

こんな感じでOK。

#!/usr/bin/php -q
<?php
$opt = getopt("h:d:u:p:");
$wmic = 'wmic -U '.$opt["d"].'/'.$opt["u"].'%'.$opt["p"].' //'.$opt["h"].' "select FreePhysicalMemory,TotalVisibleMemorySize from Win32_OperatingSystem"';
exec($wmic,$res,$sts);
for ($i=2; $i<count($res); $i++) {
  $vals = explode('|',$res[$i]);
  $out = (($vals[1]-$vals[0])*100/$vals[1]);
}
echo $out;

これを、/usr/lib/zabbix/externalscripts/に実行属性つけて入れておく。

ちなみにこのディレクトリは/etc/zabbix/zabbix_server.confのExternalScriptsに指定してあるので

適宜、調整する。

それから、スクリプトに登録する。

zabbix_scripts

後は、アイテムとして追加すれば...

zabbix_graph