2011年6月6日月曜日

Nagiosの"check_procs"でコマンドとその引数をチェック

スズキです。

Javaアプリケーションのプロセスをチェックしたい場合、
すべてコマンド名は"java"になってしまうので、その引数まで見て、
チェックしたいことは多々あると思います。

また、Javaのパスもいろいろとシンボリックリンクが張られている場合が多く、
いろいろなパスのJavaで実行されている可能性もあると思います。

まず、コマンドにしぼったチェックは下記のように、
"-C"オプションでコマンド名を指定します。

# /tmp/test.sh &
# /tmp/sub/test.sh &
# /usr/lib/nagios/plugins/check_procs -C test.sh
PROCS OK: 2 processes with command name 'test.sh'

注意点として"/tmp/test.sh"、"/tmp/sub/test.sh"のような
違うパスのコマンドも同一ともなされてしまいます。

また、下記のようにフルパスで指定すると、"/tmp/test.sh"すら引っかからないので、
パスごとにチェックをわけたい場合には利用できません。(あくまでコマンド名を指定です)

# /tmp/test.sh &
# /tmp/sub/test.sh &
# /usr/lib/nagios/plugins/check_procs -C /tmp/test.sh
PROCS OK: 0 processes with command name '/tmp/test.sh'

次に引数のチェックですが、"-a"と"--ereg-argument-array"で可能です。

"-a"は部分一致なので、下記のように"test"はもちろんのこと、"t"や"st"でも引っかかります。

# /tmp/sub/test.sh test &
# /usr/lib/nagios/plugins/check_procs -C test.sh -a test
PROCS OK: 1 process with command name 'test.sh', args 'test'

さらに"--ereg-argument-array"の場合は、次のように正規表現も利用できます。

# /tmp/sub/test.sh tttt &
# /usr/lib/nagios/plugins/check_procs -C test.sh --ereg-argument-array=t*
PROCS OK: 1 process with command name 'test.sh', regex args 't*'

"check_procs"は、いろいろと奥が深そうだ...
--------
http://www.suz-lab.com

0 コメント: