[nginx] HttpStubStatusModule / unknown directive “stub_status” を解消するの巻

スポンサーリンク

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.

と言うことで、以下の手順を踏みました

  1. 現在のnginxのconfigure情報を nginx -V で確認
  2. 現在のnginx(which nginxで確認)をバックアップ(cp -p `which nginx` `which nginx`.back
  3. オプションに「–with-http_stub_status_module」を含めでconfigure
  4. make && make install
  5. 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] http://wiki.nginx.org/HttpStubStatusModule

コメント

  1. くりくり より:

    こんばんは
    >いつかnginxの監視をsnmpとmrtgでやって見せるさ!

    そうですね。今できなくてもまたやればいいんですよ。
    そうやって自分も突破してきました。

    おかげさまでサーバー移転おわりました。
    結局今回nginxを使うことはできませんでした。

    そのうちまた挑戦してみますよ。

  2. くりくり より:

    MRTG以外にmuninというサーバーのリソース監視ツールがありますが
    これ挑戦してみようかなと思います。

    レンタルサーバーに監視を依頼したら、snmpをつかっている。
    そういう所は触りたくないのでちょうどいいかなと思います。

  3. trippyboy より:

    くりくりさん

    返答が遅れましたっ

    サーバー移転お疲れ様でした(・∀・)!! 一安心ですね。

    munin。監視ツールっていろいろありますね。聞いたことあるかないか~ってぐらいです。
    muninはPerlがあれば動くようですが、私は試したことありません。

    最近はPHPでちょこちょこ遊びながら勉強してますヽ(^o^)丿
    あっという間に11月です。

  4. くりくり より:

    muninで/nginx_statusやphp-fpmのステータスを取得するのに結構手間取りました。
    curl http://example.com/phpfpm_statusでやると404になる。

    原因がなんだろうと考えておりましたら、php-fpmをapacheユーザーでうごかしていました。
    nginxに変更したら無事muninをうごかせましたけど、今度はphpmysqlが表示できなくなり
    php関連でうごいてるものをnginxに変更して対処しました。

    apacheを使う部分がなくなり、微妙な気持ちになってます(笑)

  5. trippyboy より:

    くりくりさん

    ほほう。サービス実行ユーザーで直接サービスから情報を持ってきてるんですかね?
    あぁ、話についていけないっw
    やっぱりやらなきゃ!

タイトルとURLをコピーしました