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


9

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

nginx munin

サーバーはCentOS 5.3で実行されます

回答:


14

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;
       }
 }

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

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

munindoc nginx_request

お役に立てれば。


1
補足:ここに記載されているようにnginxを有効にしてUbuntu 16.04を実行しても、私の場合は不十分でした。さらに、nginxプラグインapt install libwww-perl timeに関する問題をログに記録するために、muninノードを使用する必要がありましたUse of uninitialized value $LWP::VERSION
トーマスアーバン

もう1つの注意事項:IPv6は現在サーバーでサポートされているため、使用http://localhost/するnginx_ *プラグインのデフォルトURLはIPv6を優先する可能性があり、IPv4ローカルホストのみを許可するnginx構成と一致しません。でURLを固定すること/etc/munin/plugin-conf.d/munin-nodehttp://127.0.0.1/nginx_status最終的に作られたプラグインの作業。
トーマスアーバン

4

私の経験では、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

/var/log/munin-update.log(servername / 127.0.0.1:4949のサービスnginx_statusがラベル待機のデータを返さなかった)のエラーメッセージに基づいて、何年も検索してlibwww-perl欠落していたことを確認できたはずです。この広範な回答に感謝します。
BurninLeo

2

おそらく役立つ:

cd /etc/munin/plugins
munin-run PLUGINNAME

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

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

grep '/' PLUGINNAME

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


2

重要なのは、munin構成のURLです。

必要になるだろう

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

注意

nginx_status

ない

nginx-status

0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.