找不到apache服务器状态。检查是否启用了mod_status


9

我已经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

Shane的建议关于使用LocationSetHandler在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指令,则应在该文件中执行该指令。

Answers:


5

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

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

正确的观点的确但在我来说,我也不得不做一些mod_rewrite工作(见与答案更新问题)
马克斯

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图。


2

在此站点上从Many Ayromlou找到了解决方案:

问题在于,WordPress中的这些.htaccess规则会接管在apache的配置中激活的服务器信息和服务器状态网址,并返回未找到页面错误。我遇到了许多建议添加规则的站点,例如:

  RewriteCond %{REQUEST_URI} !=/server-status

这对我不起作用。我不确定wordpress的多站点版本(我正在使用)是否引起此问题。效果很好的规则如下:

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

每当将server-info或server-status解析为URL的一部分时,此规则都会停止重写引擎。


1

Apache Web服务器内置的mod_status可从Web浏览器获取服务器状态。使用此模块,我们可以轻松地找出服务器的性能。所有报告均以html格式生成。

步骤1。检查状态模块是否已启用apache2ctl -M或ls / etc / apache2 / sites-enabled

第2步。如果未启用,请通过命令启用它,

sudo a2enmod状态

第三步。配置访问权限

打开/etc/apache2/mods-enabled/status.conf并注释各行,

        #<Location /server-status>
        #    SetHandler server-status
        #    Require local
        #Require ip 192.0.2.0/24
        #</Location>

并添加以下行,

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

在此配置中,我们可以通过编辑,从our_public_ipaddress允许,而不是全部允许来限制对特定IP的服务器状态的访问

保存status.conf文件。

第四步。通过命令重新启动apache,

/etc/init.d/apache2重新启动

第五步 在浏览器中检查服务器状态页面

http:// server-ip / server-status

希望这会有所帮助。


0

我遇到了同样的问题。这是更多的诊断步骤。尝试做

munin-run apache_processes autoconf

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

现在尝试做

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

对我来说,这是403 Forbidden

我还在主Apache错误日志中看到“客户端被服务器配置拒绝:/ var / www / server-status”

你也一样吗?

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


嗨,哈利,如果您遇到相同的问题,请投票赞成该问题,因为这会增加获得答案的可能性。
最多

只要我有足够的声誉就可以投票,那就会做:-)
哈里·伍德

0

如果仅从127.0.0.1开始禁止/ server-status,则可以使用以下内容为127.0.0.1创建VirtualHost配置:

<VirtualHost *:80>
    ServerAdmin superadmin@somemail.com
    ServerName 127.0.0.1
    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www>
      Options +FollowSymLinks
      AllowOverride None
      order allow,deny
      allow from all
    </Directory>
</VirtualHost>

这是更详细的解释

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.