回答:
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
お役に立てれば。
http://localhost/
するnginx_ *プラグインのデフォルトURLはIPv6を優先する可能性があり、IPv4ローカルホストのみを許可するnginx構成と一致しません。でURLを固定すること/etc/munin/plugin-conf.d/munin-node
にhttp://127.0.0.1/nginx_status
最終的に作られたプラグインの作業。
私の経験では、nginxの設定ミスにより、これらのプラグインが機能していない可能性があります。この場合の対処法の候補リストを次に示します。
NginxはHttpStubStatusModuleモジュールでコンパイルする必要があります。次のコマンドを(sudoまたはrootで)実行することで確認できます。
nginx -V 2>&1 | grep -o with-http_stub_status_module
次の出力が表示された場合は、先に進んでください。
with-http_stub_status_module
そうでない場合は、必要なモジュールを有効にしてnginxを再コンパイルするか、別のソースからインストールする必要があります(私の場合、デフォルトのDebianリポジトリには適切なバージョンがありました)。
必要な構成を配置して有効にしたと想定しています。それが機能しているかどうかを確認する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)にも置き換えたことに注意してください)
プラグイン自体が機能しているかどうかを確認するには、次を実行します。
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
欠落していたことを確認できたはずです。この広範な回答に感謝します。
おそらく役立つ:
cd /etc/munin/plugins
munin-run PLUGINNAME
さらに、デバッグオプションを使用してmunin-runを実行します。
ハードコードされたパスのプラグインファイルを確認し、それらがシステムに対して正しいことを確認します。
grep '/' PLUGINNAME
nginxプラグインは、特定のモジュールでコンパイルされているNginxまたは特定の形式のログ出力に依存している場合があります。プラグインのドキュメントページはありますか?
libwww-perlをインストールし、コマンドmunin-run nginx_status
を実行して統計を確認します。
muni-nodeサービスを再起動します。
apt install libwww-perl time
に関する問題をログに記録するために、muninノードを使用する必要がありましたUse of uninitialized value $LWP::VERSION
。