nginxのステータスを取得する方法として、「HttpStubStatusModule」を用いたnginxのステータスの取得をしようとしたときに遭遇したエラー。nginxでのstatus取得はあまり行われないかもしれないが、今後はmrtgでnginxの状況をウォッチ出来たらなと思って、ちょっとだけ設定を変更してみました。
nginx.confのserverブロックに以下の設定を追加してconfigテストをしてみました。
server{ 省略 location /nginx_status { #/nginx_statusでnginxのステータスが見れる stub_status on; # アクセスログは記録しない access_log off; # basic認証を設定 auth_basic "admin only"; auth_basic_user_file /etc/nginx/.htpasswd; } 省略 }
service nginx confitest(nginx -tと同等)コマンドでconfigtestをしてみたら以下のエラーになりました。
[root@vps1 sites-enabled]# service nginx configtest
nginx: [emerg] unknown directive "stub_status"in /etc/nginx/sites-enabled/trippyboy.com.conf:17
nginx: configuration file /etc/nginx/nginx.conf test failed
[root@vps1 sites-enabled]#
どうやら、stub_statusというディレクティブは理解できません!ということ。
Google検索で「stub_status」を検索したところ、nginxのこちらのページがヒットしました。
で、記載がありますとおり、デフォルトでは有効になっていないようです。
This module provides the ability to get some status from nginx.
This module is not compiled by defaultand must be specified using the--with-http_stub_status_module
argument to
configure
when compiling Nginx.
と言うことで、以下の手順を踏みました
- 現在のnginxのconfigure情報を nginx -V で確認
- 現在のnginx(which nginxで確認)をバックアップ(cp -p `which nginx` `which nginx`.back
- オプションに「–with-http_stub_status_module」を含めでconfigure
- make && make install
- service nginx restart
HttpStubStatusModule が使えるようになっているので、問題なく再起動が出来ました。
アクセスすると以下のような出力が確認できます。
Active connections: 2 server accepts handled requests 282 282 716 Reading: 0 Writing: 1 Waiting: 1
上記の意味は以下のとおりです。
- Active connection:現在の接続数
- server accepts handled requests:受け入れた接続数、処理した接続数、リクエスト数
- Reading:リクエストヘッダーを読み込み中
- Writing:応答をクライアントに返答中
- Waiting:KeepAlive接続
以上となります。
いつかnginxの監視をsnmpとmrtgでやって見せるさ!
参考にしたページ:
コメント
こんばんは
>いつかnginxの監視をsnmpとmrtgでやって見せるさ!
そうですね。今できなくてもまたやればいいんですよ。
そうやって自分も突破してきました。
おかげさまでサーバー移転おわりました。
結局今回nginxを使うことはできませんでした。
そのうちまた挑戦してみますよ。
MRTG以外にmuninというサーバーのリソース監視ツールがありますが
これ挑戦してみようかなと思います。
レンタルサーバーに監視を依頼したら、snmpをつかっている。
そういう所は触りたくないのでちょうどいいかなと思います。
くりくりさん
返答が遅れましたっ
サーバー移転お疲れ様でした(・∀・)!! 一安心ですね。
munin。監視ツールっていろいろありますね。聞いたことあるかないか~ってぐらいです。
muninはPerlがあれば動くようですが、私は試したことありません。
最近はPHPでちょこちょこ遊びながら勉強してますヽ(^o^)丿
あっという間に11月です。
muninで/nginx_statusやphp-fpmのステータスを取得するのに結構手間取りました。
curl http://example.com/phpfpm_statusでやると404になる。
原因がなんだろうと考えておりましたら、php-fpmをapacheユーザーでうごかしていました。
nginxに変更したら無事muninをうごかせましたけど、今度はphpmysqlが表示できなくなり
php関連でうごいてるものをnginxに変更して対処しました。
apacheを使う部分がなくなり、微妙な気持ちになってます(笑)
くりくりさん
ほほう。サービス実行ユーザーで直接サービスから情報を持ってきてるんですかね?
あぁ、話についていけないっw
やっぱりやらなきゃ!