En Pandora FMS funciona como un servidor independiente, similar al Servidor de Red, al Servidor WMI o al servidor de plugins remotos. Este sistema opera bajo el principio de transacción web, donde cada transacción completa contra una o varias páginas WEB está definida por uno o más pasos consecutivos, que deben concluir satisfactoriamente para considerar que la transacción ha terminado con éxito.
Se debe activar el Web server y reiniciar el Pandora FMS server. Para activar el Web server se debe modificar en el fichero de configuración del PFMS server:
webserver 1
En función del número de peticiones puede se que tenga que aumentar el número de hilos y el timeout por defecto:
web_threads 1 web_timeout 60 # Use curl or LWP web_engine curl
Pandora FMS cuenta con protección contra CSRF y puede ocurrir que los chequeos web, al ser depurados, obtenga este mensaje:
Cannot verify the origin of the request
Tenga en cuenta esta protección para considerar el uso de “Monitorización WUX”.
Para monitorizar de forma remota una página web, una vez creado el agente pulse sobre la pestaña superior de los módulos (Modules). En ella, seleccione crear Create a new webserver module y pulse el botón Create:
Se debe seleccionar el tipo de chequeo WEB:
OK
) o un 0 ( CRITICAL
) como resultado de comprobar toda la transacción. Si existen varios intentos pero al menos uno de ellos falla, se considera que la prueba en su conjunto, también falla. Precisamente, el número de intentos se utiliza en ocasiones para evitar falsos positivos, para ello utilice el campo reintentos en campos avanzados.web_engine curl
se puede retribuir las cabeceras HTTP.
Web checks: Este campo esencial define la comprobación WEB que se va a realizar. Esta se define en uno o más pasos, o peticiones simples.. Las comprobaciones se inician con la etiqueta task_begin
y finalizan con la etiqueta task_end
.
Para la comprobación de formularios existen varias variables adicionales:
En algunos casos de re-dirección de dominios los chequeos podrían no funcionar. Una manera de solucionarlo es modificar el módulo apuntando al dominio final, por ejemplo curl -L
Para comprobar el tiempo de respuesta o latencia de una página web se selecciona el tipo de módulo Remote HTTP module to check latency. Ejemplo:
task_begin get https://pandorafms.com task_end
resource 1
en una línea antes de task_end
.El tiempo de descarga de la web no es el tiempo que tarda en visualizarse una web en un navegador, ya que esto suele depender del tiempo de carga del JavaScript.
Una comprobación de formulario es mucho más compleja que la simple comprobación de un texto en una página web. Para poder realizar este tipo de comprobaciones se deben tener las credenciales necesarias. Además, es necesario ir a la página y obtener el código HTML para obtener los nombres de las variables, y luego es preciso tener conocimientos mínimos de HTML para introducir la consulta para el web server.
El método práctico para diseñar una prueba transaccional WEB con varios pasos es probarlos uno por uno en modo de depuración de errores.
Algunas páginas pueden requerir autenticación simple HTTP. Generalmente es utilizada como una comprobación rápida, un saludo de seguridad mínima que permite acceder a comprobaciones de seguridad más avanzadas (cifrado, persistencia de datos, etcétera).
http_auth_pass
no está soportado.Se pueden monitorizar API de tipo REST, exceptuando los tipos de API más complejas basadas en protocolos como SOAP o XMLRPC.
Mediante la comprobación de la salida con una expresión regular, puede verificar que esté todo correcto. Ejemplo:
task_begin get https://swapi.dev/api/planets/1/ get_content Tatooine task_end
Para respuestas más complejas se debe usar otras expresiones regulares y el token get_content_advanced
.
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
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
La utilidad LWP puede dar problemas cuando muchos hilos llevan a cabo peticiones HTTPS (debido a una limitación de OpenSSL). La alternativa es utilizar la herramienta curl. 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á para llevar a cabo las comprobaciones web en vez de LWP.
Además de la funcionalidad que ofrece Web server PFMS, existen otras maneras de realizar una monitorización transaccional web.