Pandora:Documentation es:Monitorizacion web

From Pandora FMS Wiki

Jump to: navigation, search

Volver a Indice de Documentacion Pandora FMS

Monitorización de experiencia de usuario Web

Introducción

Esta es una característica de la versión Enterprise.que permite monitorizar la experiencia de usuario de una Web. Esta basado en el uso de transacciones para comprobar los distintos pasos o saltos producidos a la hora de navegar por un sitio web. Reproduce fielmente el "proceso" de navegación completo que puede incluir aspectos como autenticarse en un formulario, hacer click en una opción del menú, rellenar un formulario, verificando que cada paso devuelve una cadena de texto concreta. Cualquier fallo en un punto del proceso, daría como resultado un fallo en la comprobación. La transacción completa incluye la descarga de todos los recursos (gráficos, animaciones, etc) que contempla la navegación real. Además de realizar comprobaciones de funcionamiento y de tiempo de respuesta, es posible extraer valores de las páginas web para luego procesarlos.

Goliat es el nombre "en clave" usado para denominar al servidor de pruebas WEB. Goliat es capaz de monitorizar tanto HTTP como HTTPS de forma transparente para el usuario, mientras se encuentren instaladas en el sistema las librerías OpenSSL.

Creación de módulos web

Para monitorizar de forma remota una página web, primero se deberá crear el agente correspondiente para monitorizar el servicio, por ello se empezará por ahí.

En la sección de administración de la consola de Pandora FMS pulse sobre Manage agents del menú Resources.



Manage agents.png



En la siguiente pantalla pulse el botón Create agent:



Gaga.png



Rellene los datos para su nuevo agente y pulse el botón Create agent:



Gagita.png



Una vez que haya creado el agente, pulse sobre la solapa superior de los módulos (Modules). En ella, seleccione crear un nuevo módulo de servidor Web (webserver module) y pulse el botón Create:

Gagita2.png



Una vez que se pulse el botón Create, se mostrará un formulario en el que se han de rellenar los campos necesarios para poder monitorizar una web.



Gagita3.png
Http module2.png



A continuación se detallan los campos del formulario:

Name

Nombre de la comprobación

Type

Tipo de la comprobación:

  • Remote HTTP module to check latency: obtiene el tiempo total que transcurre desde la primera petición hasta que se comprueba la última (en una prueba WEB existe una o varias peticiones intermedias que completan la transacción). Si en la definición del chequeo existen varias peticiones, se utiliza la media del tiempo de cada petición.
  • Remote HTTP module to check server response: obtiene un 1 (OK) o un 0 (FALLÓ) como resultado de comprobar toda la transacción. Si existen varios intentos y alguno de ellos falla, se considera que la prueba en su conjunto, también falla.
  • Remote HTTP module to retrieve numeric data: devuelve un valor numérico de la respuesta HTTP utilizando una expresión regular.
  • Remote HTTP module to retrieve string data: devuelve una cadena de la respuesta HTTP utilizando una expresión regular.

Web checks

El total de comprobaciones web que realizar (por defecto sólo una).

La comprobación WEB se define por varios pasos, o peticiones simples.

Esas peticiones simples se deben escribir en un formato especial en el campo Web checks. Las comprobaciones se inician con la etiqueta task_begin y finalizan con la etiqueta task_end.

Se puede comprobar si existe una cadena en una página web, para ello está la variable check_string. Esta variable no permite comprobar HTML en sí. Un ejemplo del uso de esta variable podría ser el siguiente: buscar en la página web http://www.example.com si existe la cadena Section 3. La variable se configuraría así:

check_string Section 3

Para asegurarse de que una cadena no existe en una página web, puede utilizar la variable 'check_not_string':

check_not_string Section 3


Para la comprobación de formularios existen varias variables adicionales:

  • resource (1 ó 0): descarga todos los recursos de la web (imágenes, vídeos, etc)
  • cookie (1 ó 0): mantiene una cookie, o una sesión abierta para comprobaciones posteriores
  • variable_name : nombre de una variable en un formulario
  • variable_value: valor de la variable anterior en el formulario

Con estas variables se podrán enviar datos a formularios y comprobar que funcionan correctamente.


Template warning.png

En algunos casos de redirección de dominios los chequeos podrían no funcionar, para solucionarlo tendrá que crear el módulo apuntando al dominio final.

 


Comprobación de cadena en una página web

La comprobación para consultar la cadena Section 3 en la página web http://www.example.com sería la siguiente:

task_begin
get http://www.example.com
check_string Section 3
task_end

El formulario completo en Pandora FMS quedaría así:



Formu.png



Y la comprobación, una vez ejecutada, se mostraría en el menú View, al pulsar sobre la solapa, y en ella en la parte de abajo, donde se mostrarán los datos una vez se empiecen a recibir.



Status.png


Como podemos observar, el estado aparece en crítico porque la cadena "Section 3" no existe en la página web recibida de http://www.example.com


Template warning.png

Los argumentos que toma la sintaxis de "check_string" no son cadenas de texto normales, son expresiones regulares. Es decir, si busca la cadena "Pandora FMS (4.0)" tendrá que buscarla con una expresion regular, p.e: Pandora FMS \(4.0\). Esto le permite hacer búsquedas mucho más potentes, pero debe tener en cuenta que cualquier caracter que no sea una letra o un número tendra que ser escapado con \.

 


Comprobar tiempo de carga de una web

Si queremos comprobar el tiempo de respuesta o latencia de una página web sólo tenemos que seleccionar el tipo de módulo Remote HTTP module to check latency. Por ejemplo si queremos conocer la latencia de la carga de la página web http://pandorafms.com, el código sería:

task_begin
get http://pandorafms.com
task_end

El formulario completo en Pandora FMS quedaría así:



Latency goliat.png


Y el resultado del módulo con la latencia sería:



Latency goliat view.png



Chequeos a través de un Proxy

Los chequeos web también soportan el uso de proxy. Para configurarlo tiene que añadir la URL del proxy en la casilla que está encontrará al pulsar en Advanced options:



Goliat proxy conf.png



Por ejemplo la URL podría ser:

http://proxy.domain.com:8080

Si el proxy requiere autenticación la URL sería como la siguiente:

http://my_user:my_pwd@proxy.domain.com:8080

Obteniendo datos de una página web

Ejemplo: el valor en bolsa de Google

Para obtener el valor en bolsa de Google tenemos que crear un módulo Remote HTTP module to retrieve numeric data con la expresión regular adecuada:

task_begin
get http://finance.google.com/finance/info?client=ig&q=NASDAQ%3aGOOG
get_content \d+\.\d+
task_end

La salida será algo parecido a esto:



Google stock quote.png


Desde Pandora FMS 4.1 se puede especificar la parte de la expresión regular a devolver para recoger datos de respuestas HTTP más complejas:

task_begin
get http://finance.yahoo.com/q?s=GOOG
get_content_advanced <span id="yfs_l84_goog">([\d\.]+)</span>
task_end


Template warning.png

La parte de la expresión regular (definida en get_content_advanced) a devolver debe estar encerrada entre paréntesis. .

 



Para configurar los umbrales que nos dispararán los estados de advertencia o crítico, utilizaremos la configuración del módulo para comprobar que la cadena recibida coincide con lo esperado.

Comprobación de formulario en una página web

Una comprobación más interesante es la comprobación de un formulario web. No obstante es mucho más compleja que la simple comprobación de un texto en una página web. Esta comprobación de ejemplo usará una página de demostración pública de Pandora FMS, iniciará sesión, y comprobará que efectivamente ha sido capaz de ello. Para poder realizar este tipo de comprobaciones se ha de tener las credenciales necesarias para poder iniciar sesión. Además, se deberá ir a la página y obtener el código HTML para poder ver los nombres de las variables.

La página web es http://firefly.artica.es/pandora_demo/index.php?login=1, y una vez en ella, se observa que las variables son:

  • nick: nombre del usuario
  • pass: contraseña para el usuario


Se deberán usar las variables variable_name y variable_value conjuntas para poder validar el formulario. El ejemplo completo sería:

task_begin
post http://firefly.artica.es/pandora_demo/index.php?login=1
variable_name nick
variable_value demo
variable_name pass
variable_value demo
cookie 1
resource 1
task_end

Con la tarea anterior se habría logrado acceder a la página web y validarse en ella, ahora se comprobará que efectivamente se está registrado en la página buscando algo en ella que sólo se puede ver estando registrado:

task_begin
get http://firefly.artica.es/pandora_demo/index.php?sec=messages&sec2=operation/messages/message
cookie 1
resource 1
check_string Read messages
task_end

Y aún se podría hacer otra comprobación, que sería finalizar la sesión en la página y salir:

task_begin
get http://firefly.artica.es/pandora_demo/index.php?bye=bye
cookie 1
resource 1
check_string Logged Out
task_end

Con lo cual la comprobación total quedaría en Pandora FMS como sigue:



Sigie.png



Una vez que se han añadido las comprobaciones, éstas se pueden ver en la lista de módulos:



Gipo.png



Para ver el estado de las comprobaciones, ir al menú View, al pulsar sobre la solapa, y en ella en la parte de abajo, donde se mostrarán los datos una vez se empiecen a recibir.



Solapa.png



También se pueden ver más datos sobre los módulos, para este caso se debe pulsar sobre la solapa Data y en ella se mostrará una lista como la siguiente:



Tambien.png



En esta imagen se pueden apreciar las dos comprobaciones, su nombre, el intervalo en el que se ejecuta cada una (que puede diferir del intervalo del agente), y los datos. En las comprobaciones web la columna Data hace referencia al tiempo total que se ha tardado en realizar la comprobación.

En la siguiente pantalla se muestran las opciones avanzadas para la monitorización web, que es parcialmente distinto al resto:



Resto.png



Los campos de las propiedades avanzadas son similares a los de otros tipos de módulos, aunque existen algunos campos diferentes y propios de los chequeos WEB:

Timeout

Es el tiempo de expiración durante la petición, si se supera éste tiempo la petición de comprobación se descartará.

Agent browser id

Es el identificador de navegador web que usar, ya que determinadas páginas sólo aceptan algunos navegadores web (consultar zytrax.com para obtener más información).

Requests

Pandora repetirá la comprobación el número de veces que se indique en este parámetro. Si una de las comprobaciones falla, la comprobación se dará como errónea. Dependiendo de la cantidad de comprobaciones en el módulo, se obtendrá un número determinado de páginas; es decir, si el módulo consta de tres comprobaciones, se descargarán tres páginas, y si en el campo Requests se ha establecido algún valor, entonces el número de descargas se multiplicará por éste. Es importante tenerlo en cuenta para saber el tiempo total que tardará el módulo en completar las operaciones.

Utilizando autenticación HTTP Simple

Algunas páginas pueden requerir autenticacion simple HTTP. Eso no tiene nada que ver con un usuario y password en un formulario. La autenticacion HTTP es aquella que "salta" una ventana del navegador, informando que el sitio "xxxx" nos pide unas credenciales.

Esto se codifica a la hora de especificar una tarea HTTP de la siguiente manera:

http_auth_serverport artica.es:80
http_auth_realm Private area
http_auth_user admin
http_auth_pass xxxxxx
  • http_auth_serverport - Dominio y el puerto web
  • http_auth_realm - Nombre de la zona (realm) de autenticación.
  • http_auth_user - Usuario
  • http_auth_pass - Password

Un ejemplo completo seria el siguiente:

task_begin
get http://artica.es/pandoraupdate4/ui/
cookie 1
resource 1
check_string Pandora FMS Update Manager \(4.0\)
http_auth_serverport artica.es:80
http_auth_realm Private area
http_auth_user admin
http_auth_pass xxxx
task_end

Monitorizacion de webservices

Con Pandora FMS y Goliat se pueden monitorizar API's REST, no así API's mas complejas basadas en protocolos como SOAP o XMLRPC.

Por ejemplo, supongamos que quiero comprobar una API con esta llamada, que devuelve un numero entero (de 0 a infinito) en el caso de que funcione. NO devolver nada seria un error:

task_begin
get http://artica.es/integria/include/api.php?user=slerena&pass=xxxx&op=get_stats&params=opened,,1
check_string \n[0-9]+
task_end

Esto me devuelve una respueta del tipo:

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: close
Date: Mon, 13 May 2013 15:39:27 GMT
Pragma: no-cache
Server: Apache
Vary: Accept-Encoding
Content-Type: text/html
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Client-Date: Mon, 13 May 2013 15:39:27 GMT
Client-Peer: 64.90.57.215:80
Client-Response-Num: 1
Client-Transfer-Encoding: chunked
Set-Cookie: a81d4c5e530ad73e256b7729246d3d2c=pcasWqI6pZzT2x2AuWo602; path=/

0

Mediante la comprobacion de la salida con una expresion regular, puede verificar que esta todo ok. Para respuestas mas complejas, deberia usar otras expresiones regulares.

Monitorización https

Goliat puede comprobar tanto http como https. Para poder hacer comprobaciones sobre web seguro (https) basta con especificar este protocolo en la URL, por ejemplo:

task_begin
get https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=zpwhtygjntrz&ss=1&scc=1&ltmpl=default&ltmplcache=2
cookie 1
resource 0
check_string Google
task_end

Soporte IPv6

Desde la version 4.0.3, Goliat (la libreria que soporta la monitorizacion transaccional WEB de Pandora FMS), soporta IPv6. El soporte para IPv6, necesita usar direcciones FQDN.

Esto significa que las 'URL's deben tener nombres completos (p.e: ipv6.google.com). La representacion numerica de direcciones IPv6 (pe: [::1], [2404:6800:4004:803::1014] etc..) no se pueden realizar. Esta limitación depende la libreria base LWP.


Opciones avanzadas

Modificando cabeceras HTTP(Disponible en la siguiente version 4.0.2)

Con la opción header se pueden modificar campos de la cabecera HTTP o crear campos personalizados. Por ejemplo, para cambiar el campo Host de la cabecera HTTP:

task_begin
get http://192.168.1.5/index.php
header Host 192.168.1.1
task_end

Depurando chequeos web(Disponible en la siguiente version 4.0.2)

Se pueden depurar los chequeos web añadiendo la opción debug <log_file>. Se crearán dos ficheros log_file.req y log_file.res con los contenidos de la petición HTTP y la respuesta respectivamente. Por ejemplo:

task_begin
get http://192.168.1.5/index.php
debug /tmp/request.log
task_end

El anterior chequeo web creará los ficheros /tmp/request.log.req y /tmp/request.log.res.

Utilizando Curl en vez de LWP

LWP a veces se cae cuando varios hilos llevan a cabo peticiones HTTPS. Para solucionar este problema, edite el fichero /etc/pandora/pandora_server.conf y añada la siguiente línea:

web_engine curl

Reinicie el servidor de Pandora FMS, y el binario de Curl se utilizará llevar a cabo las comprobaciones web en vez de LWP.

Monitorización transaccional distribuida con Selenium

Selenium logo.png

Además de la funcionalidad que ofrece Goliat, integrado en Pandora FMS, existe (En la version enterprise) otra forma de realizar una monitorización transaccional con Pandora FMS, pero desplegada a modo de "agente" en sistemas diferentes al servidor, incluso en redes no accessibles.

Se utiliza Selenium [1] como motor -en vez de goliat-, y este soporta una navegación "por clicks", mucho mas fina que la que ofrece Goliat. El plugin de agente de Selenium interactua con el servidor de Selenium. y este a su vez con el navegador del sistema. Esto hace que se puedan realizar navegaciones usando Chrome, Firefox o IE indistintamente. Funciona en Windows o en Linux, y permite realizar calculos de latencia, comprobacion de cadenas y soporta la navegación con javascript pesado, applets java, flash o cualquier otra tecnología soportada en el navegador.

La documentación de Selenium, por ser extensa y específica de dicha tecnología, está disponible en el plugin enterprise de Selenium, que puede encontrar en la libreria de modulos de pandorafms.com.


Volver a Indice de Documentacion Pandora FMS