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に引数を渡す場合は、スペース区切りにする。
例によって、分かってしまえば簡単だけど、この設定に辿り着くまでに意外に時間がかかってしまった。