未找到 apache 服务器状态。请检查 mod_status 是否已启用

未找到 apache 服务器状态。请检查 mod_status 是否已启用

我已经apache_在 munin 节点上启用了插件:
ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/

重新启动节点后,service munin-node restart我收到以下错误:

$ munin-node-configure --suggest 2>/dev/null | grep "apache\|Plugin\|------"
Plugin                     | Used | Suggestions                            
------                     | ---- | -----------                            
apache_accesses            | yes  | no [apache server-status not found. check if mod_status is enabled]
apache_processes           | yes  | no [apache server-status not found. check if mod_status is enabled]
apache_volume              | yes  | no [apache server-status not found. check if mod_status is enabled]

但是mod_status已经启用:

$ a2enmod status
Module status already enabled

重新启动 apache 也没有什么区别。

如果我尝试手动运行插件,我会得到以下结果(我读到得到 U 是个坏消息,所以至少这是一致的)。

$ munin-run apache_accesses --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/apache_accesses'
accesses80.value U

$ munin-run apache_processes --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/apache_processes'
busy80.value U
idle80.value U
free80.value U

$ munin-run apache_volume --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/apache_volume'
volume80.value U

有人知道为什么我仍然收到该server-status not found消息以及如何摆脱它吗?

更新答案 1

LocationShane 关于使用和SetHandler在 Apache 站点中设置请求处理程序的建议是正确的。有关更多信息,mod_status请参阅这一页

munin通过查看/var/log/apache2/access.log获取这些信息的位置,我可以验证是否有效地发出了适当的请求:

127.0.0.1 - - [10/Nov/2011:07:24:15 +0000] "GET /server-status?auto HTTP/1.1" 404 7774 "-" "libwww-perl/5.834

在我的情况下,设置Location是不够的,因为我正在运行一个Drupal网站,并且.htaccess与的组合mod_rewrite正在重写请求。为了解决这个问题,我不得不将以下行添加到我的.htaccess

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteCond %{REQUEST_URI} !=/server-status  # <= added this line
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

请注意,这并不代表安全问题,因为访问/server-status仅限于127.0.0.1Apache 站点。

更新答案 2

看来,将 添加Location到 apache 站点毕竟是没有必要的,因为这已经在 中定义/etc/apache2/mods-enabled/status.conf。顺便说一句,如果您想添加指令ExtendedStatus On,那么您应该在该文件中添加它。

答案1

似乎它正在尝试实际向状态模块发出请求。 您是否对状态位置进行了适当的配置VirtualHost? 类似这样的配置:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

答案2

我从 Many Ayromlou 找到了解决方案在这个网站上

问题是,wordpress 中的这些 .htaccess 规则接管了 apache 配置中激活的 server-info 和 server-status url,并返回页面未找到错误。我遇到过许多建议添加类似规则的网站:

    RewriteCond %{REQUEST_URI} !=/server-status

这对我来说不起作用。我不确定多站点版本的 wordpress(我正在使用)是否导致了这种情况。有效的规则如下:

    RewriteRule ^(server-info|server-status) - [L]

每当服务器信息或服务器状态被解析为 URL 的一部分时,此规则都会停止重写引擎。

答案3

我发现我可以跑

$ wget http://localhost/server-status?auto

但不是

$ wget http://127.0.0.1/server-status?auto

第一个是访问默认服务器,第二个是访问虚拟服务器。

所以我明确地添加了一个 apache 部分到/etc/munin/plugin-conf.d/munin-node

[apache_*]
env.url   http://localhost:%d/server-status?auto
env.ports 80

并得到了我的 munin apache 图表。

答案4

我遇到了同样的问题。以下是更多诊断步骤。尝试执行

munin-run apache_processes autoconf

这是查看相同错误的更直接方式”否(端口 80 上没有 Apache 服务器状态)

现在尝试做

wget http://127.0.0.1/server-status?auto

对我来说这就是给予403 禁止

我也看到了‘服务器配置拒绝客户端:/var/www/server-status’在我的主 Apache 错误日志中

你也得到同样的结果吗?

对我来说,事实上 Shane Madden 的回答解决了这个问题。

相关内容