Nagiosのcheck_nrpe + check_procsでリモートプロセス監視

Nagiosはあまり使いたくないんだけど、他にいい選択肢があまりないので、2014年になっても仕方なく使用している。

ログ監視に関しては、以前はてなブログの方に書いたけど、今回はプロセス監視。さくっと終わる予定。

リモートのプロセス監視をしたい

今回やりたいことは、リモートサーバーの特定のプロセス(例えばhttpd)が起動しているかを確認すること。

check_nrpe 及び check_procs を使う。check_nrpe に関しては、はてなの方に書いた第3回の方に少し説明が書いてあるので、そちらも参照していただければ幸い。

check_procsの説明

システム全体のプロセス数を監視したい訳ではない

リモートサーバーのデフォルトのnrpe.cfgを見ると、check_procs関連で以下の記述があった。

command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
#command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

ただ、check_procsのドキュメントを見ると、-wと-cはそれぞれwarningとcriticalとなるプロセス数で、-sはプロセスのステータスを指定するオプション。つまり、上のやつは、-sで指定されたステータスのプロセスのプロセス数が一定数になったらアラートが飛ぶというもので、今回やりたいこととは異なる。

プロセスを指定するには?

-Cで指定する。例えば、httpdのプロセス数を監視したい場合は以下の通り。

/usr/lib64/nagios/plugins/check_procs -w プロセス数 -c プロセス数 -C httpd

プロセス数の指定の仕方

-wや-cで指定するプロセス数は min:max という形式。数値だけの場合は、maxが指定されたものとみなす。以下に例を挙げる。

  • 1:5 → プロセス数が1〜5ならOK。それ以外は警告。
  • 5 → プロセス数が0〜5ならOK。6以上は警告。
  • 1: → プロセス数が1以上ならOK。0なら警告

設定

以上で、設定内容は大体分かるかと思う。

まずはリモート側のnrpe.cfgで以下のように設定。

command[check_specific_proc]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C $ARG3$

ホスト側では以下のように設定。

define service {
  service_description   check_host1_httpd
  host_name             host1
  check_command         check_nrpe!60!check_specific_proc!1: 1: httpd
  use                   generic-service
  contact_groups        admin1
}

httpdのプロセスが0だった場合に警告が飛ぶ。

ちなみに、check_procsに実際に渡される引数は”1: 1: httpd”の部分。スペースで区切られた値が、ARG1, ARG2, … に割り当てられる。

まとめ

check_procs で特定のプロセスを監視する場合には、-Cオプションを使用する。check_nrpe経由でリモートのcheck_xxxxに引数を渡す場合は、スペース区切りにする。

例によって、分かってしまえば簡単だけど、この設定に辿り着くまでに意外に時間がかかってしまった。

コメントを残す

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