Comunidad Funcionalidades Servidores Tutorial

Cómo monitorizar un servidor web Apache con Pandora FMS

julio 13, 2018

Cómo monitorizar un servidor web Apache con Pandora FMS

El post está disponible también en : Inglés

Monitorización Web Server performance con Apache y Pandora FMS

¿Qué es un servidor Web Apache?

En el artículo de hoy, aprenderemos cómo monitorizar en profundidad un servidor Web Apache con Pandora FMS. Pero primero, conceptualizaremos brevemente sobre qué es Apache.

Se trata del servidor web HTTP de código abierto más utilizado del mercado, ya que es multiplataforma, gratuito, de alto rendimiento, uno de los más seguros y de los más robustos.

Se fundó en 1999, en Estados Unidos, por un grupo de ocho desarrolladores que formaron en un primer momento el Grupo Apache, del cual surgiría la Apache Software Foundation.

Entre sus múltiples ventajas está su coste, ya que es completamente gratuito y de código abierto; su compatibilidad con Linux, MacOs y Windows; su soporte de seguridad SSL y TLS; su equipo de soporte mundial y funcional y su rendimiento (cuenta con un millón de visitas al día).

Logo de la Apache Software Foundation

Monitorizar un servidor Apache no es tan sencillo como monitorizar el estado del proceso o hacer una petición web para ver si devuelve algo. Esto sería una monitorización básica que cualquiera puede hacer con Pandora FMS, ya que incluso vienen ejemplos en la documentación.

Monitorización del rendimiento del servidor Apache

Existe un plugin en la librería de Pandora FMS que nos permite, en combinación con el módulo server status de Apache, obtener información pormenorizada del rendimiento del servidor.

Además, podemos configurar el servidor para obtener información detallada de cada instancia o dominio web que estamos sirviendo en el servidor.

El primer paso es, obviamente, tener un Pandora FMS instalado. Luego, instalaremos un agente de Pandora FMS en el servidor Linux donde esté el Apache que queramos monitorizar.

Una vez instalado el agente, instalaremos el plugin de Apache de la librería de modulos:

https://pandorafms.com/library/apache-performance-plugin/

Lo descargaremos y copiaremos en el directorio de plugins del agente linux, que esté en
/etc/pandora/plugins

Para poder usar el plugin necesitamos configurar el servidor de Apache para que utilice el módulo server-status, que da información detallada del servidor. Para ello editaremos el fichero /etc/httpd/conf/httpd.conf y añadiremos la siguiente configuración:


ExtendedStatus on

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

Donde pone XX.XX.XX.XX pondremos la IP principal de nuestro servidor Web. Esto es para que solo acepte peticiones de sí mismo, por seguridad.

Una vez hechos estos cambios, reiniciaremos el servidor web y lanzaremos el plugin manualmente para verificar que devuelve algún dato:

/etc/pandora/plugins/apache_plugin http://46.105.97.91/server-status

Que tiene que devolver un XML con datos, ya que es un plugin de agente que devuelve varios módulos. Este es un extracto del todo el XML:

<module>
<name><![CDATA[Apache: Uptime]]&gt;</name>
<description><![CDATA[Uptime since reboot (sec)]]&gt;</description>
type generic_data/type

<min>0</min>
<disabled>0</disabled>
<data><![CDATA[248008]]&gt;</data>
</module>

Una vez hemos verificado que funciona, añadiremos el plugin al agente de Pandora FMS con la siguiente línea:

module_plugin apache_plugin http://XX.XX.XX.XX/server-status

De nuevo, atentos para reemplazar XX.XX.XX.XX por la IP del servidor Apache, la misma máquina donde se ejecuta el agente de Pandora FMS.

Una vez hecho esto y reiniciado el agente para que coja la nueva configuración, debería tener una vista similar a esta:

captura del agente de Pandora FMS

Monitorización del estado del servidor

Además de la monitorización de rendimiento, deberíamos hacer una monitorización básica del proceso Apache; bastaría con un módulo para verificar que el demonio está funcionando:
module_begin
module_name Apache Status
module_type generic_proc
module_exec ps aux | grep httpd | grep -v grep | wc -l
module_end

Al ser un módulo booleano, solo se pondría en CRÍTICO cuando su valor fuera 0, pero además nos servirá para saber cuántos subprocesos de HTTPD hay activos en el servidor.

Monitorización de la carga de una instancia específica

En Apache podemos configurar una instancia -lo que en su terminología es un host virtual- para que utilice un log específico, solo para él, de esta manera:

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/mydomain
ServerName mydomain.com
CustomLog logs/access_log_mydomain common

</VirtualHost>

Ahora solo tenemos que monitorizar el nº de entradas de ese fichero para saber cuantas peticiones por segundo tenemos en nuestro servidor, mediante un módulo de tipo incremental:

module_begin
module_name MyDomain Request/sec
module_type generic_data_inc
module_exec wc -l /var/log/httpd/access_log_mydomain | awk '{ print $1 }'
module_end

Puedes ver el tutorial sobre cómo monitorizar un servidor web Apache aquí:


    Sancho es el creador y fundador de Pandora FMS. Entre sus muchas aficiones están la fotografía, la ciencia ficción y deportes como la esgrima o el boxeo.



    6 comments
    1. Jimmy Olano

      ¡ Muy buen artículo ! ================ En mi caso soy "ubuntero" y el fichero "access.log" está en un lugar diferente; en lo último de este artículo indica el uso de un módulo de tipo incremental, comparto lo que encontré. Al revisar el contenido de "access.log" observo muchas líneas que comienzan con "127.0.0.1" (lo cual es normal porque son auto verificaciones del servidor) EN TODO CASO pienso que estas líneas no deberíamos pasarlas al módulo, por eso propongo sustituir (ojo, este módulo funciona para UBUNTU): module_exec wc -l /var/log/apache2/access.log | awk '{ print $1 }' por lo siguiente: cat /var/log/apache2/access.log | grep --invert-match 127.0.0.1 | wc -l | awk '{ print $1 }' NÓTESE que podemos crear otro módulo SIN el parámetro "--invert-match" del "grep" para llevar cuenta de las auto verificaciones del servidor, que también es significativo saber si se están realizando debidamente. ================ De nuevo mi enhorabuena por el artículo, ¡hoy he aprendido algo nuevo!

      • maria

        Hola Jimmy, ¡Muchas gracias por tu aportación! Esperamos que también ayude a otros ubunteros :) Un saludo,

    2. Jose

      Hola. No me reconoce el módulo cuando reinicio el agente. Deshabilité los cortafuegos y reinicié todo pero no me lo reconoce. El módulo funciona correctamente y devuelve el XML Alguna idea?

      • maria

        Hola José, Muchas gracias por tu comentario. Respecto a tu consulta, podría ser debido a permisos del plugin. De todas formas, en nuestro foro puedes consultar más información: https://pandorafms.com/forums/ Un saludo,

    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.