status do servidor apache não encontrado. verifique se mod_status está ativado

9

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 restartaqui 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_statusjá 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 foundmensagem 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 Locatione SetHandlerno site apache. Para mais informações mod_status, consulte esta página

Pude verificar se muninestava efetivamente fazendo as solicitações apropriadas, olhando para /var/log/apache2/access.logonde 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 Locationnão foi suficiente, pois estou executando um Drupalsite e, em .htaccessconjunto 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.1no site apache.

Resposta atualizada 2

Parece que Locationnã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 Ondiretiva, é nesse arquivo que você deve fazê-lo.

Máx.
fonte

Respostas:

5

Parece que ele está realmente tentando fazer solicitações ao módulo de status. Você tem uma configuração adequada para o local do status no seu VirtualHost? Algo assim:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
Shane Madden
fonte
Ponto válido de fato, embora no meu caso eu também tinha que fazer alguma mod_rewriteobra (ver pergunta atualizada com resposta)
Max
3

Eu descobri que podia correr

$ wget http://localhost/server-status?auto

mas não

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

O primeiro está atingindo o servidor padrão e o segundo, um servidor virtual.

Então, eu adicionei explicitamente uma seção apache para /etc/munin/plugin-conf.d/munin-node

[apache_*]
env.url   http://localhost:%d/server-status?auto
env.ports 80

e recebi meus gráficos munin apache.

Marji
fonte
2

Encontrei solução de Muitos Ayromlou neste site :

O problema é que essas regras .htaccess no wordpress assumem as URLs de informações e status do servidor ativadas na configuração do apache e retornam um erro de página não encontrada. Me deparei com vários sites que sugeriam adicionar uma regra como:

  RewriteCond %{REQUEST_URI} !=/server-status

Isso não funcionou para mim. Não tenho certeza se a versão multisite do wordpress (que estou usando) está causando isso. A regra que funcionou perfeitamente é a seguinte:

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

Essa regra interrompe o mecanismo de reescrita sempre que informações do servidor ou status do servidor são analisados ​​como parte da URL.

janfai
fonte
1

mod_status integrado ao servidor da web Apache para obter o status do servidor em um navegador da web. Com este módulo, podemos facilmente descobrir o desempenho do servidor. Todos os relatórios são gerados em um formato html.

Passo 1. Verifique se o módulo de status está ativado ou não apache2ctl -M ou ls / etc / apache2 / sites-enabled

Passo 2. Se não estiver ativado, ative-o pelo comando

status de sudo a2enmod

etapa 3. Configure o acesso,

Abra o /etc/apache2/mods-enabled/status.conf e comente as linhas,

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

E adicione a seguinte linha,

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

Podemos restringir o acesso do status do servidor para IPs específicos nessa configuração, editando Permitir do endereço_ipublic_public em vez de Permitir de todos

Salve o arquivo status.conf.

Passo 4. Reinicie o apache pelo comando

/etc/init.d/apache2 restart

Etapa5. Verifique a página de status do servidor no navegador

http: // server-ip / server-status

Espero que isso seja útil.

Amol
fonte
0

Eu estava tendo o mesmo problema. Aqui estão mais algumas etapas de diagnóstico. Tente fazer

munin-run apache_processes autoconf

Essa é uma maneira mais direta de ver o mesmo erro " não (sem status do servidor apache nas portas 80) "

Agora tente fazer

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

Para mim, isso significa 403 Proibido .

Eu também estava vendo 'cliente negado pela configuração do servidor: / var / www / server-status' no meu log de erro principal do apache

Você está recebendo o mesmo?

Para mim, na verdade, a resposta de Shane Madden resolveu.

Harry Wood
fonte
Olá Harry, se você está tendo o mesmo problema, vote na pergunta, pois aumenta a probabilidade de obter respostas.
Max
Vai fazer, assim que eu tenho reputação suficiente para votar :-)
Harry Madeira
0

Se / server-status for proibido apenas a partir de 127.0.0.1, você poderá criar a configuração do VirtualHost para 127.0.0.1 com o seguinte conteúdo:

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

Aqui está uma explicação mais detalhada

druss
fonte