Monitorizando el estado y balanceadores de un servidor web Apache

El servidor web Apache trae varias herramientas muy útiles para monitorizar su funcionamiento que al fin y al cabo nos ayudan para poner a punto los servicios o detectar problemas e identificar a qué nivel se encuentran. Por ejemplo, puede darse el caso de que tengamos un TimeOut demasiado elevado establecido en el servidor y esto estuviera provocando que muchas conexiones se quedaran abiertas a la espera, o que por otro lado no quedaran workers disponibles para servir peticiones de clientes, llegando a bloquear el servicio hasta que quedara uno libre…

Gracias a mod_status podemos monitorizar gran cantidad de información como: requests, VirtualHosts que están sirviendo, recurso servido, workers, IPs que está realizando las solicitudes, nº de hilos y procesos de servidor, uso de RAM y de CPU…

Para utilizarlo debemos cargar el módulo mod_status, normalmente en el fichero httpd.conf:

LoadModule status_module modules/mod_status.so

Si el servidor Apache está instalado en un Debian o derivada, recordad que una manera sencilla de habilitar módulos es con a2enmod. En este caso:

a2enmod status 

Y posteriormente calzarle las directivas correspondientes al fichero de configuración de Apache (suele ser httpd.conf o apache2.conf):

#Configuracion de server-status para Apache
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
#Hosts que pueden acceder a la monitorizacion
Allow from 192.168.2.118
</Location>

Ojo al Allow anterior. Como monitorizar el servidor puede revelar información sensible, es recomendable que restrinjamos su acceso. En mi caso sólo dejaré que se acceda al mismo desde mi IP 192.168.2.118. Si la máquina en la que está el Apache tiene IP 192.168.2.114, entonces para ver el estado pondría en el navegador:

http://192.168.2.114/server-status
Estado del Servidor web Apache

Estado del Servidor web Apache

Por otro lado, también existe un sencillo programa llamado apachetop que nos permite monitorizar en tiempo real y en la terminal el estado del servidor. En Debian o derivadas la instalación es sencilla:

aptitude install apachetop

En CentOS o similares de la familia no es tan sencillo, ya que antes tendremos que añadir los respositorios adicionales EPEL. Una vez los tengamos, podremos instalar fácilmente con:

yum install apachetop

Para ejecutarlo:

apachetop
Apachetop - Estado del servidor Apache desde terminal

Apachetop – Estado del servidor Apache desde terminal

Si además nuestro servidor Apache hace de frontal balanceador entre 2 ó más servidores backend (Tomcat, Jboss, Weblogic…) podemos monitorizar el estado del propio balanceador para ver el estado de los workers de cada nodo, peticiones, estado de balanceo, etc…

Ponemos las siguientes directivas en el fichero de configuración de Apache:

<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Deny from all
# Restriccion de acceso
Allow from 192.168.2.118
</Location>

Como en el caso anterior, para ver el estado de los balanceadores utilizaremos la URL:

http://192.168.2.114/balancer-manager

Como véis, métodos sencillos y que apenas requieren de cambios en la configuración de nuestro servidor web Apache.