estado del servidor apache no encontrado. comprobar si mod_status está habilitado

9

He habilitado los apache_complementos en un nodo munin:
ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/

Después de reiniciar el nodo con service munin-node restartaquí están los errores que obtengo:

$ 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]

Sin embargo, mod_statusya está habilitado:

$ a2enmod status
Module status already enabled

Y reiniciar Apache no hace la diferencia.

Si trato de ejecutar los complementos manualmente, esto es lo que obtengo (leí que obtener una U es una mala noticia, así que al menos eso es 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

¿Alguien sabe por qué sigo recibiendo el server-status not foundmensaje y cómo puedo deshacerme de él?

Respuesta actualizada 1

La sugerencia de Shane era correcta acerca de cómo configurar un controlador de solicitudes usando Locationy SetHandleren el sitio de apache. Para obtener más información sobre mod_status, consulte esta página

Pude verificar que muninefectivamente estaba haciendo las solicitudes apropiadas mirando /var/log/apache2/access.logdónde estaba obteniendo esto:

127.0.0.1 - - [10/Nov/2011:07:24:15 +0000] "GET /server-status?auto HTTP/1.1" 404 7774 "-" "libwww-perl/5.834

En mi caso, la configuración Locationno fue suficiente, ya que estoy ejecutando un Drupalsitio y .htaccesscombinados con mod_rewritereescribir las solicitudes. Para solucionarlo, tuve que agregar la siguiente línea a mi.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]

Tenga en cuenta que esto no representa un problema de seguridad ya que el acceso /server-statusestá restringido a 127.0.0.1en el sitio apache.

Respuesta actualizada 2

Parece que, Locationdespués de todo, no era necesario agregarlo al sitio apache, ya que esto ya está definido en /etc/apache2/mods-enabled/status.conf. Por cierto, si desea agregar la ExtendedStatus Ondirectiva, está en ese archivo que debe hacerlo.

Max
fuente

Respuestas:

5

Parece que en realidad está tratando de hacer solicitudes al módulo de estado. ¿Tiene una configuración adecuada para la ubicación del estado en su VirtualHost? Algo como esto:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
Shane Madden
fuente
Punto válido de hecho, aunque en mi caso también tuve que hacer algo de mod_rewritetrabajo (ver pregunta actualizada con respuesta)
Max
3

Descubrí que podía correr

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

pero no

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

El primero está llegando al servidor predeterminado, el segundo un servidor virtual.

Así que agregué explícitamente una sección de apache a /etc/munin/plugin-conf.d/munin-node

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

y obtuve mis gráficos munin apache.

Marji
fuente
2

Encontré la solución de Many Ayromlou en este sitio :

El problema es que estas reglas .htaccess en wordpress se apoderan de las URL de información del servidor y del estado del servidor activadas en la configuración de apache y devuelven un error de página no encontrada. Encontré numerosos sitios que sugerían agregar una regla como:

  RewriteCond %{REQUEST_URI} !=/server-status

Esto no funcionó para mí. No estoy seguro de si la versión multisitio de wordpress (que estoy usando) está causando esto. La regla que funcionó maravillosamente es la siguiente:

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

Esta regla detiene el motor de reescritura cada vez que se analiza la información del servidor o el estado del servidor como parte de la URL.

janfai
fuente
1

mod_status integrado en el servidor web Apache para obtener el estado del servidor desde un navegador web. Con este módulo podemos averiguar fácilmente qué tan bien está funcionando el servidor. Todos los informes se generan en formato html.

Paso 1. Compruebe si el módulo de estado está habilitado o no apache2ctl -M o ls / etc / apache2 / sites-enabled

Paso 2. Si no está habilitado, habilítelo con el comando,

estado de sudo a2enmod

paso 3. Configurar acceso,

Abra /etc/apache2/mods-enabled/status.conf y comente las líneas,

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

Y agregue la siguiente línea,

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

Podemos restringir el acceso al estado del servidor para IP particulares en esta configuración editando, Permitir desde nuestra_dirección_pública_en lugar de Permitir desde todos

Guarde el archivo status.conf.

Paso 4. Reinicia apache con el comando,

/etc/init.d/apache2 restart

Paso5. Verifique la página de estado del servidor en el navegador

http: // server-ip / server-status

Espero que esto sea útil.

Amol
fuente
0

Estaba teniendo el mismo problema. Aquí hay algunos pasos de diagnóstico más. Trata de hacerlo

munin-run apache_processes autoconf

Esa es una forma más directa de ver el mismo error " no (no hay estado de servidor apache en los puertos 80) "

Ahora intenta hacer

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

Para mí eso es dar 403 Prohibido .

También estaba viendo 'cliente denegado por la configuración del servidor: / var / www / server-status' en mi registro principal de errores de apache

¿Estás recibiendo lo mismo?

Para mí, de hecho, la respuesta de Shane Madden lo resolvió.

Harry Wood
fuente
Hola Harry, si tienes el mismo problema, vota la pregunta, ya que aumenta la probabilidad de obtener respuestas.
Max
Lo haré, tan pronto como tenga suficiente reputación para votar :-)
Harry Wood
0

Si / server-status está prohibido solo desde 127.0.0.1, puede crear la configuración de VirtualHost para 127.0.0.1 con el siguiente contenido:

<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>

Aquí hay una explicación más detallada

druss
fuente