Windowsホストでの、ファイル数監視
ネットや過去ログで発見できなかったので、質問させて下さい。
見落としでしたら恐縮です。
Windowsサーバを関した対象とし、あるフォルダのファイル数を監視対象としたいのですが、アイテムの設定が良くわかりませんでした。
(ある値を上回ったらメールを送信する等)
UNIX系だとsystem.runを使うことは発見できたのですが、Windowsの場合system.runは使用不可のようですし、他のキーを使った場合の応用なども想像がつかず困っております。
どなたか同じような監視を行っており、「このように実装した」という経験の方がいらっしゃいましたら、情報共有お願いできませんでしょうか。
よろしくお願い致します。
tsuzuki - 投稿数: 78
鈴木です。
Windowsでもsystem.runは使用できますよ。
もしかしたら、zabbix_agentd.conf に EnableRemoteCommands=1 が設定されてないために実行できていない可能性があります。
確認してみてください。
あと、もし実行するコマンドがそんなに変わることがないならば、セキュリティー的に UserParameter の機能を使うのがオススメです。
これも任意のコマンドを実行できますが、設定ファイルに書いておく必要があるので、簡単にはリモートからその他のコマンドは実行できず、セキュリティー的に安心感があります。
例えばですが、私の場合は、以前以下のようなスクリプトを実行する監視設定をしたことがあります。
Windows で du コマンドに相当するスクリプトを作って、それを実行するスクリプトです。
-------------------------------------------
UserParameter=vfs.directory.size[*],cscript //Nologo c:\du.js "$1"
-------------------------------------------
tsuzuki - 投稿数: 78
鈴木です。
なんか今自分のWindowsを見てたら、ちょうど手元にディレクトリの下のファイル数を数えるスクリプトがありました。。。
https://gist.github.com/1383159
上記のファイルを C:\files_count.js に置いてコマンドラインで実行すると以下のようになります。
--------------------------------------------
C:\>cscript //Nologo files_count.js c:\
58
--------------------------------------------
これを使って zabbix_agentd.conf に UserParameter を書くと以下のようになります。
-------------------------------------------
UserParameter=vfs.directory.files_count[*],cscript //Nologo c:\files_count.js "$1"
-------------------------------------------
設定ができていると、例えば vfs.directory.files_count[c:\] というキーでCドライブ直下のディレクトリ内のファイル数が返ってきます。
なお、このスクリプトでは、サブディレクトリ内のファイルの数や、ディレクトリの数はカウントせずに、そのディレクトリの中のファイルだけをカウントしてます。
SATA - 投稿数: 8
tsuzuki様
ご連絡有難うございました。
サンプルスクリプトまでご提供頂き恐縮です。
お教え頂いた方法を見よう見まねでやってみました。
が、なかなか上手くいきません。
zabbix_server.logには「vfs.directory.files_count[c:\]] is not supported」と出力され、ホストのzabbix_agentd.logには、「error: Special characters '\'"`*?[]{}~$!&;()<>|#@' are not allowed in the parameters」と出力され、ステータスは「取得不可」のままとなってしまいます。
zabbixを使い出してまだ日が浅いので、どこか設定が抜けているかもしれなく、成長の為に色々調べては試してみるものの解決に至らず、たまらず投稿しました。
もしチェックポイントがございましたら、ご教授頂けると助かります。
tsuzuki - 投稿数: 78
鈴木です。
zabbix_agentd.conf 内の「UnsafeUserParameters=1」を設定せずに、「\」とかを含むコマンドを実行しているために発生していますね。
Windowsで実行するときには、「\」は使いがちなので、「UnsafeUserParameters=1」にしておいた方がいいでしょう。
SATA - 投稿数: 8
tsuzuki様
「UnsafeUserParameters=1」
に設定したら数値を取得できるようになりました。
どうも有難うございました。
先に進みたいと思います。