Eu habilitei os apache_
plugins em um nó munin:
ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/
Depois de reiniciar o nó, service munin-node restart
aqui estão os erros que estou recebendo:
$ 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]
No entanto, mod_status
já está ativado:
$ a2enmod status
Module status already enabled
E reiniciar o apache não faz diferença.
Se eu tentar executar os plugins manualmente, aqui está o que recebo (li que obter um U é uma má notícia, pelo menos isso é consistente).
$ 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
Alguém sabe por que ainda estou recebendo a server-status not found
mensagem e como posso me livrar dela?
Resposta atualizada 1
A sugestão de Shane estava correta sobre a configuração de um manipulador de solicitações usando Location
e SetHandler
no site apache. Para mais informações mod_status
, consulte esta página
Pude verificar se munin
estava efetivamente fazendo as solicitações apropriadas, olhando para /var/log/apache2/access.log
onde estava obtendo isso:
127.0.0.1 - - [10/Nov/2011:07:24:15 +0000] "GET /server-status?auto HTTP/1.1" 404 7774 "-" "libwww-perl/5.834
No meu caso, definir o Location
não foi suficiente, pois estou executando um Drupal
site e, em .htaccess
conjunto mod_rewrite
, reescrevemos os pedidos. Para corrigi-lo, tive que adicionar a seguinte linha ao meu.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]
Observe que isso não representa um problema de segurança, pois o acesso ao /server-status
é restrito 127.0.0.1
no site apache.
Resposta atualizada 2
Parece que Location
não foi necessário adicionar o site ao apache, já que isso já está definido em /etc/apache2/mods-enabled/status.conf
. Aliás, se você quiser adicionar a ExtendedStatus On
diretiva, é nesse arquivo que você deve fazê-lo.
mod_rewrite
obra (ver pergunta atualizada com resposta)