apache server-status not found. check if mod_status is enabled
I've enabled the apache_
plugins on a munin node:ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/
After restarting the node with service munin-node restart
here are the errors I'm getting:
$ 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]
However mod_status
is already enabled:
$ a2enmod status
Module status already enabled
And restarting apache doesn't make a difference.
If I try to run the plugins manually here is what I get (I read that getting a U is bad news so at least that is consistent).
$ 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
Does anybody know why I'm still getting the server-status not found
message and how I can get rid of it?
Updated answer 1
Shane's suggestion was correct about setting a request handler using Location
and SetHandler
in the apache site. For more information on mod_status
please refer to this page
I could verify that munin
was effectively making the appropriate requests by looking at /var/log/apache2/access.log
where I was getting this:
127.0.0.1 - - [10/Nov/2011:07:24:15 +0000] "GET /server-status?auto HTTP/1.1" 404 7774 "-" "libwww-perl/5.834
In my case setting the Location
wasn't enough as I am running a Drupal
site and the .htaccess
combined with mod_rewrite
were rewriting the requests. To fix it, I had to add the following line to my .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]
Please note that this doesn't represent a security problem since access to /server-status
is restricted to 127.0.0.1
in the apache site.
Updated answer 2
It appears that adding the Location
to the apache site wasn't needed after all since this is already defined in /etc/apache2/mods-enabled/status.conf
. Btw, should you want to add the ExtendedStatus On
directive, that's in that file that you should do it.
Solution 1:
Seems like it's trying to actually make requests to the status module. Do you have a proper config for the status location in your VirtualHost
? Something like this:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
Solution 2:
I found out I could run
$ wget http://localhost/server-status?auto
but not
$ wget http://127.0.0.1/server-status?auto
The first one is hitting the default server, the second a virtual server.
So I explicitly added an apache section to /etc/munin/plugin-conf.d/munin-node
[apache_*]
env.url http://localhost:%d/server-status?auto
env.ports 80
and got my munin apache graphs.
Solution 3:
I found solution from Many Ayromlou on this site:
The problem is that these .htaccess rules in wordpress take over server-info and server-status urls activated in apache’s config and return a page not found error. I came across numerous sites that suggested adding a rule like:
RewriteCond %{REQUEST_URI} !=/server-status
This didn't work for me. I'm not sure if the multisite version of wordpress (which I'm using) is causing this. The rule that worked beautifully is the following:
RewriteRule ^(server-info|server-status) - [L]
This rule stops the rewrite engine whenever server-info or server-status is parsed as part of the URL.
Solution 4:
mod_status built into Apache web server to get server status from a web browser. With this module we can easily find out how well the server is performing. All reports are generated in a html format.
Step1. Check if status module is enabled or not apache2ctl -M or ls /etc/apache2/sites-enabled
Step2. If not enabled, enable it by the command,
sudo a2enmod status
step3. Configure access,
Open /etc/apache2/mods-enabled/status.conf and comment the lines,
#<Location /server-status>
# SetHandler server-status
# Require local
#Require ip 192.0.2.0/24
#</Location>
And add the following line,
<Location /server-status>
SetHandler server-status
Order deny,allow
Allow from all
</Location>
We can restrict the access of server status for particular IP’s in this configuration by editing , Allow from our_public_ipaddress instead of Allow from all
Save the status.conf file .
Step4. Restart apache by the command,
/etc/init.d/apache2 restart
Step5. Check the server status page in browser
http://server-ip/server-status
Hope this would be helpful.