web-dev-qa-db-ja.com

Nginx Muninプラグインにデータが表示されない

Muninを介してNGinx統計を監視したいのですが、Nginxプラグインにデータが表示されません。 munin nginxプラグインの1つだけが機能しているように見える理由を診断することは可能ですか?

nginx munin

サーバーはCentOS5.3で実行されます

9
Miko

Nginxプラグインは、次のURLを使用してステータス情報を取得します。

http://127.0.0.1/nginx_status

通常、nginxにはステータスデータを表示するように構成されたこのURLがありません。

プラグインのドキュメントから、特定のURLでステータスデータを表示するようにnginxを構成する必要があることがわかりました。

サイトの構成に次の行を追加して、nginxステータスを有効にする必要があります。

 server {
       listen 127.0.0.1;
       server_name localhost;
       location /nginx_status {
               stub_status on;
               access_log   off;
               allow 127.0.0.1;
               deny all;
       }
 }

この構成を追加した後、サーバーを再起動することを忘れないでください。また、stusURLがステータスデータを返すことを確認してください。

各プラグインの完全なドキュメントについては、次を実行できます。

munindoc nginx_request

お役に立てれば。

14
Tom Feiner

私の経験では、これらのプラグインはnginxの設定ミスが原因で機能していない可能性があります。この場合の対処法の候補リストを次に示します。

1.nginxのインストールを確認します

Nginxは HttpStubStatusModule モジュールでコンパイルする必要があります。次のコマンド(Sudoまたはrootの下)を実行することで確認できます。

nginx -V 2>&1 | grep -o with-http_stub_status_module

次の出力が表示された場合は、先に進んでください。

with-http_stub_status_module

それ以外の場合は、必要なモジュールを有効にしてnginxを再コンパイルするか、別のソースからインストールする必要があります(私の場合、デフォルトのDebianリポジトリのバージョンが適切でした)。

2.nginx構成を確認します

必須の構成 を配置して有効にしたと仮定します。それが機能しているかどうかを確認するには、サーバーにsshして実行します

wget http://localhost/nginx_status

ここでエラーが発生しない場合、問題はプラグインの構成です。サーバーがここでエラーを返した場合は、構成を変更してデバッグできます。

location /nginx_status {
    stub_status on;
    access_log   off;
    error_log    /var/log/nginx/status.error.log;
    allow 127.0.0.1;
    deny all;
}

その後、/var/log/nginx/status.error.logファイルで、サーバーがエラーを返した正確な理由を確認できます。

[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", Host: "localhost"

私の場合(ログからわかるように)、問題はclient: ::1でしたが、構成では127.0.0.1からのアクセスしか許可されていませんでした。

この問題を解決するには、 cepharumの提案 に従うか、仮想ホストの構成を変更します。

server {
        listen 80;
        listen [::]:80;
        server_name localhost;

        location /nginx_status {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }
}

(前者も機能しなかったため、listen: 127.0.0.1をポート80(ipv4 + ipv6)に置き換えたことにも注意してください)

3.システム構成と依存関係を確認します

プラグイン自体が機能しているかどうかを確認するには、

munin-run nginx_status

(プラグインを「オン」にする必要があることに注意してください-シンボリックリンクは/etc/munin/pluginsに存在する必要があります 手動 を読んでください)

LWPライブラリでエラーが発生した場合(例:LWP::UserAgentまたはLWP::VERSION)、システムにnginx_statusプラグインに必要なパッケージがありません。

Debian/Ubuntuで実行します

apt install libwww-Perl

CentOSの場合

yum install Perl-libwww-Perl

その後、munin-runを使用してプラグインを再度テストします。予想される出力(数値は異なります):

total.value 1
reading.value 0
writing.value 1
waiting.value 0
4
badew

重要なのは、muninconfigのURLです。

必要になるだろう

[nginx*]
env.url http://localhost/nginx_status

注意

nginx_status

ない

nginx-status
2
Tien Do Xuan

おそらく役立つ:

cd /etc/munin/plugins
munin-run PLUGINNAME

さらに、デバッグオプションを使用してmunin-runを実行します。

ハードコードされたパスのプラグインファイルを確認し、それらがシステムに対して正しいことを確認します。

grep '/' PLUGINNAME

Nginxプラグインは、特定のモジュールまたは特定の形式のログ出力でコンパイルされているNginxに依存する場合があります。プラグインのドキュメントページはありますか?

2
CarpeNoctem

インストールlibwww-Perl次に、コマンドmunin-run nginx_statusを実行して統計を確認します。
muni-nodeサービスを再起動します。

0