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.