Muninを介してNGinx統計を監視したいのですが、Nginxプラグインにデータが表示されません。 munin nginxプラグインの1つだけが機能しているように見える理由を診断することは可能ですか?
サーバーはCentOS5.3で実行されます
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
お役に立てれば。
私の経験では、これらのプラグインは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
重要なのは、muninconfigのURLです。
必要になるだろう
[nginx*]
env.url http://localhost/nginx_status
注意
nginx_status
ない
nginx-status
おそらく役立つ:
cd /etc/munin/plugins
munin-run PLUGINNAME
さらに、デバッグオプションを使用してmunin-runを実行します。
ハードコードされたパスのプラグインファイルを確認し、それらがシステムに対して正しいことを確認します。
grep '/' PLUGINNAME
Nginxプラグインは、特定のモジュールまたは特定の形式のログ出力でコンパイルされているNginxに依存する場合があります。プラグインのドキュメントページはありますか?
インストールlibwww-Perl次に、コマンドmunin-run nginx_status
を実行して統計を確認します。
muni-nodeサービスを再起動します。