miércoles, 1 de febrero de 2012

Activando Server-Status en Apache

Parece una tontería, pero es una herramienta bastante útil a la hora de detectar cuellos de botella en un servidor apache. Últimamente me ha sido decisiva a la hora de detectar dos de estos casos en poco tiempo, y aunque su activación es un momento, muchos administradores no lo tienen en cuenta.

También es verdad que hay otros módulos, del propio apache o de terceros, pero este, por su simplicidad, facilidad a la hora de instalar (viene prácticamente por defecto, sólo hay que configurarlo) y por su utilidad, debería estar en cualquier checklist de instalación.

Lo primero es instalar el paquete apache; dependiendo de tu distribución se hace de una manera u otra (apt-get install apache2, aptitude apache2, yum install http, etc). Yo seguiré a partir del momento en que vuestro Apache funciona correctamente.

Antes que nada, debéis confirmar si la directiva

ExtendedStatus

está activada o no; en caso de no estarlo, la activáis (descomentándola o poniéndola en On). En caso de estar activad, pues ya la tenemos. Si no la encontráis, podéis dar de alta la línea 
ExtendedStatus On

en el archivo de configuración apache2.conf o httpd.conf, por ejemplo (o en cualquier archivo de configuración que vaya a leer el apache al levantar).

El siguiente paso es configurar el manejador. Es posible que vuestra distro ya lo tenga activado sin configurar. En el caso de distribuciones tipo Debian, en el directorio mods-available encuentro la configuración para este módulo en status.conf. Si edito me encuentro que la configuración por defecto es:
 
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
#

    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
    Allow from 192.168.253.0/24


# Keep track of extended status information for each request
ExtendedStatus On

# Determine if mod_status displays the first 63 characters of a request or
# the last 63, assuming the request itself is greater than 63 chars.
# Default: Off
#SeeRequestTail On



    # Show Proxy LoadBalancer status in mod_status
    ProxyStatus On




Yo me voy a centrar en la parte del handler, el manejadro que comentaba antes:
     SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
#    Allow from 192.168.1.0/24




Aquí podremos cambiar la manera de llamar al manejador; por defecto es '/server-status', pero por seguridad está bien que lo cambies, más que nada porque esta directriz mal configurada puede estar disponible públicamente, y no interesa. Con llamarlo '/config-status' o '/server-stat' o algo parecido ya es suficiente.
La siguente cosa en que nos fijamos en los usuarios que se permiten; sólo permite acceso desde localhost, pero si descomentamos el último 'Allow' podremos acceder también desde toda nuestra red privada 192.168.1.0/24 (o desde la red o IPs que le pongamos, aquí es donde configuramos el acceso)

Y ya está. Hacemos una comprobación de la configuración con
apache2ctl configtest

y cuando nos dé el OK, hacemos un reload para cargar los cambios. Y comprobamos que tengamos acceso al server-status de la máquina desde un navegador:
http://nombredelservidor/server-status


No hay comentarios: