Nginx Munin 插件显示无数据

Nginx Munin 插件显示无数据

我想通过 Munin 监控 NGinx 统计信息,但 Nginx 插件没有显示任何数据。是否可以诊断为什么只有一个 munin nginx 插件似乎在工作?

nginx munin

服务器运行在 CentOS 5.3 上

答案1

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

希望这可以帮助。

答案2

根据我的经验,这些插件很可能由于 nginx 配置错误而无法正常工作。以下是在这种情况下应采取的措施的简要列表:

1.检查nginx安装

Nginx 必须使用HttpStubStatus模块模块。您可以通过运行以下命令(在 sudo 或 root 下)进行检查:

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

如果您看到以下输出,那么您可以继续。

with-http_stub_status_module

否则,您必须重新编译 nginx 并启用所需的模块或从不同的源安装(就我而言,默认的 Debian repo 具有正确的版本)。

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::UserAgentLWP::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

答案3

可能有帮助:

cd /etc/munin/plugins
munin-run PLUGINNAME

另外使用 munin-run 的调试选项。

检查插件文件中是否有任何硬编码路径,并验证它们是否适合您的系统:

grep '/' PLUGINNAME

nginx 插件可能依赖于 Nginx 使用某些模块进行编译或以某种格式输出日志。插件有文档页面吗?

答案4

安装libwww-perl然后运行命令munin-run nginx_status查看统计数据。
重新启动 muni-node 服务。

相关内容