完全にエージェントレスで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に指定してあるので
適宜、調整する。
それから、スクリプトに登録する。
後は、アイテムとして追加すれば...