【Zabbix】Windows のプロセス監視で「コマンドライン」まで指定したい

背景

Zabbix のアイテムとしてプロセス数を取得する「proc.num[xxxx]」があります。

こちらは純粋に「上がっているプロセス数」を返してくれます。

Zabbix のマニュアルによると、オプションがいろいろあるのですが、Windows だと制限がありまして、コマンドラインを指定して値を取得することが出来ないんです。

URL↓

https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtypes/zabbix_agent

でも、同じプロセス名(例えば java.exe)でも、コマンドラインまで確認して監視したい、なんて要望はあります。

こちらの設定、非常に簡単で設定できるので、こちらに記載します。

設定内容(画面ショットは 2.0 ですが、3.0 系でも大丈夫です)

1.最初にアイテムを作成します

対象のホストにて、[アイテム]を選択し、右上にある「アイテムの作成」ボタンを押します。

以下の画面のように作って頂ければと。

名前:Process_java.exe-1(任意です)
タイプ:Zabbixエージェント
キー:java1_procnumcheck(任意です。が、ホスト内でユニークになるように設定する必要があります)

2.ホスト側の[zabbix_agent.conf]を修正します

Zabbix Agent をインストールしたフォルダにある zabbix_agent.conf をエディター(Windows 標準なら、ワードパッドが良いです)で開きます。

セクション[UserParameter]部分に、以下のように追記します。

・UserParameter=java1_procnumcheck,wmic process where “name = \”java.exe\”” get commandline | find /v “CommandLine” | find /c “特定する文字列”

### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# Note that shell command must not return empty string or EOL only.
# Example: UserParameter=system.test,echo 1
UserParameter=java1_procnumcheck,wmic process where "name = \"java.exe\"" get commandline | find /v "CommandLine" | find /c "特定する文字列"

何を記載しているかと言うと、文法に則ってます。

文法:UserParameter=<key>,<command>

<key>には、項番1 で作成した「キー」を記載します。これで、対応した「キー」に対してアイテムをホスト側からサーバーへ送ることが出来ます。

<command>には、取得したい「値」を 1 行コマンドラインで取得できるように記載します。この場合は、wmic コマンドを使って、[java.exe]のコマンドラインを取得して、このプロセスでしか使っていない「文字列」を検索して、行数をカウントしてます。

Windows に関しては、値を取得するコマンドを 1 行で記載できれば、以外と簡単に取得できます。コマンドはいろんな方がブログ等で公開してくれているので、まずググってみましょう。

3.仕上げ

項番2 のように[zabbix_agent.conf]を記載できたら、Zabbix Agent のサービスを再起動しましょう。でないと、設定が反映されないです(よく忘れます)。

希望通りの「値」が取得できていることを確認できれば、あとはこのアイテムに対してトリガーをセットすれば、OK です。

コメントを残す

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