我已经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
Location
Shane 关于使用和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.1
Apache 站点。
更新答案 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 的回答解决了这个问题。