Monitorización de experiencia de usuario de Escritorio (PDR)
Experiencia de usuario de escritorio (PDR)
Despliegue del sistema PDR
El sistema PDR únicamente funciona en sistemas Windows®, y una vez en ejecución por el EndPoint 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:
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 sección de descargas de la documentación de Microsoft®) y habilitar el usuario que realizará la monitorización, por ejemplo:
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/) en dicha carpeta.
Ejecución de sesiones PDR
Para iniciar la grabadora, ejecute el siguiente script:
C:\PDR\pdr
Tras el proceso de carga, entra en el entorno de grabación:
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:
Acciones de control de flujo:
Más ayuda lingüística: 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”:
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:
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.
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:
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:
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:
<module> <name><![CDATA[UX_Status_calculator.sikuli]]></name> <type>generic_proc</type> <data><![CDATA[1]]></data> <description><![CDATA[C:\pandora_ux\calculator.sikuli execution completed Control snapshot rebuild ]]></description> <tags>UX</tags> <module_group>UX</module_group> </module> <module> <name><![CDATA[UX_Time_calculator.sikuli]]></name> <type>generic_data</type> <data><![CDATA[20.204]]></data> <description><![CDATA[C:\pandora_ux\calculator.sikuli execution completed Control snapshot rebuilt ]]></description> <tags>UX</tags> <module_group>UX</module_group> <module_parent>UX_Status_calculator.sikuli</module_parent> </module> <module> <name><![CDATA[UX_Control_Snapshot_calculator.sikuli]]></name> <type>async_string</type> <data><![CDATA[data:image/png;base64, IBCAIAAAAOCnfhAAAAAXNSR…/4x79e/7757f8H2C00s1C73yMAAAAASUVORK5CYII=]]></data> <description><![CDATA[Control image rebuilt]]></description> <tags>UX</tags> <module_group>UX</module_group> <module_parent>UX_Status_calculator.sikuli</module_parent> </module>
Ejemplo de salida con ejecución fallida:
<module>
<name><![CDATA[UX_Status_std.html]]></name>
<type>generic_proc</type>
<data><![CDATA[0]]></data>
<description><![CDATA[Failed to execute verifyText]]></description>
<tags>UX</tags>
<module_group>UX</module_group>
</module>
<module>
<name><![CDATA[UX_Time_std.html]]></name>
<type>generic_data</type>
<data><![CDATA[15.463]]></data>
<description><![CDATA[Failed to execute verifyText]]></description>
<tags>UX</tags>
<module_group>UX</module_group>
<module_parent>UX_Status_std.html</module_parent>
</module>
<module>
<name><![CDATA[UX_Snapshot_std.html]]></name>
<type>async_string</type>
<data><![CDATA[data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAA…JRU5ErkJggg==]]></data>
<description><![CDATA[Image (last error)]]></description>
<tags>UX</tags>
<module_group>UX</module_group>
<module_parent>UX_Status_std.html</module_parent>
</module>
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 <exe of the automation system> -args <system arguments> -script <test file path>
<exe of the automation system>: exe (ejecutable) del sistema de automatización.<system arguments>: Argumentos del sistema.<test file path>: 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:
Y en el visor de transacciones podemos ver el detalle de las fases y la gráfica con los tiempos:
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.
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.




















