https://github.com/regilero/check_nginx_status
Nginxのアクティブコネクション/秒・リクエスト/秒・コネクション/秒を監視するNagiosプラグインです。(※ QPS = リクエスト/秒としています)
これらにしきい値をもうけてアラートをすることができます。
例えば、Nginxが100 リクエスト/秒を超えたらアラートメールを飛ばすなどです。
Webサービスを公開する前には負荷テストをして限界値を測ると思いますが、その限界値に達しないように、あらかじめ、しきい値をもうけて監視しておくと安心できます。
以下、設定方法です。
Nginxの設定ファイルのserverディレクティブに location /nginx_status を追記。
参考)HttpStubStatusModule - Nginx Community
http://wiki.nginx.org/HttpStubStatusModule
server { ~~~~~~~~~~~~ ~~~~~~~~~~~~ # status location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
Nginxをリロード。
# /etc/init.d/nginx configtest # /etc/init.d/nginx reload
PerlモジュールのLWP::UserAgentをインストール。
# yum -y install perl-libwww-perl
check_nginx_status.plプラグインをNagiosのプラグインディレクトリに設置。
# curl https://raw.githubusercontent.com/regilero/check_nginx_status/master/check_nginx_status.pl -O /usr/lib64/nagios/plugins/check_nginx_status.pl
check_nginx_status.plの動作チェック。
# perl /usr/lib64/nagios/plugins/check_nginx_status.pl -H 127.0.0.1 -t 1 -w 1000,100,200 -c 2000,200,300 NGINX OK - 0.048 sec. response time, Active: 38 (Writing: 2 Reading: 0 Waiting: 36) ReqPerSec: 27.770 ConnPerSec: 1.008 ReqPerConn: 37.364|Writing=2;;;; Reading=0;;;; Waiting=36;;;; Active=38;;;; ReqPerSec=27.770492;;;; ConnPerSec=1.008197;;;; ReqPerConn=37.364247;;;;
オプションの意味は?
-H 127.0.0.1 ホスト名を指定 -t 1 秒単位のタイムアウト値しきい値を設定 -w 10000,100,200 アクティブコネクション1000、リクエスト/秒100、コネクション/秒200 これらのしきい値を超えたらWARNING -c 20000,200,300 アクティブコネクション2000、リクエスト/秒200、コネクション/秒300 これらのしきい値を超えたらCRITICAL
動作チェックで作成されたテンポラリファイルを削除しておく。
# rm /tmp/127.0.0.1_check_nginx_status*
その他の細かい設定については、ヘルプを確認してください。
# perl /usr/lib64/nagios/plugins/check_nginx_status.pl -h
あとは、Nagios/Nrpeに上記のような設定を組み込んでおけばOKです。
Enjoy!