Answers:
Nginx插件依赖以下URL来获取状态信息:
http://127.0.0.1/nginx_status
通常,nginx没有将此URL配置为显示状态数据。
从插件的文档中,我看到需要将nginx配置为以特殊的URL显示状态数据。
您需要通过将以下行添加到站点的配置中来启用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/
IPv6,因此使用的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存储库具有正确的版本)。
我假设您已经放置并启用了所需的config。要查看其是否正常运行,可以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
(服务器名/127.0.0.1:4949上的服务nginx_status未返回任何用于标签等待的数据)中的错误消息,我可能已经搜索了多年才能发现libwww-perl
丢失的消息。非常感谢您的广泛回答。
可能有帮助:
cd /etc/munin/plugins
munin-run PLUGINNAME
另外,使用debug选项进行munin运行。
检查插件文件中是否有任何硬编码路径,并验证它们是否适合您的系统:
grep '/' PLUGINNAME
Nginx插件可能依赖于使用某些模块编译的Nginx或以某种格式的日志输出。插件有任何文档页面吗?
安装libwww-perl,然后运行命令munin-run nginx_status
以查看统计信息。
重新启动多节点服务。
apt install libwww-perl time
在munin节点上查看其Use of uninitialized value $LWP::VERSION
有关nginx插件问题的日志。