====== Monitorización de experiencia de usuario UX y WUX ====== {{indexmenu_n>7}} ===== Introducción ===== {{:wiki:icono-modulo-enterprise.png |Versión Enterprise.}}La monitorización de experiencia de usuario consiste en realizar grabaciones de tareas automatizadas tanto de **navegación web** (PWR/WUX) como de interacción con el **escritorio y las aplicaciones del sistema Windows** (PDR). Estas grabaciones pueden consistir desde un clic de un ratón sobre un navegador web, escribir un texto o realizar una búsqueda en la web, hasta abrir una aplicación en el escritorio. Esto permite configurar las funciones y grabarlas de manera automática para su posterior ejecución en busca de resultados. ===== Diferencias entre monitorización UX y WUX ===== Ambos sistemas de monitorización sirven para la ejecución de tareas automatizadas de navegación web mediante el sistema **Pandora Web Robot Daemon** (PWRD). El sistema **UX** realiza estas monitorizaciones mediante el Agente Software instalado en una máquina, mientras que la monitorización **WUX** (//Web User Experience//) se basa en un servidor integrado dentro de Pandora FMS. PWRD es un servicio que provee las herramientas necesarias para automatizar las sesiones de navegación web. Para ello utiliza un archivo que contiene una lista de las acciones necesarias para navegar por el portal web a monitorizar. Adicionalmente, la monitorización UX permite la ejecución de tareas automatizadas que interactúan con el escritorio y las aplicaciones del sistema MS Windows®. Este tipo de tareas no se pueden realizar con WUX. Pandora FMS UX es un sistema que ejecuta tareas automatizadas, entregando a Pandora FMS un informe con los resultados de las ejecuciones, tiempos empleados y capturas de pantalla con los posibles errores encontrados. Si dispone de un sistema de automatización de tareas, Pandora FMS UX también permite ejecutar los guiones (//scripts//) que ya tenga realizados y monitorizar su ejecución. **Es importante concretar el uso de este tipo de monitorización**. Ambos métodos se basan en la ejecución de las monitorizaciones mediante complemento (//plugin//) en los Agentes Software instalados en las máquinas correspondientes. Para la ejecución de transacciones web Pandora FMS utiliza Selenium Engine: * [[:es:documentation:pandorafms:monitoring:13_user_monitorization#experiencia_de_usuario_web_wux_con_selenium_2|Selenium versión 2]]. * [[:es:documentation:pandorafms:monitoring:13_user_monitorization#experiencia_de_usuario_web_wux_con_selenium_3|Selenium versión 3]]. ===== Monitorización PWR UX ===== Teniendo en cuenta las [[:es:documentation:pandorafms:monitoring:13_user_monitorization#diferencias_entre_monitorizacion_ux_y_wux|diferencias entre monitorización UX y WUX]], a grandes rasgos la monitorización UX debe seguir una serie de prerrequisitos relacionados al entorno a monitorizar, con los siguientes pasos previos: * Instalar Java®. * Configurar un perfil en Mozilla Firefox®. * Instalar un servicio Selenium®. * Distribuir PWR en el sistema. * Instalar el IDE de Selenium® para Mozilla Firefox®. * Grabar una sesión PWR. Para la ejecución estándar de sesiones pregrabadas utilice el [[https://pandorafms.com/guides/public/books/plugin-pandora-ux|Plugin Pandora UX]] en su última versión 28-04-2022. ===== Experiencia de Usuario Web (WUX) con Selenium 3 ===== Para el despliegue de Selenium en los servidores WUX se utilizará un pila o //stack// de contenedores para un rápido despliegue y un fácil escalado. ==== Configuraciones previas ==== Deben estar instalados Docker y Docker Compose; //se recomienda el uso de Rocky Linux 8 como sistema operativo base//. Para instalar Docker siga la documentación, de acuerdo a su sistema operativo: [[https://docs.docker.com/engine/install/|https://docs.docker.com/engine/install/]] Para Selenium utilice las imágenes oficiales para la instalación y despliegue del //stack//: [[https://hub.docker.com/u/selenium|https://hub.docker.com/u/selenium]] En el repositorio de Selenium están disponibles distintas imágenes con navegadores. Para Pandora FMS se recomienda contenedores de Mozilla Firefox® y Google Chrome®. ==== Despliegue del stack de Selenium ==== Para desplegar el //stack// de Selenium debe crear un fichero en formato **YAML** con la configuración necesaria: # To execute this docker-compose yml file use `docker-compose -f up` # Add the `-d` flag at the end for detached execution version: "3" services: selenium-hub: image: pandorafms/pandorafms-selenium-hub mem_limit: 2G container_name: selenium-hub-v3 logging: driver: "json-file" options: max-file: "5" max-size: "4m" mode: "non-blocking" environment: - TZ=Europe/Amsterdam ports: - "4444:4444" chrome: image: pandorafms/pandorafms-selenium-node-chrome mem_limit: 2G volumes: - /dev/shm:/dev/shm depends_on: - selenium-hub logging: driver: "json-file" options: max-file: "5" max-size: "4m" mode: "non-blocking" environment: - TZ=Europe/Amsterdam - HUB_HOST=selenium-hub - HUB_PORT=4444 firefox: image: pandorafms/pandorafms-selenium-node-firefox mem_limit: 2G volumes: - /dev/shm:/dev/shm depends_on: - selenium-hub logging: driver: "json-file" options: max-file: "5" max-size: "4m" mode: "non-blocking" environment: - TZ=Europe/Amsterdam - HUB_HOST=selenium-hub - HUB_PORT=4444 En el ejemplo anterior debe realizar las modificaciones necesarias para cada caso, tales como límite de memoria, zona horaria, cantidad de nodos, etcétera. Puede guardar el fichero con el nombre ''docker-compose.yml'' para hacer más fácil su identificación. Para levantar el contenedor con la configuración que ha definido, basta con ejecutar (sustituya '''' con el nombre que escogió para el archivo): docker-compose -f up -d Para comprobar los servicios corriendo en el contenedor use: docker-compose -f ps Para ver el estado y los //logs// de los servicios de Selenium utilice el siguiente comando: docker-compose -f logs Una vez realizadas las comprobaciones pertinentes, para verificar que el //grid// está funcionando correctamente y los //workers// se han registrado tal y como hemos definido en el fichero de configuración será necesario acceder a la siguiente URL: http://:4444/grid/console {{ :wiki:newux4.png }} Si necesita aumentar el número de //workers//: docker-compose -f scale chrome=X firefox=Y ==== Infraestructura del servicio Selenium ==== Selenium funciona como un HUB en el que se levanta un contenedor que actúa como //grid// o cuadrícula donde desplegar los contenedores //worker// que se necesiten. {{ :wiki:newux9.png }} ==== Configuración de Pandora FMS ==== Para la utilización del modo centralizado (WUX) es necesario aplicar la siguiente configuración al servidor de Pandora FMS. Independientemente del modo elegido, una vez iniciado puede empezar a asignar ejecuciones de sesiones de navegación, agregando los parámetros de configuración de WUX Server al fichero de configuración del servidor de Pandora FMS. Agregue la siguiente configuración al final del fichero ''/etc/pandora/pandora_server.conf'' (sustituya '''' por la dirección IP del servidor, si es el mismo servidor que corre el Servidor Pandora FMS use ''127.0.0.1''): wuxserver 1 wux_host wux_port 4444 El fichero de configuración del servidor cuenta con un nuevo //token// para limpiar las sesiones que puedan estar encoladas cada vez que se inicia el servidor de Pandora FMS. clean_wux_sessions 1 #(default) === Gestión de hilos de Pandora FMS === * La gestión de los hilos del ''wuxserver'' se hace automáticamente al iniciar el servicio de ''pandora_server''. * **Se realiza teniendo en cuenta el número de nodos de un navegador MENOR que haya en el //hub// de Selenium.** Por ejemplo: * Si en el //hub// hay configurados 2 nodos de Firefox y 2 de Chrome, el número de hilos del ''wuxserver'' será de 2. * Si en el //hub// hay configurados 1 nodo de Firefox y 4 de Chrome, el número de hilos será de 1. * Si en el //hub// hay configurados 6 nodos de Firefox, el número de hilos será de 6. Tenga en cuenta que cada hilo indica las sesiones que pueden enviarse de manera simultánea desde el ''wuxserver'' al //hub// de Selenium. ==== Anexo: Añadir workers para Internet Explorer y Microsoft Edge ==== En caso de ser necesario lanzar transacciones web contra navegadores de Microsoft®, es necesario configurar una máquina (física o virtual) con la versión de Windows® deseada y configurar el controlador o //driver// siguiendo la documentación oficial. Documentación para la instalación del //driver// de Internet Explorer®: github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver Recomendamos el uso del driver 3.141 en su versión de 32bit para evitar los problemas de rendimiento de la versión de 64bit. Documentación para la instalación del //driver// de Microsoft Edge®: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ Para la ejecución de Selenium, será necesario tener instalado Java® en el dispositivo Windows®. Para comprobar si disponemos de Java®, ejecute el comando: java -version Debe obtener una salida parecida a la siguiente: {{ :wiki:newux1.png }} Es necesario también el fichero **JAR** de Selenium para ejecutar el servidor localmente y registrarlo en nuestro //grid//. Puede obtenerlo en: https://www.selenium.dev/downloads/ {{ :wiki:newux2.png }} Para iniciar el servidor **Microsoft Edge**® se debe ejecutar en una terminal en el directorio donde tengamos el fichero JAR lo siguiente: java -jar selenium-server-standalone-.jar -port 5555 -role node -hub http://:4444/grid/register -browser "browserName=MicrosoftEdge, platform=WINDOWS, maxInstances=1" Para iniciar el servidor **Internet Explorer**® el comando es similar, pero se debe especificar la ruta '''' del //driver// que ha descargado: java -Dwebdriver.ie.driver=IEDriverServer.exe -jar selenium-server-standalone.jar -port 5555 -role node -hub http://ip_selenium_server:4444/grid/register -browser "browserName=internet explorer, platform=WINDOWS, maxInstances=1" {{ :wiki:newux3.png }} Se debe configurar el cortafuegos de MS Windows® para permitir el tráfico en los puertos especificados en el comando de ejecución. En el caso de los ejemplos anteriores: 5555 y 4444. ==== Grabación ==== Debe tener en cuenta que las grabaciones realizadas en Selenium 2 pueden no funcionar correctamente. Para la versión 3 de Selenium serán compatibles tanto las grabaciones antiguas como las nuevas, aunque no se garantiza la compatibilidad total con versiones antiguas. Para poder grabar una nueva sesión, se deberá instalar la extensión **Selenium IDE** en el navegador que se desee. **Firefox** https://addons.mozilla.org/es/firefox/addon/selenium-ide/ **Chrome** https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd El icono {{:wiki:newux10.png}}será el que permita iniciar el entorno de grabación una vez instalada la extensión. Al hacer clic abrirá un menú que permite iniciar nuevos proyectos de grabación. {{ :wiki:newux5.png }} Una vez realizada la grabación se tendrá como resultado algo parecido a esto: {{ :wiki:newux6.png }} Aparte de la funcionalidad provista por Selenium, Pandora FMS dispone de comandos personalizados para extraer información del objetivo a monitorizar. === Comandos === La lista de comandos compatibles para usarlos en Pandora FMS se puede encontrar en el [[:es:documentation:pandorafms:technical_annexes:17_compatible_selenium_commands|siguiente enlace]]. === Recomendaciones y sugerencias al realizar las grabaciones === A continuación se detalla una serie de recomendaciones y consejos a la hora tanto de realizar la grabación de las transacciones con Selenium IDE como para integrar con Pandora FMS los comandos más complejos: * **Dividir la transacción en fases siempre que sea posible.** De esta forma los módulos que se crearán tanto de estado como tiempos y las capturas de pantalla estarán segmentados y será más sencillo localizar dónde ha fallado la transacción. * **Utilizar el comando de Selenium**''set speed'' **y**''wait for'' **para evitar falsos negativos.** Al ejecutar una transacción, los comandos de Selenium no tienen ningún retraso o //delay// por defecto desde que termina uno hasta que se ejecuta el siguiente, y algunos tampoco tienen tiempo de finalización o //timeout//. Esto hace que la transacción se ejecute muy rápidamente en el menor tiempo posible, pero al hacerlo tan rápidamente, si la web es algo lenta o tarda un segundo de más en cargar es posible que el chequeo termine en fallo. Por ejemplo, tras ejecutar un comando ''click'' y cambiar de página, si después tiene un comando que interactúe con un elemento a la nueva página y la carga de esta se retrasa un segundo, no encontrará el elemento en la nueva página y el chequeo acabará en fallo. Para evitar estas situaciones, existe el comando ''set speed'', que añade un //delay// con la cantidad de milisegundos que se le indique en el objetivo o //Target// entre cada comando. Se recomienda establecerlo al inicio de la transacción. También existen, para los casos en los que es sabido que la carga de una página o aparición de un elemento se puedan demorar unos segundos, los comandos ''wait for element present'', ''wait for visible'' y ''wait for text'' en los que puede establecer el tiempo en milisegundos que esperará para que el elemento aparezca en la página antes de marcar la transacción como fallo. Es importante destacar que el uso de estos comandos, si bien aumentan sobremanera la fiabilidad del chequeo, también incrementarán el tiempo que se tarda en ejecutar la transacción. * **Realizar comprobaciones de los elementos.** Para esto se usarán comandos como ''assert'' y ''verify'', en sus distintas vertientes. Acabar una transacción con un clic, por ejemplo, no nos garantiza que la nueva página que deba abrir el elemento en el que se hace clic se abra, solo que es posible hacer clic en el elemento. Si después del clic introducimos un ''verify text'' a un texto que se sepa que solo se va a cargar después de realizar el clic, esa sí sería una forma de comprobar que la página a la que nos manda el clic está disponible. * **Utilizar**''store window handle'' **en transacciones en las que se vaya a cambiar de ventanas.** El cambio de ventana (con un ''select window'') puede dar fallo si no se ha almacenado previamente un identificador a la ventana inicial. * **Utilizar**''xpath'' **cuando falle el //Target// por identificador de CSS o cuando quiera buscar contenido en la página**. Por defecto el grabador de Selenium IDE introduce en el //Target// del elemento el localizador del CSS, pero también graba el localizador por ''xpath'', por tanto es posible ver todos los localizadores que guarda si pulsa en la caja del //Target// en el grabador: {{ :wiki:recomendaciones_ux1.png }} Además, utilizando rutas por ''xpath'', es posible buscar textos dentro de las etiquetas de las páginas para realizar grabaciones mucho más dinámicas. En la captura de pantalla anterior observe que es posible usar un ''xpath'' que busque el texto "Innovadores de la monitorización" en todas las etiquetas ''span'' de la página, no en un locator en concreto. * **Uso correcto del comando**''execute script''. Este comando ejecuta un fragmento de código de JavaScript en la ventana en la que está ubicado en la transacción. Se recomienda leer la guía para conocer su uso y las diferentes opciones que ofrece: [[https://ui.vision/rpa/docs/selenium-ide/executescript|https://ui.vision/rpa/docs/selenium-ide/executescript]] . No obstante, el uso de las variables almacenadas previamente (por un comando ''store text'' por ejemplo) debe ir entre comillas dobles para que el //webdriver// de Pandora FMS las interprete correctamente. Aquí hay un ejemplo de una variable almacenada con ''store text'' y su posterior uso en ''execute script'' de forma que el servidor de Pandora FMS la interpreta correctamente. Note que este uso de la variable entre comillas fallará al ejecutar el script en el grabador de Selenium IDE: {{ :wiki:recomendaciones_ux2.png }} ===== Experiencia de Usuario Web (WUX) con Selenium 2 ===== Selenium 2 ha quedado obsoleto, la versión actual es Selenium 3. ==== Configuraciones previas ==== === Selenium === == Despliegue con Pandora Web Robot Daemon (PWRD) == Pandora FMS Web Robot Daemon es un servicio que provee las herramientas necesarias para automatizar las sesiones de navegación web, utilizando un archivo que contiene una lista de las acciones necesarias para navegar por el portal web del usuario. Viene integrado con el servidor de Pandora FMS y lo podemos encontrar en la carpeta ''/usr/share/pandora_server/util/pwrd'' al instalar el servidor Enterprise (Linux) o en la biblioteca de módulos (Windows). Para descargarlo [[https://pandorafms.com/library/pandora-ux-and-wux-pwr-recorder/|https://pandorafms.com/library/pandora-ux-and-wux-pwr-recorder/]] \\ Contiene: * Binario del navegador Firefox versión 47. * Perfil preconstruido para la ejecución de sesiones de navegación web. * Servidor de automatización de sesiones (Selenium server). == Despliegue del servidor Selenium en sistemas Windows == Prerrequisitos: * Instalar Java® 1.8 en la máquina que dará el servicio. * Instalar Firefox® 47.0.1 (descargable en [[https://ftp.mozilla.org/pub/firefox/releases/47.0.1/|https://ftp.mozilla.org/pub/firefox/releases/47.0.1/]]). * Preparar un perfil de Firefox® que se utilizará para probar las sesiones automatizadas (opcional): [[http://toolsqa.com/selenium-webdriver/custom-firefox-profile/|http://toolsqa.com/selenium-webdriver/custom-firefox-profile/]] * Crear el siguiente directorio: ''C:\PWR'' . Para descargar el ''PWR_Server.zip'': [[https://pandorafms.com/library/pwr-server-for-ux-monitoring/|https://pandorafms.com/library/pwr-server-for-ux-monitoring/]] Haga la siguiente distribución de ficheros: * Descompresión del fichero ''PWR_Server.zip'' a ''C:\PWR\''. * Exportar el perfil de Firefox® a ''C:\PWR\profile'' El uso de un perfil para realizar los chequeos **no es obligatorio**; no obstante, se recomienda su uso sobre todo en caso de utilizar //proxy// o cuando se requiera emplear autocompletado de contraseñas. Para crear un perfil de Firefox® siga los pasos de las siguientes: {{ :wiki:ux1.jpg }} {{ :wiki:ux2.jpg }} Elección del directorio destino: {{ :wiki:ux3.jpg }} Debe iniciar Firefox® con el nuevo perfil para personalizar opciones como el proxy, mostrado de menú emergentes o //popups//, etc: {{ :wiki:ux4.jpg }} A continuación instale el servicio ejecutando el fichero BAT ''service_installer.bat'' que fue proporcionado. Para un correcto funcionamiento del ''service_installer.bat'' tendrá que modificar el contenido, colocando las rutas que existen en el fichero como las tenga instaladas en su máquina. Por ejemplo, en el caso de Java®, podrá servir únicamente como Java® si tiene correctamente configurado el ''PATH'' del mismo; si no, tendrá que dar todo el ''PATH'' dentro del fichero. Finalmente, inicie el servicio: net start PWRSRV Desde este momento ya tendrá el servidor de Selenium corriendo en su máquina. No obstante, puede ejecutarlo a mano (deteniendo el servicio previamente) en caso de que quiera realizar tareas de depurado o //debugging//, mediante el siguiente comando: java -jar C:\PWR\server\selenium-server-standalone-2.53.0.jar -firefoxProfileTemplate C:\PWR\profile -port 4444 -v == Despliegue del servidor Selenium en sistemas GNU/Linux == Prerrequisitos: * Instalar Java® 1.8 en la máquina que dará el servicio. * Instalar Firefox® 47.0.1 (descargable en [[https://ftp.mozilla.org/pub/firefox/releases/47.0.1/|https://ftp.mozilla.org/pub/firefox/releases/47.0.1/]]). * Preparar un perfil de Firefox® que se utilizará para probar las sesiones automatizadas (opcional): [[http://toolsqa.com/selenium-webdriver/custom-Firefox-profile/|http://toolsqa.com/selenium-webdriver/custom-Firefox-profile/]] * Instalar ''xorg-x11-server-xvfb''. * Instalar Java®. El componente Selenium del demonio PWRD requiere Java® para funcionar, para instalarlo ejecute: yum install java Para que PWRD sea capaz de lanzar Firefox® en el servidor GNU/Linux, es necesario instalar, además, ''gtk2'' y ''gtk3'' para poder //virtualizar// un entorno gráfico: yum install xorg-x11-server-Xvfb gtk2 gtk3 Si no está disponible en los repositorios puede encontrar los ficheros ''.rpm'' en los siguiente enlaces: [[ftp://rpmfind.net/linux/centos/6.6/os/x86_64/Packages/xorg-x11-server-Xvfb-1.15.0-22.el6.centos.x86_64.rpm|ftp://rpmfind.net/linux/centos/6.6/os/x86_64/Packages/xorg-x11-server-Xvfb-1.15.0-22.el6.centos.x86_64.rpm]] [[ftp://rpmfind.net/linux/centos/7.4.1708/os/x86_64/Packages/gtk2-2.24.31-1.el7.x86_64.rpm|ftp://rpmfind.net/linux/centos/7.4.1708/os/x86_64/Packages/gtk2-2.24.31-1.el7.x86_64.rpm]] Para realizar la instalación de los paquetes ''.rpm'' de forma manual: yum install xorg-x11-server-Xvfb-1.15.0-22.el6.centos.x86_64.rpm yum install gtk2-2.24.31-1.el7.x86_64.rpm Una vez instalados los prerrequisitos continuamos con la instalación de ''install_pwrd.sh''. Dicho instalador se encuentra por defecto en la carpeta ''/usr/share/pandora_server/util/pwrd/install_pwrd.sh'' y se ejecuta de la siguiente manera: cd /usr/share/pandora_server/util/pwrd/ ./install_pwrd.sh --install Una vez instalado debe iniciar el servicio: /etc/init.d/pwrd start Puede utilizar el siguiente //script// para iniciar el servidor Selenium: #!/bin/sh # Monitoring selenium process if [[ "`ps aux |grep selenium ]]; then exit else if [[ "`ps aux |grep Xvfb ]]; then Xvfb :99 -ac & export DISPLAY=:99 fi export DISPLAY=:99 java -jar /usr/share/pandora_server/util/pwrd/selenium-server-standalone-2.53.1.jar & fi O bien manualmente con los siguientes comandos: $ Xvfb :99 -ac & -> Press Enter to continue $ export DISPLAY=:99 $ java -jar /usr/share/pandora_server/util/pwrd/selenium-server-standalone-2.53.1.jar -port 4444 & También tiene la posibilidad de realizar la instalación personalizada con un usuario y un directorio diferente de la instalación por defecto. **Modos de funcionamiento de PWRD** PWRD provee varios modos de funcionamiento: **Standalone** Modo estándar, inicia una única instancia de PWRD. Cada una de estas instancias irá asociada a un servidor de Pandora FMS. **HUB** Modo concentrador. En este modo el servicio PWRD no evaluará las sesiones de navegación directamente, sino que deberán registrarse "nodos" para ejecutar las tareas. Es el modo //clúster// del servicio PWRD. Cada HUB irá asignado a un servidor de Pandora FMS. == PWRD en modo standalone == PWRD en modo //standalone// iniciará el demonio y lo dejará listo para ejecutar las acciones indicadas por el usuario a través de WUX Server. {{ :wiki:wux_pwrd_standalone.png }} Para iniciar: /etc/init.d/pwrd start Para ver el estado: /etc/init.d/pwrd status Para detener: /etc/init.d/pwrd stop == PWRD en modo HUB == El modo concentrador (HUB) iniciará el demonio como un balanceador de carga. En este modo de trabajo, el sistema irá balanceando la carga entre todos los nodos que se hayan registrado en él, asignando la ejecución de las sesiones de navegación a los nodos en función de su carga de trabajo. Puede ver en todo momento el estado del HUB accediendo a la consola de administración del mismo (sustituya '''' por la dirección IP del HUB): http://:4444/grid/console {{ :wiki:wux_pwrd_hub.png }} Para iniciar: /etc/init.d/pwrd start-hub Para ver el estado: /etc/init.d/pwrd status-hub Para detener: /etc/init.d/pwrd stop-hub == Agregar nodos de PWRD a un HUB == Para agregar un nuevo nodo PWRD necesita: * Un concentrador (PWRD en modo HUB). * Los archivos de PWRD, en la misma o una máquina diferente. * Conectividad TCP/4444 desde el equipo que aloja el nodo hacia el equipo que aloja el HUB. En este modo de trabajo, el servicio procesará todas aquellas solicitudes encoladas **desde el concentrador** (HUB), devolviendo a este los resultados de las ejecuciones. Será el HUB quien "hable" de manera exclusiva con el WUX Server, siendo transparente para quien esté ejecutando las acciones del usuario. Para iniciar y registrar en el HUB (sustituir ''hub'' por la dirección IP del servidor PWRD HUB): /etc/init.d/pwrd start-node http://hub:4444/grid/register Para ver el estado: /etc/init.d/pwrd status-node Para detener: /etc/init.d/pwrd stop-node == Carga de certificados para Firefox == Es posible que algunos de los chequeos configurados se ejecuten contra páginas web que usen certificados autofirmados o firmados por una CA no incluida en las aceptadas por defecto en Firefox®, por lo que en esos casos será necesario cargar el certificado en cuestión en el perfil de Firefox® que se esté usando. Para hacer esto, lo más sencillo es iniciar el navegador en un entorno gráfico, acceder a la URL y agregar el certificado SSL. A continuación se explica cómo hacerlo tanto en MS Windows® como en GNU/Linux®: **Con PWRD desplegado en sistemas Windows** En este caso, ya que cuenta de una vez con un entorno gráfico, solo tiene que iniciar el navegador Firefox® con el perfil que esté usando para los chequeos: {{ :wiki:profile_01.png }} {{ :wiki:profile_02.png }} Una vez iniciado, acceda a la URL con el certificado que quiera cargar y añádalo como excepción para el navegador: {{ :wiki:profile_03.png }} {{ :wiki:profile_04.png }} Otra posibilidad, si se quiere aceptar cualquier certificado SSL y considerando que es un entorno de pruebas y/o monitorización, sería acceder a las opciones de Firefox®, a la pestaña de "Privacidad & Seguridad", y desmarcar el campo "Consultar a los servidores// respondedores //OCSP para confirmar la validez actual de los certificados": {{ :wiki:profile_05.png }} {{ :wiki:profile_06.png }} **Con PWRD desplegado en sistemas Linux** Por lo general, cuando se instala un servidor GNU/Linux®, no se le incluye un entorno de escritorio gráfico, por lo que para poder seguir los mismos pasos que en el caso anterior tiene que hacer una redirección de las X gráficas a un equipo donde sí tenga un entorno de escritorio gráfico. Esto se hace de forma distinta si redirigimos las X a un escritorio gráfico en GNU/Linux o MS Windows®. == Redirigiendo X11 a un escritorio en Linux == Establezca una conexión SSH al servidor PWRD con el parámetro "-X": ssh -X user@pwrd_ip_address Hecho esto, al lanzar el navegador Firefox, podrá ver como se muestra en el escritorio: firefox -p En una instalación por defecto solo veremos el perfil "default", por lo que es recomendable hacer tal como hizo en la instalación en MS Windows® y crear un nuevo perfil a utilizar: {{ :wiki:profile_07.png }} {{ :wiki:profile_08.png }} {{ :wiki:profile_09.png }} En caso de guardar el perfil en una ruta distinta a ''/opt/firefox_profile'' es necesario editar el //script// de arranque del PWRD ''/etc/init.d/pwrd'' para indicar la ruta al nuevo perfil: PWROPTS=" -firefoxProfileTemplate /path/to/profile/folder" Con el perfil creado, puede iniciar el navegador: {{ :wiki:profile_10.png }} Una vez iniciado, acceda a la URL con el certificado que se quiera cargar y añadir como excepción para el navegador: {{ :wiki:profile_11.png }} {{ :wiki:profile_12.png }} Otra posibilidad, si se quiere aceptar cualquier certificado SSL y considerando que es un entorno de prueba y/o monitorización, sería acceder a las opciones de Firefox, a la pestaña de "Avanzado > Certificados", y desmarcar el campo "Consultar a los servidores //respondedores //OCSP para confirmar la validez actual de los certificados": {{ :wiki:profile_13.png }} {{ :wiki:profile_14.png }} == Redirigiendo X11 a un escritorio en Windows == En el caso de Windows, primero tiene que instalar un servidor de X para poder hacer la redirección, como por ejemplo **Xming**. Una vez instalado e iniciado, puede hacer la redirección de las X. Usando el cliente SSH Putty, vaya al apartado "Conection > SSH > X11" antes de hacer la conexión, y asegúrese de marcar la opción "Enable X11 forwarding" así como de rellenar el campo "X display location" como "localhost:0": {{ :wiki:profile_15.png }} Después vuelva al apartado "Session" y establezca la conexión: {{ :wiki:profile_16.png }} Una vez establecida la conexión, si lanza el navegador Firefox® en el servidor PWRD, podremos visualizarlo en el escritorio de MS Windows®. firefox -p En una instalación por defecto solo veremos el perfil "default", por lo que sería recomendable hacer como en la instalación en Windows® y crear un nuevo perfil el cual utilizar: {{ :wiki:profile_17.png }} {{ :wiki:profile_18.png }} {{ :wiki:profile_19.png }} En caso de guardar el perfil en una ruta distinta a ''/opt/firefox_profile'', será necesario editar el //script// de arranque del PWRD ''/etc/init.d/pwrd'' PWROPTS =" -firefoxProfileTemplate /path/to/profile/folder" Con el perfil ya creado, ya puede iniciar el navegador web: {{ :wiki:profile_20.png }} Una vez iniciado, acceda a la URL con el certificado que quiera cargar y añádalo como excepción para el navegador web: {{ :wiki:profile_21.png }} {{ :wiki:profile_22.png }} Otra posibilidad, si quiere aceptar cualquier certificado SSL, sería ir a las opciones de Firefox, ir a "Privacidad y Seguridad" y luego "Certificados", y desmarcar el campo "Consultar a los servidores respondedores OCSP para confirmar la validez actual de los certificados": {{ :wiki:profile_23.png }} {{ :wiki:profile_24.png }} === Configuración del servidor de Pandora FMS === Para la utilización del modo centralizado (WUX) es necesario aplicar la siguiente configuración al servidor de Pandora FMS. Independientemente del modo elegido, una vez iniciado puede empezar a asignar ejecuciones de sus sesiones de navegación, agregando los parámetros de configuración de WUX Server al fichero de configuración del servidor de Pandora FMS. Suponiendo que ha desplegado el servidor PWRD en el mismo servidor en que corre el servidor Pandora FMS, **agregaría** la siguiente configuración en ''/etc/pandora/pandora_server.conf''> wuxserver 1 wux_host 127.0.0.1 wux_port 4444 wux_timeout 30 El parámetro ''wux_timeout'' establece el tiempo máximo de las transacciones a 30 segundos: **de ser necesario ajuste este valor a su entorno particular.** == Gestión de hilos en PFMS == En caso de utilizar el PWRD en modo //hub//: * La gestión de los hilos del ''wuxserver'' se hace automáticamente al iniciar el servicio de ''pandora_server''. * **Se realiza teniendo en cuenta el número de nodos de un navegador MENOR que haya en el //hub// de Selenium.** Por ejemplo: * Si en el //hub// hay configurados 2 nodos de Firefox y 2 de Chrome, el número de hilos del ''wuxserver'' será de 2. * Si en el //hub// hay configurados 1 nodo de Firefox y 4 de Chrome, el número de hilos será de 1. * Si en el //hub// hay configurados 6 nodos de Firefox, el número de hilos será de 6. Tenga en cuenta que cada hilo indica las sesiones que pueden enviarse de manera simultánea desde el ''wuxserver'' al //hub// de Selenium. === Grabador de sesiones (PWR) === La nueva versión de Selenium IDE es compatible a partir de la versión 745 de Pandora FMS (Selenium 3). Las transacciones grabadas en Selenium 2 no se verán afectadas. Antes de monitorizar una experiencia de usuario debe hacer la grabación. Dependiendo del tipo de tecnología que haya elegido utilizará un sistema de grabación u otro. Las sesiones grabadas con Selenium 2 sólo podrán realizarse con Firefox®. Para realizar la grabación de una navegación con PWR es necesario el grabador PWRD disponible en la biblioteca de módulos: [[https://pandorafms.com/library/pandora-ux-and-wux-pwr-recorder/|https://pandorafms.com/library/pandora-ux-and-wux-pwr-recorder/]] Contiene: * Navegador web [[https://ftp.mozilla.org/pub/firefox/releases/47.0.1/|Firefox versión 47.0.1]]. * Extensión [[https://addons.mozilla.org/es/firefox/addon/selenium-ide/|Selenium IDE]]. Se debe iniciar el grabador ''PWR_recorder.exe'' {{:wiki:pwr_recorder.png}}. Automáticamente iniciará Firefox con el entorno preparado para grabar sesiones PWR: {{ :wiki:pwr_recorder_main.png }} Tras acceder al IDE de Selenium se puede iniciar así la grabación de experiencia de usuario: {{ :wiki:ux10.jpg }} Navegue por el sitio web a monitorizar; las diferentes acciones de cada paso hecho irán apareciendo en el grabador. Para detener la grabación utilice el siguiente botón, situado en la parte superior derecha del grabador: {{ :wiki:ux11.jpg }} Una vez completadas las acciones, realice las comprobaciones sobre la página; por ejemplo, verificar la existencia de un texto determinado para asegurar que la página cargada es la correcta. Para ello, hacer clic secundario sobre una sección de texto en la ventana del navegador mientras continúa la grabación, y seleccionar la opción //verifyText//: {{ :wiki:ux13.jpg }} Aparecerá un nuevo paso en el grabador indicando la acción de comprobación de texto indicada: {{ :wiki:ux14.jpg }} Puede reproducir la secuencia completa mediante el botón **Play entire test suite** y comprobar que finaliza correctamente: {{ :wiki:ux15.jpg }} Una vez verificada la validez de la secuencia de navegación, guarde (Archive → Save Test Case) para ejecutarla posteriormente con Pandora FMS UX. El fichero resultante será un documento HTML que Pandora FMS UX interpretará. == Grabar una sesión transaccional para PFMS WUX == Pandora FMS WUX permite dividir la monitorización de la navegación de un sitio web en múltiples módulos, que representarán cada uno de los pasos realizados. Para insertar un nuevo punto de control y generar los módulos de fase (hasta ese punto) haga clic secundario en el punto donde desea identificar el comienzo de fase. {{ :wiki:pwrd_recorder_transaction.png }} Como comentario coloque el siguiente texto: phase_start: La fase englobará el tiempo y resultado de todos los comandos que se encuentren hasta el siguiente comentario: phase_end: Todos los comandos que se ejecuten entre una etiqueta ''phase_start'' y ''phase_end'' se englobarán dentro de esa fase. {{ :wiki:pwrd_recorder_transaction2.png }} Se debe tener en cuenta que las grabaciones realizadas en Selenium 3 pueden no funcionar correctamente. ==== Ejecución de transacciones web ==== === Ejecución estándar === Para lanzar sesiones pregrabadas de PWR llame al ejecutable ''pandora_ux_x64.exe'', el cual puede descargar del siguiente enlace: [[https://pandorafms.com/library/user-experience-pandora-ux|https://pandorafms.com/library/user-experience-pandora-ux]] Indique que el modo de trabajo es PWR, y el archivo que contiene las directrices de la sesión. En la ruta indicada en el parámetro ''-folder'' se guardarán las capturas de pantalla a mostrar en caso de error (parámetro opcional). También se puede introducir el número de reintentos consecutivos en caso de fallo (parámetro opcional). Su ejecución en Windows es: pandora_ux_x64.exe -exe PWR -script C:\tests\std.html -retries 3 Se devolverán los siguientes módulos: * UX_Status_> si la secuencia ha tenido éxito o ha fallado. * UX_Time_> tiempo empleado en completar la secuencia. * UX_Snapshot_> captura de pantalla con el último punto antes del error, si lo hubiere. Ejemplo de salida con ejecución correcta: generic_proc UX UX generic_data UX UX UX_Status_std.html Ejemplo de salida con ejecución incorrecta: generic_proc UX UX generic_data UX UX UX_Status_std.html async_string UX UX UX_Status_std.html Si todo ha resultado correcto puede añadir la línea de ejecución al agente de Pandora FMS instalado en la máquina que haya preparado para ejecutar los chequeos. La línea a añadir al fichero de configuración del agente tendrá un //aspecto similar// a este (en una sola línea): En Windows®: module_plugin C:\Users\pfms\Documents\Product\UX-Trans\UX\pandora_ux_x64.exe -exe PWR -script C:\Users\pfms\Documents\Product\UX-Trans\PWR\sesion.html -folder En GNU/Linux: module_plugin /usr/share/pandora_server/tool/pwrd/firefox/pandora_ux.64 -exe PWR -script /usr/share/pandora_server/tool/pwrd/firefox/TestUX.html -pwr_port 4444 Una vez que se encuentre reportando la información al servidor de Pandora FMS verá cómo aparecen los módulos correspondientes. Puede habilitar la vista en //modo jerárquico// para ver la relación entre ellos: {{ :wiki:ux33.jpg }} Como se ha indicado anteriormente, verá el resultado de la ejecución (si ha tenido éxito o no) en el módulo ''UX_Status_sesion.html'', el tiempo empleado (en segundos) en el módulo ''UX_Time_sesion.html'', y otro con la captura de pantalla del último error en ''UX_Snapshot_sesion.html'', que en este caso se encuentra vacío. Será sobre estos módulos sobre los que puede crear alertas y mostrar las gráficas individuales de cada módulo. === Ejecución basada en fases === Si tiene una grabación transaccional con Pandora FMS UX PWR, como se indicó en los apartados anteriores, será el propio sistema quien genere los módulos necesarios para identificar cada una de las fases indicadas, por lo que la ejecución no variará con respecto al caso anterior; únicamente indique el fichero html correspondiente, que en este caso contendrá las diferentes fases. Ejemplo de ejecución en Windows: pandora_ux_x64 -exe PWR -script C:\tests\std.html --folder Se devolverán los siguientes módulos por fase: * UX_Time_nombre_proyecto.fase_orden * UX_Status_nombre_proyecto.fase_orden Si hay alguna fase con error, se creará también el módulo siguiente: * UX_Snapshot_nombre_proyecto.fase_orden Mostrará una imagen de la web en el momento del error. También se devolverán los módulos de resumen globales identificados con los siguientes nombres: * UX_Global_Time_nombre_proyecto * UX_Global_Status_nombre_proyecto * UX_Global_Snapshot_nombre_proyecto Y se mostrará una imagen de la web en el momento del error. La línea de ejecución del agente sería la misma que en el caso anterior, pero con el fichero html que contiene las fases estipuladas. Cuando la información esté llegando correctamente al servidor de Pandora FMS, se visualizará en forma de módulos de esta forma. Habilitar la vista en //modo jerárquico// en la lista de módulos ayuda a visualizar la información de forma mucho más clara: {{ :wiki:ux34.jpg }} Accediendo a la sección //WUX// del agente podrá ver detalles adicionales de la transacción y sus fases. === Recuperación de valores === Pandora FMS UX es capaz de recuperar datos directamente de la web durante la ejecución de los tests de experiencia de usuario. Para utilizar esta nueva característica, lo único que hay que agregar es la **orden de capturar** en forma de comentario en el test de Selenium: {{ :wiki:pwr_recorder_getvalue.png }} En el ejemplo adjunto, se recuperan dos valores después de realizar la navegación, y se representarán como módulos en Pandora FMS (número y resultado en texto). Los pasos para ordenar al //plugin// la recogida de datos son los siguientes: * Agregar un nuevo comentario al fichero de pruebas con el grabador Selenium. * Agregar la directiva al comentario. Directiva de captura de datos getValue;;; ¿Qué representa cada campo separado por punto y comas? * **getValue**: Instrucción para el sistema UX. * ****: Nombre del módulo. El nombre del módulo tal y como aparecerá en Pandora FMS. * **** (Tipo de dato del módulo): Qué tipo se utilizará; puede ser cualquiera de los [[:es:documentation:pandorafms:installation:05_configuration_agents#module_type|tipos de datos]] soportados por Pandora FMS * **** (Expresión regular Perl a utilizar para la captura de datos): Debe ser una expresión regular Perl, con la orden de captura de información entre paréntesis. Por ejemplo, en el texto:

The temperature of the solar panel is: 54º C

Si quiere recuperar la temperatura para llevar un seguimiento del valor, especifique la expresión regular como sigue: (\d+\.*\,*\d*).* De tal manera que recuperará el valor 54 del ejemplo, o posibles valores con posiciones decimales. La directiva de captura completa quedaría como sigue: getValue;solar panel temperature;generic_data;(\d+\.*\,*\d*).* Los comandos que generan módulos son: * **getValue**: Extrae un valor. getValue;module_name;module_type;REGEX_string_match * **getVariable**: (Versión NG 753 o superior ) Extrae un valor específico de una variable. getVariable;module_name;module_type;var_name * **getScreenshot**: Extrae una captura de pantalla. getScreenshot;module_name \\ ''getValue'' es un comando que pertenece al tipo que [[:es:documentation:pandorafms:technical_annexes:17_compatible_selenium_commands#comandos_que_generan_modulos|generan los módulos]] PFMS. Visita el enlace anterior para saber más sobre ellos. \\ Todos los comandos propios deben aparecer en el fichero de test (.side) como comentarios. En caso contrario, fallará a la hora de probar el test en la extensión de Selenium. ===== Gestión y visualización de datos ===== ==== Crear un módulo de análisis web en Pandora FMS Console ==== Una vez tenga una sesión de navegación grabada, es hora de desplegarlo como Módulo en la Consola de Pandora FMS. Para ello acceda a **cualquier agente asociado a un servidor con la funcionalidad WUX habilitada** y cree un Módulo de tipo Análisis web seleccionando la opción **Create a new web analysis module**: {{ :wiki:wux_module.png }} Haga clic en el botón **Create** y luego debe rellenar todos los campos que presenta el formulario: {{ :wiki:wux_form.png }} **Name** Módulo WUX (Padre); recuerde que todos los submódulos con los resultados de la monitorización serán dependientes de este nuevo módulo. **Run performance tests** Especifica el lanzar pruebas de rendimiento, es decir, monitorizar no solo la experiencia de navegación, sino también las estadísticas de rendimiento del acceso al sitio web objetivo. **Execute tests from** Indica el servidor WUX que ejecutará el chequeo. **Browser** Navegador web con el cual ejecutar el chequeo. El navegador indicado debe figurar en el //grid// o servidor de Selenium utilizado por el servidor WUX. **User data dir** (//Versión 764 o posterior//) Opcional: Permite especificar un directorio para datos. La opción **User data dir** solamente trabaja en Google Chrome web browser. **Profile** (//Versión 764 o posterior//) Opcional: Permite especificar un perfil de usuario. Si el nombre de perfil no existe, utiliza el perfil por defecto. La opción **Profile** solamente trabaja en Google Chrome web browser. **Accept insecure certificates** Si se habilita se aceptará cualquier certificado no seguro (autofirmado, expirado, etc.) que forme parte de la navegación. Esta opción solo está disponible para los navegadores Google Chrome® y Mozilla Firefox®, y solo tendrá efecto si el chequeo es ejecutado por un servidor de Selenium 3. **Historical data** Guarda o no la información histórica de los módulos que monitorizan esta experiencia de usuario. **Área de texto** Copie (o cargue con el botón **Browse…**) el contenido de los ficheros de la sesión de navegación que ha grabado previamente. {{ :wiki:wux_form_2.png }}**FF interval** Intervalo de tiempo de ejecución del módulo (en segundos). **Retries** Número de reintentos de lanzamiento del módulo. === Macros personalizadas === {{ :wiki:wux_form_3.png }} El funcionamiento de las macros personalizadas implica la sustitución de determinadas cadenas de texto presentes en el fichero de sesión de navegación por ciertos valores personalizables. En el caso de módulos de análisis web, se ha mejorado esta funcionalidad, permitiendo **macros dinámicas** que permiten que estos valores se traduzcan en **fechas y horas** variables. //¿Por qué esta funcionalidad?// Suponga que necesita monitorizar, mediante una sesión de navegación, el correcto funcionamiento de una aplicación web de reserva de salas de reuniones. Si estableciera una fecha y hora fija a la hora de rellenar los datos del formulario, es posible que el sistema cancelase la reserva porque en algún momento quede en el pasado; por ejemplo, podría estar intentando reservar una sala para la semana pasada. También es posible que encontremos con un máximo de tiempo para poder efectuar esa reserva, y que el sistema nos obligue a reservar la sala dentro de un periodo de tiempo concreto, por ejemplo no superior al mes vigente. Para evitar tener que editar la macro cada pocos días, y despreocuparse del apartado de configuración, puede usar las macros dinámicas, indicando al sistema que reserve la sala siempre para el día siguiente al momento de realizar el test. Para poder usar esta funcionalidad, los valores deberán tener un formato específico, logrando las siguientes sustituciones posibles: * ''@DATE_FORMAT'': fecha/hora actual con formato definido por el usuario. * ''@DATE_FORMAT_nh'': horas. * ''@DATE_FORMAT_nm'': minutos. * ''@DATE_FORMAT_nd'': días. * ''@DATE_FORMAT_ns'': segundos. * ''@DATE_FORMAT_nM'': mes. * ''@DATE_FORMAT_nY'': años. Donde “n” puede ser un número sin signo (positivo) o negativo. Y FORMAT sigue el estándar de [[http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.02/lib/POSIX/strftime/GNU.pm|strftime de Perl]] Ejemplos: @DATE_%Y-%m-%d %H:%M:%S @DATE_%H:%M:%S_300s @DATE_%H:%M:%S_-1h ==== Visualización de los datos ==== La información generada por WUX se visualizará en forma de módulos de la siguiente forma. El habilitar la vista en //modo jerárquico//, en la lista de módulos, ayudará a visualizar la información de forma mucho más clara: {{ :wiki:wux_modules.png }} Dentro de esta jerarquía encontraremos los siguientes módulos: * //módulo//_Global_Status: Indicará el estado **global** de la navegación completa. * En el caso de que exista una grabación da el estado de la grabación WUX. * En el caso que se habilite los [[:es:documentation:pandorafms:monitoring:13_user_monitorization#crear_un_modulo_de_analisis_web_en_pandora_fms_console|run performance Test]]// pero no se incluya la grabación//, el estado del módulo Global Status es el de la comprobación que se realiza al obtener estos módulos. * //módulo//_Global_Time: Indicará el tiempo **global** empleado en la navegación completa. * //módulo//_Global_Screenshot: Contiene una imagen con el resultado del error de navegación, **solo se generará en caso de error**. * //módulo//_Phase X: //Nombre de ////fase//_Status: Indicará el estado de la navegación durante la fase X. * //módulo//_Phase X: //Nombre de ////fase//_Time: Indicará el tiempo empleado en la fase X. Ejemplo: Vista de captura de error. {{ :wiki:wux_screenshot.png }} Atención: Si ha actualizado desde versiones anteriores a Pandora FMS 7.0NG 712 debe realizar un pequeño cambio. Para poder almacenar las capturas de pantalla generadas por WUX Server, deberá lanzar las siguientes operaciones en su esquema de base de datos: alter table tagente_estado modify column datos mediumtext; alter table tagente_datos_string modify column datos mediumtext; Si no realiza estas acciones las capturas podrían verse cortadas. Accediendo a la sección //WUX// del agente puede ver detalles adicionales de la transacción y sus fases: {{ :wiki:wux_nueva_imagen.png }} Las estadísticas del sitio web se resumen en los siguientes conceptos: * **Stats_TT**: Tiempo total en obtener el sitio web. * **Stats_TDNS**: Tiempo total en resolver la dirección IP del objetivo. * **Stats_TTCP**: Tiempo empleado en conectar vía TCP. * **Stats_TSSL**: Tiempo empleado en establecer comunicación SSL. * **Stats_TST** : Tiempo transcurrido hasta que inició la transferencia de datos. * **Stats_TTC**: Tiempo transfiriendo datos; agrupará todos los tiempos de transferencia de recursos. * **Stats_TTR**: Tiempo empleado en transferir el contenido de la página. * **Stats_TTR_main**: Tiempo empleado en transferir el código HTML. * **Stats_TTR_image**: Tiempo empleado en transferir los recursos de tipo imagen (''png|jpg|jpeg|bmp|tiff|gif|webp|svg''). * **Stats_TTR_css**: Tiempo empleado en transferir las hojas de estilo. * **Stats_TTR_js**: Tiempo empleado en transferir los ficheros JavaScript. ==== Asignar alertas a un módulo de análisis web ==== Las alertas asociadas a los módulos de análisis web siguen la misma dinámica de funcionamiento que todo el sistema de alertas en Pandora FMS. Por compatibilidad se recomienda asignar las plantillas de alertas sobre los subelementos autogenerados por el módulo de análisis web, como por ejemplo: * El estado de la navegación global. * Alertas sobre umbrales de tiempos. * Alertas con plantilla de aviso puesta en "siempre" para los módulos captura de imagen de resultados. ==== Nuevos widgets para Dashboards ==== Para poder representar la información de la navegación de usuario, se han agregado dos nuevos tipos de widget: **Widget de estado de las fases de navegación** {{ :wiki:widget_wux_fases.png }} **Widget de estadísticas del sitio web** {{ :wiki:widget_wux_stats.png }} ===== Experiencia de usuario de escritorio (PDR) ===== ==== Despliegue del sistema PDR ==== {{:wiki:icono-modulo-enterprise.png |Versión Enterprise.}} **El sistema PDR únicamente funciona en sistemas Windows®**, y una vez en ejecución por el Agente de Pandora FMS éste debe correr en **modo proceso**, ya que de correr en modo servicio no funcionará. Además, no será posible bloquear la sesión de escritorio, por lo que se recomienda su uso en máquinas virtuales. Prerrequisitos: * Sistema Windows® en modo escritorio con auto arranque y auto inicio de sesión. Para lograr dicha configuración ejecute: **Para versiones anteriores a Windows 10®**: control userpasswords2 Y desmarque la casilla **Users must enter a user name and password to use this computer**: {{ :wiki:ux5.jpg }} Haga clic en el botón **Ok** e introduzca el nombre de usuario y su contraseña. **Para Windows 10®**: Una manera de habilitar el auto inicio en MS Windows®, versión 10, es utilizar Powertoys de Sysinternals (disponible en la [[https://docs.microsoft.com/en-us/sysinternals/downloads/autologon|sección de descargas]] de la documentación de Microsoft®) y habilitar el usuario que realizará la monitorización, por ejemplo: {{ :wiki:autologon_enable_-_sysinternals.png }} Para preparar el entorno cree el siguiente directorio: C:\PDR Y descomprima el fichero ''PDR.rar'' (proporcionado en el siguiente enlace [[https://pandorafms.com/library/pdr-cmd-for-ux-monitoring/|https://pandorafms.com/library/pdr-cmd-for-ux-monitoring/]]) en dicha carpeta. ==== Ejecución de sesiones PDR ==== Para iniciar la grabadora, ejecute el siguiente script: C:\PDR\pdr {{ :wiki:scriptwux22332.png }} Tras el proceso de carga, entra en el entorno de grabación: {{ :wiki:ux18.jpg }} Seleccione las acciones que desea realizar y haga una captura de pantalla en la zona donde desea aplicarlas. A continuación puedes encontrar una lista con las más comunes. Acciones generales: {{ :wiki:ux19.jpg |ux19.jpg}} Acciones de control de flujo: {{ :wiki:ux20.jpg |ux20.jpg}} Más ayuda lingüística: [[http://sikulix-2014.readthedocs.io/en/latest/index.html|http://sikulix-2014.readthedocs.io/en/latest/index.html]] Al grabar el proyecto, se creará una carpeta que contendrá los siguientes elementos: * Fichero .py con el código del script de automatización. * Imágenes para controlar la navegación. Un ejemplo sencillo de ejecución podría ser la supervisión de que su calculadora de Windows funciona correctamente. Mostraremos todo el proceso a través de capturas de pantalla. 1. Elija la acción "click" y el área donde desea aplicar la acción. La pantalla cambiará al modo "area selection": {{ :wiki:ux21.jpg |ux21.jpg}} {{ :wiki:ux22.jpg |ux22.jpg}} 2. Introduzca la acción //type// y el texto "calc". A continuación, introduzca las acciones para esperar a que aparezca la zona de la "calculadora" y haga clic en ella. A continuación, espere a que aparezca la ventana de la calculadora para introducir las siguientes acciones de esta manera: {{ :wiki:ux23.jpg |ux23.jpg}} 3. A continuación, haga clic en los botones correspondientes, seleccionando las zonas como en los pasos anteriores. 4. Por último, guarde el proceso y ejecútelo utilizando la función en el botón **Run**. Comentarios importantes: * Si hace doble clic en cualquiera de las imágenes dentro del entorno de grabación, podrá ajustar los detalles de la captura de pantalla de control, como seleccionar el punto exacto en el que hacer clic. * Es muy recomendable introducir acciones como //wait// después de cada clic para asegurarse de que la ejecución no se detendrá debido a un retraso del sistema operativo. * La grabadora buscará el área que se vea igual que la captura de pantalla, por lo que se debe tener especial cuidado en caso de que algo se resalte cuando el botón se encuentre arriba (por ejemplo, los botones de la calculadora cambian a color naranja cuando se pasa el ratón sobre ellos). En la carpeta donde guardó la grabación podrá ver los archivos de imagen y el archivo Python. {{ :wiki:ux24.jpg |ux24.jpg}} **__Nota__:** Puede personalizar la captura realizada desde el motor de grabación PDR utilizando el siguiente código: ## OPTIONAL ##capture file names import shutil file = "C:\probes\screenshot_prueba.sikuli.png" focusWindow = App.focusedWindow() regionImage = capture(focusWindow) shutil.move(regionImage, file) Esto creará una imagen de la ventana activa en el destino indicado por el archivo, con la que podrá hacer una captura de pantalla justo cuando lo desee. Puede personalizar la captura de pantalla utilizando coordenadas. Para ello, especifique la siguiente sintaxis: capture(x, y, w, h) Donde: X: posición horizontal del rectángulo para tomar una captura de pantalla. Y: posición vertical del rectángulo para tomar una captura de pantalla. W: Ancho de la pantalla. H: Altura de la pantalla. === Grabar una sesión transaccional con Pandora FMS UX PDR === No es necesario grabar una sesión específica; simplemente grabe las sesiones que necesite en //scripts// diferentes. Será Pandora FMS UX quien gestione la devolución de resultados para organizarla como una transacción compleja. En el siguiente punto veremos cómo hacer la llamada de la ejecución para que funcione correctamente. Si va a realizar varias grabaciones para crear un proceso transaccional debe tener cuidado de que al realizar la grabación los elementos que busca estén presentes. Se recomienda la ejecución manual de las grabaciones que quiera utilizar en un único proceso transaccional de forma seguida, para asegurar de que las acciones transcurren según lo esperado. En el siguiente ejemplo se ha realizado un proceso de grabación que constituirá la segunda fase del proceso empleado en el ejemplo anterior. Vamos a tomar el resultado devuelto por la calculadora y pegarlo en un bloc de notas. La grabación presenta el siguiente aspecto: {{ :wiki:ux40.jpg }} Y hemos incluido otra secuencia que consistirá en guardar el archivo de texto en una ubicación determinada, sobreescribiendo el anterior. Esto otorga gran flexibilidad, ya que abre la posibilidad de monitorizar paralelamente estos ficheros reflejando la información que necesites en todo tipo de variedad de chequeos de aplicaciones pesadas de escritorio. Esta tercera secuencia consiste en los siguientes pasos: {{ :wiki:ux43.jpg }} ==== Ejecución de sesiones PDR ==== === Ejecución estándar === Para lanzar sesiones pregrabadas de PDR, indique que el modo de trabajo es la ruta al fichero ''pdr.cmd'' desplegado en el punto correspondiente, el argumento de dicho fichero ''-r'', el archivo que contiene las directrices de la sesión (''-script''), el directorio donde almacenar las capturas de pantalla (''-folder'') terminando en ‘\’, el cual es opcional, donde guardar las capturas en la carpeta donde está ubicado el ''pdr''. También se puede introducir el número de reintentos consecutivos en caso de fallo (parámetro opcional). En la ejecución siguiente también se personaliza la captura de pantalla para recoger únicamente la ventana activa: pandora_ux_x64 -exe C:\PDR\pdr -args -r -script C:\pandora_ux\calculadora.sikuli -folder C:\pandora_ux\ -ss_config active -retries 3 Se devolverán los siguientes módulos: * UX_Time_nombre_proyecto. * UX_Status_nombre_proyecto. * UX_Control_Snapshot_nombre_proyecto (solo en la primera ejecución). Si hay alguna fase con error, se creará también el módulo siguiente: * UX_Snapshot_nombre_proyecto. Y mostrará una imagen de la ventana activa (con ''-ss_config active'') del momento del error. Ejemplo de salida con ejecución correcta: generic_proc UX UX generic_data UX UX UX_Status_calculator.sikuli async_string UX UX UX_Status_calculator.sikuli Ejemplo de salida con ejecución fallida: generic_proc UX UX generic_data UX UX UX_Status_std.html async_string UX UX UX_Status_std.html Si todo ha resultado correcto puede añadir la línea de ejecución al agente de Pandora FMS instalado en la máquina Windows® como //plugin// de Agente. La línea a añadir al fichero de configuración del Agente tendrá un aspecto similar a este (en una sola línea): module_plugin C:\Users\pfms\Documents\Product\UX-Trans\ux\pandora_ux_x64.exe -exe C:\PDR\pdr.bat -args -r -script C:\PDR\calc.sikuli -folder C:\PDR\ -ss_config active -checkpoint -post "taskkill /F /IM calc.exe" Como puede verse, esta ejecución tiene algunas opciones más. El parámetro ''-checkpoint'' sirve para mostrar una captura del resultado final aunque no exista fallo; ''-post'' ejecutará acciones una vez terminada la reproducción de la sesión. En este caso, vamos a cerrar el proceso de calculadora que ha iniciado la grabación, para evitar que el sistema termine fallando por exceso de ventanas abiertas o procesos similares. Ahora que el Agente tiene la línea de ejecución //module_plugin// lista, debe lanzarlo en modo proceso, ejecutando lo siguiente desde línea de comando como administrador: "%ProgramFiles%\pandora_agent\PandoraAgent.exe" --process Al lanzarlo podrá ver cómo se ejecutan las acciones de forma automática conforme a la grabación. Desde este momento **el proceso de agente no debe cerrarse**, y tampoco se debe iniciar sesión en la máquina por escritorio remoto, o las ejecuciones podrían interrumpirse. La máquina debe quedar sin manipular, por esta razón es por la que se recomienda su uso en máquinas virtuales. Si ya se tienen tests de automatización, se pueden incluir en Pandora FMS con la siguiente ejecución. pandora_ux.64 -exe -args -script * '''': //exe// (ejecutable) del sistema de automatización. * '''': Argumentos del sistema. * '''': Ruta ficheros de prueba. === Ejecución basada en transacción === Si tenemos grabados diferentes procesos con PDR y hemos probado que funcionan al reproducirlos de forma continuada, haremos la ejecución del siguiente modo: C:\Users\pfms\Documents\Product\UX-Trans\ux\pandora_ux_x64.exe -exe C:\PDR\pdr.cmd -args -r -t calculadora_trans -script C:\PDR\calc.sikuli,C:\PDR\savecalc.sikuli,C:\PDR\savefile.sikuli -folder C:\PDR\ -ss_config active Como puede observarse, simplemente indicaremos la ruta del nuevo //script// en el parámetro ''-script'' separada por una coma del script anterior y utilice el parámetro ''-t'' con el nombre de la transacción que englobará las diferentes fases. Si tuviera un proceso con más fases seguiría la misma lógica; por ejemplo: pandora_ux_x64.exe -exe C:\PDR\pdr.cmd -args -r -t proceso_transaccional -script C:\PDR\script1,C:\PDR\script2,C:\PDR\script3,C:\PDR\script4 -folder C:\PDR\ -ss_config active La línea a añadir al fichero de configuración del Agente, para este caso, será la siguiente: module_plugin C:\Users\pfms\Documents\Product\UX-Trans\ux\pandora_ux_x64.exe -exe C:\PDR\pdr.cmd -args -r -t calculadora_trans -script C:\PDR\calc.sikuli,C:\PDR\savecalc.sikuli,C:\PDR\savefile.sikuli -folder C:\PDR\ -ss_config active -checkpoint -post "taskkill /F /IM calc.exe" Gracias al parámetro ''-checkpoint'' puede ver capturas del resultado final de cada fase en la consola de Pandora FMS. Se devolverán los siguientes módulos por fase: * UX_Time_nombre_proyecto.fase_orden. * UX_Status_nombre_proyecto.fase_orden. Si hay alguna fase con error, se creará también el módulo siguiente: * UX_Snapshot_nombre_proyecto.fase_orden. También mostrará una imagen de la web en el momento del error, en caso de que se produzca. También se devolverán los módulos de resumen globales identificados con los siguientes nombres: * UX_Global_Time_nombre_proyecto. * UX_Global_Status_nombre_proyecto. * UX_Global_Snapshot_nombre_proyecto. Cuando el agente se encuentre corriendo en modo proceso y los módulos sean recuperados por Pandora FMS los veremos en la consola. De nuevo, mediante la vista en //modo jerárquico// podremos mostrar con claridad la relación entre los módulos mostrados, delimitando claramente las diferentes fases: {{ :wiki:ux41.jpg }} Y en el visor de transacciones podemos ver el detalle de las fases y la gráfica con los tiempos: {{ :wiki:ux42.jpg }} Las capturas de error solo se mostrarán cuando el cliente UX (PWR) y el servidor PWR estén corriendo en la misma máquina. En caso contrario, el directorio de entrega de las imágenes por parte del servidor PWR deberá ser accesible por el cliente para poder mostrar la imagen en Pandora FMS. Será sobre estos Módulos sobre los que puede crear alertas y visualizar el histórico para construir gráficas y mostrar la evolución en el tiempo de los sistemas a monitorizar. Se recomienda la creación de una tarea programada que arranque el agente de Pandora FMS en modo proceso cuando el equipo se inicie y así no se interrumpirán las ejecuciones aunque el sistema tenga un reinicio forzoso. Al estar en modo inicio de sesión automático sin contraseña, el agente siempre se ejecutará aunque se reinicie la máquina. {{ :wiki:ux26.jpg }} {{ :wiki:ux27.jpg }} {{ :wiki:ux28.jpg }} {{ :wiki:ux29.jpg }} {{ :wiki:ux30.jpg }} {{ :wiki:ux31.jpg }} {{ :wiki:ux32.jpg }} De este modo garantizaremos que en este sistema Windows siempre estará corriendo el Agente de Pandora FMS en modo proceso aún cuando la máquina se reinicie, pudiendo enviar siempre la información recogida por la sonda PDR. Sistemas con varios escritorios pueden resultar problemáticos, por lo que se recomienda siempre utilizar la configuración anteriormente descrita, en una máquina en modo escritorio con autoinicio de sesión y un único escritorio. [[:es:documentation:start|Volver al Índice de Documentación Pandora FMS]]