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.
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:I found out I could run
but not
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
and got my munin apache graphs.
I found solution from Many Ayromlou on this site:
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,
And add the following line,
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.
I was having the same problem. Here's some more diagnostic steps. Try doing
That's a more direct way to see the same error "no (no apache server-status on ports 80)"
Now try doing
For me that's giving 403 Forbidden.
I was also seeing 'client denied by server configuration: /var/www/server-status' in my main apache error log
You getting the same?
For me in fact Shane Madden's answer solved it.
If /server-status is forbidden only from 127.0.0.1 you can create VirtualHost configuration for 127.0.0.1 with following content:
Here is more detailed explanation