Comunidad

Monitorización de servidor web

febrero 16, 2017

Monitorización de servidor web

This post is also available in : Inglés

Monitorización de servidor web: todo lo que deberías saber

En este artículo vamos a presentar algunas de las diferentes opciones de monitorización de servidor web que podemos implementar en Pandora FMS. Vamos a utilizar un servidor web Apache como ejemplo y enfocarnos en cuatro puntos clave:

1. Monitorización del server-status de Apache, que nos proporciona métricas útiles para conocer el estado general de nuestro servidor web.

2. Monitorización de las conexiones tcp con netstat. Podremos filtrar por ESTABLISHED, TIME_WAIT, LISTEN o bien por direcciones IP específicas.

3. Monitorización del access_log, pudiendo obtener datos concretos de cantidad de peticiones, número de orígenes diferentes de estas peticiones, etc.

4. Monitorización de nuestro sitio web de forma externa: ¿Está mi página web levantada? ¿Cuáles son sus tiempos de respuesta? ¿Está sufriendo una degradación del servicio?

Con estos cuatro puntos podremos realizar una correcta monitorización de servidor web y localizar rápidamente cualquier problema en el servicio.

banner full pandora fms free demo
banner tablet pandora fms free demo
banner mobile pandora fms free demo

Monitorización server-status

La primera utilidad de la que nos valdremos para la monitorización de servidor web será el server-status nativo de Apache. Para habilitarlo debemos editar el fichero de configuración, normalmente ubicado en:

monitorizacion de servidor web

/etc/httpd/conf/httpd.conf

Y añadir el siguiente bloque al final del fichero:

ExtendedStatus On

SetHandler server-status
Order deny,allow
Allow from localhost, 192.168.50.1

En este caso, localhost y 192.168.50.1 son las direcciones IP desde las que será posible hacer consultas al server-status de nuestro web server. Habrá que reemplazarlas o añadir direcciones IP adicionales en función de la máquina desde la que se vayan a hacer las consultas. Ahora, tras reiniciar el servicio, tendremos acceso a información útil de nuestro servidor web: http://ip_address/server-status

Y se mostrará una ventana con información como la siguiente:

Monitorizacion de servidor web

Nos valdremos de esta ventana para la monitorización del servidor web y extraeremos algunos de sus parámetros más importantes, como son CPU Usage, Server uptime, Total accesses, Total Traffic, etc. El equipo de Pandora FMS dispone de un plugin de agente que se ocupa, de forma automática, de incluir todos estos chequeos en la consola de Pandora FMS. Para hacerlo funcionar tan solo hay que desplegarlo a un agente software que tenga conexión con el servidor web que queremos monitorizar; puede ser un agente instalado en el propio servidor web, ya que estas métricas son brindadas directamente por el servicio server-status de Apache y sus resultados no varían, independientemente del lugar desde el que se consulten.

Algunos de los chequeos que nos mostrará el plugin al leer información del server-status son:

  • Total Accesses: cantidad de accesos al servidor Apache.
  • CPU Load: carga de CPU del servidor Apache.
  • Uptime: tiempo que lleva el servidor Apache levantado.
  • RequestsPerMinute: peticiones por minuto.
  • BytesPerSecond: bytes transferidos por segundo.
  • BytesPerRequest: bytes transferidos por petición.
  • BusyWorkers/Server: número de hilos activos
  • IdleWorkers/Server: número de hilos inactivos.

Este plugin hace un parseo de la información devuelta por el servicio de Apache server-status, recogiendo la información en forma de módulos y creando una monitorización de servidor web, como la siguiente:

Monitorizacion de servidor web

Es importante destacar que, dado que un servidor puede configurarse de diferentes maneras, la carga dependerá de cada sistema; por eso el plugin no devuelve umbrales. Los umbrales (Critical, Warning) habrá que ajustarlos manualmente después de un tiempo de funcionamiento, a no ser que conozcamos los límites de algunas métricas.

Monitorización de conexiones activas con netstat

A nivel de sistema, podemos monitorizar las conexiones abiertas con la utilidad netstat. Este programa nos permite conocer información sobre las conexiones de nuestro servidor, pudiendo visualizar las conexiones establecidas o pendientes, lo que nos ofrece datos a bajo nivel muy interesantes. Para esto, necesitaremos también tener instalado en nuestro servidor web un agente software de Pandora FMS, y podremos crear diferentes chequeos en función de la información que nos interese conocer. En los siguientes ejemplos vemos algunos de los casos comunes que puede interesarnos monitorizar con netstat, y sus resultados en la consola de Pandora FMS.

Conexiones establecidas para el puerto 443 (https)

module_begin
module_name Conn_Established_443
module_type generic_data
module_exec netstat -an | grep ESTAB | grep "443 " | wc –l
module_end

Gracias a este chequeo, añadiremos a la monitorización del servidor web un conteo de las conexiones establecidas al puerto 443 (https), pudiendo hacernos una idea de la carga de trabajo que está soportando, observar los picos de trabajo, etc.

Conexiones en espera de cierre para el puerto 443 (https)

module_begin
module_name Conn_TimeWait_443
module_type generic_data
module_exec netstat -an | grepTIME_WAIT | grep "443 " | wc -l
module_end

Indica conexiones pendientes de cerrar por uno de los dos participantes en la comunicación; si vemos un número elevado de conexiones pendientes puede ser indicativo de algún problema.

Conexiones descolgadas en espera de cierre (en general)

module_begin
module_name Conn_FinWait2
module_type generic_data
module_exec netstat -an | grep FIN_WAIT_2| wc -l
module_end

monitorizacion de servidor web

En este caso, FIN_WAIT_2 es un tipo de estado menos frecuente, pero su aparición puede significar un problema. Lo utilizamos para un caso donde la comunicación no va asociada a un puerto, sino a cualquier servicio que esté a la escucha. Se visualizarán de este modo en la consola de Pandora FMS una vez estén recogiendo información:

Monitorizacion de servidor web

Monitorización del log de acceso (access_log)

Además podemos hacer una monitorización del servidor web a nivel local con el fichero access_log y depurar la información que contiene para crear algunos módulos con información útil.

Algunos de los casos que pueden interesarnos son:

  • Número total de peticiones por segundo.
  • Número total de peticiones por segundo a cierta URL o recurso.
  • Número de peticiones por segundo desde cierta IP.

Número total de peticiones por segundo

Una métrica esencial y básica. Importante resaltar que es una tasa de peticiones por segundo, no un valor absoluto. El tipo de módulo generic_data_inc de Pandora FMS se encarga de recoger los valores y hacer una división de los resultados para mostrar el número por segundo:

module_begin
module_name Request_Sec
module_type generic_data_inc
module_exec wc -l /var/log/httpd/access_log
module_end

Número total de peticiones por segundo a cierta URL

Muy similar a la métrica anterior, pero indicando una URL determinada:

module_begin
module_name Request_ContactForm_Sec_
module_type generic_data_inc
module_exec grep "/en/company/contact/" /var/log/httpd/access_log | wc -l
module_end

Número de peticiones por segundo desde cierta IP

Muy similar a los chequeos anteriores, pero restringiendo por IP:

module_begin
module_name Request_ContactForm_Sec_
module_type generic_data_inc
module_exec grep "108.162.221.225" /var/log/httpd/access_log | wc -l
module_end

Es fundamental que para que estos chequeos no carguen la máquina local, el log de accesos de Apache esté dentro del sistema de rotación de logs, para que no crezca por encima de los 100MB. Para ello, lo óptimo sería emplear la configuración de rotación de Apache modificando logrotate.d/httpd añadiendo la línea: maxsize 100M

Monitorización del sitio web

Además de la monitorización de servidor web a nivel interno que podamos hacer, una prueba definitiva para conocer si el servicio funciona correctamente es la monitorización del sitio web. Con un par de chequeos podemos saber si nuestra página web se encuentra levantada y funcionando, y qué tiempos de respuesta tiene.

Monitorización web transaccional

La monitorización de sitios y transacciones web es una característica Enterprise de Pandora FMS; no obstante, vamos a mostrar un ejemplo común y ofrecer algunas alternativas para una monitorización “manual” de nuestro sitio web. Con la siguiente configuración de módulos estaríamos comprobando el estado de nuestro sitio web de monitorización para clientes. Además estaríamos realizando una transacción que implica varios pasos:

1. Carga del sitio web.
2. Login en el sitio web: permite identificar otra serie de problemas, como conexión con la base de datos en caso de que el login no tenga éxito.
3. Navegación a una sección determinada.

La configuración del módulo web sería la siguiente, y estableciendo el tipo “module to check server response” comprobaríamos que todo el proceso ha tenido éxito:

Monitorizacion de servidor web

Si configuramos el módulo de tipo “check server latency”, mediríamos el tiempo de una respuesta de transacción completa. Ambos módulos se visualizarán de este modo una vez inicializados:

Monitorizacion de servidor web

monitorizacion de servidor web

Para implementar este tipo de monitorización de servidor web no sería necesaria la instalación de un agente software, ya que los chequeos serían ejecutados de forma remota por el propio servidor de Pandora FMS, lo cual requeriría acceso http desde el servidor de Pandora FMS al website que queramos monitorizar.

Chequeo de web mediante agente software

En caso de no contar con la versión Enterprise, podríamos valernos de un chequeo ejecutado directamente por un agente de software utilizando la herramienta curl para comprobar que la página web es accesible. Este chequeo sí tendría en cuenta el lugar desde el que se realice, por lo que el agente software que ejecuta la comprobación deberá tener comunicación http con el website a monitorizar, y podremos obtener resultados diferentes dependiendo de la ubicación física del agente de software. Un sencillo chequeo para comprobar que la página web está respondiendo sería este:

Monitorizacion de servido web

Como puede observarse, nos devolverá 1 en caso de que el sitio web devuelva un “200 OK”. El módulo presentaría la siguiente configuración:

Monitorizacion de servidor web

web server monitoring

Mediante la utilidad curl podemos también monitorizar los tiempos de latencia de nuestra página web, para ello configuraríamos un chequeo similar al siguiente:

web server monitoring

Nos devolverá el tiempo de respuesta en segundos y el módulo presentaría este aspecto:

web server monitoring

web server monitoring

Monitorización de servidor web sin agentes, mediante chequeos TCP simples

Con los chequeos simples de puertos TCP que ofrece Pandora FMS en la versión Open, podríamos comprobar si el servicio se encuentra levantado. Este chequeo se ejecutaría desde el servidor de Pandora FMS, no desde un agente software, y configuraríamos un diálogo TCP simple para garantizar que el servicio devuelve la respuesta esperada:

web server monitoring

web server monitoring

Monitorización de experiencia de usuario con Selenium

Se trata de una forma de monitorizar procesos de navegación web más complejos sobre grandes páginas web con elementos flash, java, etc., mediante Selenium. Los procesos completos de navegación son grabados mediante una extensión específica de Selenium, que almacena cada una de las acciones ejecutadas por el usuario directamente en el navegador. Después, estas sesiones previamente grabadas son utilizadas para la secuencia de navegación completa en cualquier navegador real, y así poder monitorizar con total fidelidad la experiencia de usuario. El plugin se ocupa de comprobar la validez de cada uno de los pasos de navegación y de la secuencia completa, además de indicar tiempos de respuesta y latencias.

monitorizacion de servidor web

web serve monitoring

Además, con los últimos avances en este frente por parte del equipo de Pandora FMS, es posible recuperar una captura de pantalla de la última pantalla cargada y dónde se produjo el fallo.

web server monitoring

monitorizacion de servidor web

Este tipo de monitorización de servidor web puede ser ejecutada desde cualquier agente de software, por lo que los resultados podrán variar en función de la ubicación geográfica del sistema donde nuestro agente software se encuentra instalado. El caso es el mismo que para la monitorización con agentes y curl. De este modo, podremos conocer la disponibilidad y tiempos de respuesta de nuestros sitios web desde diferentes ciudades o países.

Antes de despedirnos, recuerda que Pandora FMS es un software de monitorización flexible, capaz de monitorizar dispositivos, infraestructuras, aplicaciones, servicios y procesos de negocio.

¿Quieres conocer mejor qué es lo que Pandora FMS puede ofrecerte? Descúbrelo entrando aquí: https://pandorafms.com/es

Si cuentas con más de 100 dispositivos para monitorizar puedes contactar con nosotros a través del siguiente formulario: https://pandorafms.com/es/contactar/

Además, recuerda que si tus necesidades de monitorización son más limitadas tienes a tu disposición la versión OpenSource de Pandora FMS. Encuentra más información aquí: https://pandorafms.org/es/

No dudes en enviar tus consultas. ¡El equipazo de Pandora FMS estará encantado de atenderte!


    Written by:



    4 comments
    1. You've really helped me unernstadd the issues. Thanks.

      • Avatar

        Carla Andres

        Gracias a ti por seguirnos, Andromeda!

    2. Avatar

      Jimmy Olano

      Muy buen artículo, muy completo y bien descrito: indica todo lo básico sin caer en la complejidad de detalles que muchas veces puede confundir. Sin embargo yo hago mención de que en el caso de Ubuntu, que no utiliza "httpd.conf" (ver «Monitorización server-status») deberemos agregar la siguiente línea en el fichero "/etc/apache2/apache2.conf" para poder monitorearlo luego: Include /etc/apache2/httpd.conf Igual sucede en el caso de "Monitorización del log de acceso (access_log)" donde el registro "/var/log/httpd/access_log" en Ubuntu está ubicado en "/var/log/apache2/access.log" En realidad si queremos saber dónde ejecuta apache2 debemos consultar esto: ps -ef | grep apache para luego usar algo como (si la vía que devuelve es /usr/sbin) /usr/sbin/apache2 -V y fijarnos lo que indica SERVER_CONFIG_FILE allí estará el nombre exacto del archivo de configuración para cada distribución. No obstante cada plugin debe ser adecuado con la distro que alberga a cada servidor apache2 y la identificación de la máquina por medio de los agentes Pandora FMS tienen registrado de forma muy puntual cuál sistema operativo tiene cada dispositivo a monitorizar: dejemos que Pandora FMS se encargue de hacer el trabajo por nosotros. ¡Gracias por la información, hemos aprendido algo nuevo y muy útil hoy!

    Leave a comment

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.