# Plugin pandora UX # Introducción **Ver**. 28-04-2022 Plugin que permite la ejecución estándar de sesiones pregrabadas PDR y PWR. Mediante el uso del plugin, se pueden realizar chequeos de una manera más parametrizada, lo que hace que se pueda crear una ejecución más personalizada que con wux server. Además se pueden crear tantas ejecuciones independientes como sean necesarias, en máquinas totalmente independientes en ubicaciones geográficas distantes y no sincronizadas en modo alguno. # Matriz de compatibilidad
**Sistemas donde se ha probado**Rocky Linux 8.5
**Sistemas donde debería funcionar**Cualquier sistema linux
# Pre requisitos - Tener el **Data Server** de Pandora FMS habilitado - Tener el **Plugin Server** de Pandora FMS habilitado - Tener grabada la sesión que quieres monitorizar (fichero.side) # Parámetros **Parámetros**
Nombre Descripción
-exeDirectorio al binario de tu utilidad de automatización o herramienta de test. También es posible seleccionar el modo interno: \*\* Solo Windows: PDR - herramienta compleja de chequeos de escritorio \*\* windows & linux: PWR - herramienta compleja de chequeos web (con Selenium) \*\* requiere curl en el PATH: stats - monitorización rápida del rendimiento del web server \*\* solo linux: goliat – chequeos web basadas en Pandora Webserver
-args (opcional)Argumentos para la herramienta de automatización
-scriptScript(s) a ejecutar. Se pueden definir tantos como se necesiten. Por ejemplo: -script script1,script2,script3
-folder (opcional)Directorio en el que se almacenarán los screenshots
-name (opcional)\* PWR: define el nombre de la transacción \* PWD: nombre de la fase, se pueden definir tantas como se necesiten ejemplo: -name phase1,phase2,phase3 deberían coincidir con los scripts definidos
-pwr\_port(opcional)Puerto de escucha del servidor PWR 4444 por defecto, requiere -exe PWR
-pwr\_host(opcional)Host en el que se encuentra el servidor PWR Localhost por defecto, requiere -exe PWR
-pwr\_browser(opcional)Navegador en el que se ejecutarán los chequeos PWR \*Firefox por defecto, requiere -exe PWR
-pwr\_classic(opcional)Usa las librerías antiguas Test::WWW::Selenium PandoraFMS::WebDriver, requiere -exe PWR, 0 por defecto
-pwr\_override\_global\_phase\_time (opcional)Sustituye el valor del modulo global time, por la sumatoria de todas las phases. Si el token está a 1, se usara como valor del módulo la suma de todas las fases.
-retries (opcional)Número máximo de reintentos en caso de error
-ss\_config (opcional)Configuración de los screenshots: X,Y,Ancho,Altura ejemplo: -ss\_config 0,0,100,100 obtendrá una imagen de 100x100 desde las coordenadas 0,0 \[solo Windows\]: activa el parámetro -ss\_config para capturar la ventana activa
-checkpoint (opcional)Crea un nuevo screenshot de control
-s(opcional)Macro de sustitución, Sustituye cada instancia de \_texto\_ por el valor configurado. Es posible usar now+1 como valor para insertar el día actual. Se pueden configurar tantas macros (-s) como se necesiten, seguidas con el formato (-f) en caso de que sea necesario: -s macro1=value1 -f format1 -s macro2=value2 -f format2
-f(opcional)Formato para las macros de tipo fecha usa notación std: ejemplo: -f "%y%m%d" con fecha 2016, Sep 13 para obtener 160913
-k(opcional)Usa la salida de errorlevel para los chequeos en caso de fallo. Se comprueba por defecto en caso de que el plugin devuelva alguna fase de ‘\[error\]’
-max\_differences(opcional)Especifica el porcentaje máximo de diferencia entre la imagen de control y las obtenidas como resultado del test. Por defecto está configurado con el valor numérico 0.5
**Configuración de email**
-to (opcional)Dirección de email de destino que se enviará en caso de error
-from (opcional)Remitente del email
-subject (opcional)Asunto del email
-content (opcional)Contenido del email
-smtp\_gw (opcional)Gateway del servidor smtp, 127.0.0.1 por defecto
-smtp\_port (opcional)Puerto del servidor smtp. 25 por defecto
**Configuración de los módulos de PandoraFMS**
-t name (opcional)(solo modo PDR) habilita y configura un nombre para la transacción “global”. De esta manera todos los módulos de los chequeos irán asociados al módulo de transacción global, llamado ‘UX XXXX nombre’
-interval (opcional)Configura un module interval para los módulos resultantes del chequeo
-g (opcional)Configura un module group para los módulos resultantes del chequeo
-post (opcional)Comando que se ejecutará al acabar el chequeo, por ejemplo, matar firefox: -post "taskkill /F /IM firefox.exe" -post "killall firefox"
-tag\_list x (opcional)Añade x (separados por comas) tags a los módulos generados, ejemplo: tag1,tag2,...
**Campos extra**
-exit\_on\_fail (opcional)Termina inmediatamente la transacción si no es posible conectar con el servidor PWR. 0 por defecto
-phase\_snapshot (opcional)Genera un screenshot por fase. 0 por defecto
-classic\_mode (opcional)El token a 0 siempre actualiza la latencia. El token a 1 solo actualiza la latencia si la comprobación ha resultado exitosa. 0 por defecto
-v (opcional)Activa el modo verbose
-agent (opcional)Define la ejecución como plugin de servidor, configura el nombre del agente en el que se almacenarán los módulos de salida
-agent\_group (opcional)Si se define el token “agent” y crea un agente nuevo, configura el grupo al que pertenecerá.
-interval (opcional)Si se define el token “agent” y crea un agente nuevo, configura el intervalo que tendrá. 300 por defecto
-tentacle\_ip (opcional)ip del servidor tentacle. 127.0.0.1 por defecto
-tentacle\_port (opcional)Puerto del servidor tentacle. 41121 por defecto
-tentacle\_opts (opcional)Opciones extra del servidor tentacle
-local\_folder (opcional)Directorio local de tentacle. /var/spool/pandora/data\_in por defecto
-mode (opcional)\[local|tentacle\] modo de transferencia, “local por defecto”
# Grabaciones web ## Grabación de una transacción sencilla Para poder realizar una grabación Selenium dispone de un amigable IDE que permite realizar esta tarea fácilmente. La extensión de Selenium IDE puede utilizarse tanto en *Google Chrome* como en *Mozilla Firefox*, para poder añadir la extensión en cualquiera de estos navegadores haremos lo siguiente. #### **Chrome** Desde el siguiente link puedes añadir la extensión Selenium IDE de chrome [https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd](https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd) [![image-1647615158382.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647615158382.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647615158382.png) #### **Mozilla firefox** Inicie Firefox y navegue hasta [https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/](https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/) Haga clic en Agregar a Firefox [![image-1647615376058.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647615376058.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647615376058.png) #### **Empezar a grabar con selenium** Para empezar a grabar en Selenium, se debe crear un proyecto nuevo: [![image-1647615424535.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647615424535.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647615424535.png) Se le debe asignar un nombre: [![image-1647615442320.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647615442320.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647615442320.png) Para iniciar la grabación, se debe dar al boton de "rec". [![image-1647615457303.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647615457303.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647615457303.png) En "Base url" se deberá introducir la url que se quiere grabar. [![image-1647615466914.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647615466914.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647615466914.png) Se abrirá una nueva ventana de la url que hemos introducido, en la que podremos ver un icono como el de la imagen de abajo, situado en la esquina izquierda derecha de la pantalla, que indicará que Selenium esta grabando. [![image-1647968996685.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647968996685.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647968996685.png) Para parar la grabacción se puede utilizar el siguiente botón: [![image-1647969029458.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647969029458.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647969029458.png) Una vez parada la grabación, las acciones realizadas en esta quedarán grabadas como una secuencia de comandos, con un aspecto similar al siguiente: [![image-1647948607058.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647948607058.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647948607058.png) Una vez terminada la grabación podemos guardar el fichero .side resultante dando al botón "save project" , que será la grabación que usemos en PandoraFMS. #### **Sugerencias para las grabaciones de Selenium** Es recomendable el uso de algunos comandos en nuestra grabación de selenium para un mejor tratado de estas desde PandoraFMS. Algunos de estos son : - **Comando `set speed`** Algunas grabaciones pueden ir demasiado rápido y esto puede provocar un error en esta a la hora de procesar cada paso. Con este comando se le puede asignar una velocidad determinada a la grabación para evitar estos posibles fallos. Se puede asignar este comando al principio de la grabación con el boton derecho del ratón y pulsando "insert new command" [![image-1647443706110.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647443706110.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647443706110.png) Una vez hecho esto se le puede asignar el comando y el valor que determinará la velocidad de la grabación (en milisegundos). [![image-1647443763991.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647443763991.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647443763991.png) - **Comandos `wait for element present`, `wait for visible` y `wait for text`** `````` Pueden 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. - **Introducir fases en la transacción** 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. Esto puede ser de gran ayuda a la hora de controlar un fallo o de esquematizar la información. Para introducir estos comentarios se debe insertar un nuevo comando y dividir el bloque de cada fase con : `//phase_start:` `//phase_end:` Ejemplo con la grabación sencilla de antes al añadir estos cambios : [![image-1647973098767.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647973098767.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647973098767.png) Esta transacción se vería representada mediante módulos en PandoraFMS, creando uno global\_status y otro global\_time por cada fase de la transacción (también se creara uno extra llamado snapshot si se produce un error, con una imagen del momento en el que se ha producido): Especificando directamente el módulo en el que se ha producido el error y mostrando una captura indicando el momento exacto del fallo. -
**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:[![](https://pandorafms.com/manual/_media/wiki/recomendaciones_ux1.png?w=500&tok=7fcbc2)](https://pandorafms.com/manual/_detail/wiki/recomendaciones_ux1.png?id=es%3Adocumentation%3A03_monitoring%3A13_user_monitorization "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.
## Grabaciones complejas Selenium tiene muchos elementos y opciones que se pueden utilizar para personalizar la transacción. Ejemplo de una transacción compleja [![image-1647453195349.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647453195349.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647453195349.png) En este caso vemos una grabación que entra en sourceforge y comprueba que existen los archivos de la ultima release y que esos archivos se han generado en este mes. **Comando `store test`** [![image-1647453342142.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647453342142.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647453342142.png) Guarda en una variable el valor de un elemento. Con la opcion "find target" podemos ver seleccionado cual es el elemento. [![image-1647453618326.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647453618326.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647453618326.png) **Comando `execute script`** Con este comando se pueden ejecutar scripts Ejemplo: `` [![image-1647454256443.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647454256443.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647454256443.png) Este pequeño script concretamente comprueba si el texto que tiene dentro coincide con un patron. Ese valor quedaría guardado en una variable y luego comprobando el valor de la variable se puede hacer que la grabación haga una cosa o otra, pudiendo pillar distintos caminos dependiendo del resultado de la transacción. [![image-1647454100212.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647454100212.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647454100212.png) Después de esto entra en el enlace comprueba que existen ciertos elementos y termina. [![image-1647454366084.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647454366084.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647454366084.png) ## Recuperación de valores de una página web Esto nos permite recoger información de un dato en un momento de la transacción para guardar dicho valor en un módulo normal de datos de Pandora FMS. Para ello usaremos el siguiente comando avanzado en nuestra grabación: getValue. **Comando `getValue`** Este comando es muy interesante ya que permite crear un módulo en PandoraFMS [![image-1647454580988.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647454580988.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647454580988.png) La sintaxis para su uso es la siguiente : ``` //getValue;;; ``` **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 [tipos de datos](https://pandorafms.com/manual/es/documentation/02_installation/05_configuration_agents#module_type "es:documentation:02_installation:05_configuration_agents") 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:
```

La temperatura de la placa solar es de: 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;temperatura placa solar;generic_data;(\d+\.*\,*\d*).* ```
Los comandos que generan módulos son:
-
**getValue**: Extrae un valor.
``` getValue;nombre_modulo;tipo_modulo;REGEX_de_captura ``` -
**getVariable**: (Versión NG 753 o superior ) Extrae un valor específico de una variable.
``` getVariable;nombre_modulo;tipo_modulo;nombre_variable ``` -
**getScreenshot**: Extrae una captura de pantalla.
``` getScreenshot;nombre_modulo ```
`getValue` es un comando que pertenece al tipo que [generan los módulos](https://pandorafms.com/manual/es/documentation/07_technical_annexes/17_compatible_selenium_commands#comandos_que_generan_modulos "es:documentation:07_technical_annexes:17_compatible_selenium_commands") 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. **Lista de Comandos** La lista de comandos compatibles para usarlos en Pandora FMS se puede encontrar en el [siguiente enlace](https://pandorafms.com/manual/es/documentation/07_technical_annexes/17_compatible_selenium_commands "es:documentation:07_technical_annexes:17_compatible_selenium_commands"). ## Macros personalizadas 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 [strftime de Perl](http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.02/lib/POSIX/strftime/GNU.pm "http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.02/lib/POSIX/strftime/GNU.pm") Ejemplos: ``` @DATE_%Y-%m-%d %H:%M:%S @DATE_%H:%M:%S_300s @DATE_%H:%M:%S_-1h ``` # Grabaciones de escritorio **Grabaciones con sikulix** Con sikulix se pueden automatizar aplicaciones de escritorio, utilizando el método de reconocimiento de imágenes para identificar los elementos de la GUI. Con el se pueden hacer scripts que hagan acciones en base al reconocimiento de imágenes capturadas previamente por nosotros. Al abrir el programa se puede ver una ventana como esta. [![image-1647878287968.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878287968.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878287968.JPG) Dando click derecho podemos elegir el lenguaje de scripting que preferimos utilizar para la grabación. [![image-1647878323009.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878323009.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878323009.JPG) En la página se pueden poner comandos asociados a imagenes que realizaran una acción concreta, por ejemplo se le puede asignar al comando "click" una imagen que indicará la acción a realizar. [![image-1647878337424.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878337424.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878337424.JPG) Para ello damos a captura de pantalla y seleccionamos la imagen que queremos capturar. [![image-1647878357831.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878357831.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878357831.JPG) Nos saldrá un recuadro con el que podemos capturar la parte que se requiere. [![image-1647878376422.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878376422.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878376422.jpg) 6\. Y quedará representado en el programa. [![image-1647878398540.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878398540.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878398540.JPG) 7\. A esta imagen creada y asociada un comando se le puede cambiar el nombre, o incluso configurarla para que sea más precisa y no haya errores por si por ejemplo hay otra parte en pantalla muy similar a la que hemos seleccionado. [![image-1647878418007.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878418007.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878418007.JPG) ***Ejemplo de grabación*** [![image-1647880053931.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647880053931.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647880053931.png) Este por ejemplo sería un ejemplo de una transacción sencilla en la que se abre la aplicación calculadora y se realiza una operación sencilla, para ellos se pincha en el buscador, se espera a que aparezca "Aplicaciones" y seguidamente se escribe "calc" en el buscador para pinchar en la aplicación y seguidamente se pincha en distintos botones de esta para realizar la operación. # Ejecución manual PWR (chequeos web) Si se ejecuta el plugin por terminal se mostrará un xml ( si no se usa el parámetro agent, que es el que hay que utilizar para usar el plugin en modo servidor. Si algo falla en la transacción, se creara un modulo extra de nombre "Ux\_Snapshot\_<file transaction>" que mostrará la imagen de la parte donde ha fallado la transacción. Con el parámetro -folder se puede elegir la carpeta en la que se guardara la imagen. **Ejecución manual básica** ``` ./pandora_ux.64 -exe pwr -script ``` Se devolverán los siguientes módulos: UX\_Time\_nombre\_proyecto UX\_Status\_nombre\_proyecto Si hay alguna fase con error, se creará también el módulo siguiente: UX\_Snapshot\_nombre\_proyecto Mostrará una imagen de la web en el momento del error siempre y cuando se esté ejecutando en el mismo equipo en el que está corriendo el servidor de Selenium. ***Ejemplo XML ejecución correcta del plugin*** [![image-1660820632761.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660820632761.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660820632761.png) **Ejemplo XML ejecución fallida del plugin** [![image-1660819707854.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660819707854.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660819707854.png) **Ejemplo, ejecución basada en transacciones** Si se ha realizado la grabación del chequeo con la información adicional basada en transacciones, será el propio sistema quien genere los módulos necesarios para identificar cada una de las fases indicadas. Se devolverán los siguientes módulos por fase: \- UX\_Time\_nombre\_phase<orden><fichero><acción>: \- UX\_Status\_nombre\_phase<orden><fichero><acción> Si hay alguna fase con error, se creará también el módulo siguiente: \- UX\_Snapshot\_nombre\_phase<orden><fichero><acción> 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 Mostrará una imagen de la web en el momento del error. Ejemplo ejecución basada en transacciones. [![image-1660823035852.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660823035852.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660823035852.png) Se mostraría el xml de la transacción **Módulos de fases** [![image-1660821852335.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660821852335.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660821852335.png) **Módulos de resúmenes globales** [![image-1660821812383.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660821812383.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660821812383.png) # Ejecución manual PDR (chequeos de escritorio) **Configuraciones previas** **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®**: ```code control userpasswords2 ``` Y desmarque la casilla **Users must enter a user name and password to use this computer**: [![ux5.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux5.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux5.jpg) Haga clic en el botón **Ok** e introduzca el nombre de usuario y su contraseña. **Para Windows 10®**: **Usando Netplwiz:** Se puede habilitar usando el comando `netplwiz` en Windows 10®, esto se puede hacer desde el buscador o si se abre la ventana de ejecutar. [![image-1647878223815.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878223815.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878223815.png) Para habilitar el inicio de sesión automático, lo único que se debe hacer, en esta ventana, es deshabilitar la casilla «**Los usuarios deben escribir su nombre y contraseña para usar el equipo»**. [![image-1647878797825.PNG](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647878797825.PNG)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647878797825.PNG) **Usando Autologon :** 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](https://docs.microsoft.com/en-us/sysinternals/downloads/autologon "https://docs.microsoft.com/en-us/sysinternals/downloads/autologon") de la documentación de Microsoft®) y habilitar el usuario que realizará la monitorización, por ejemplo: [![autologon_enable_-_sysinternals.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/autologon-enable-sysinternals.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/autologon-enable-sysinternals.png) Para preparar el entorno cree el siguiente directorio: ```code 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/ "https://pandorafms.com/library/pdr-cmd-for-ux-monitoring/")) en dicha carpeta. **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: ```code 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: ```code generic_proc UX UX generic_data UX UX UX_Status_calculadora.sikuli async_string UX UX UX_Status_calculadora.sikuli ``` Ejemplo de salida con ejecución fallida: ```code 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 MS 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): ```code module_plugin C:\Users\artica\Documents\Producto\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: ```code "%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. [![imagen_nueva_pdr.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/imagen-nueva-pdr.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/imagen-nueva-pdr.png) Si ya se tienen tests de automatización, se pueden incluir en Pandora FMS con la siguiente ejecución. ```code pandora_ux.64 -exe -args -script ``` **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: ```code C:\Users\artica\Documents\Producto\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: ```code 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: ```code module_plugin C:\Users\artica\Documents\Producto\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: [![ux41.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux41.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux41.jpg) Y en el visor de transacciones podemos ver el detalle de las fases y la gráfica con los tiempos: [![ux42.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux42.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/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. [![ux26.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux26.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux26.jpg) [![ux27.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux27.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux27.jpg) [![ux28.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux28.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux28.jpg) [![ux29.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux29.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux29.jpg) [![ux30.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux30.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux30.jpg) [![ux31.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux31.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux31.jpg) [![ux32.jpg](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/ux32.jpg)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/ux32.jpg) De este modo garantizaremos que en este sistema MS 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.

# Configuración en PandoraFMS **Ejemplo ejecutar el plugin como plugin de agente** Para usar este plugin en modo agente, se debe llamar al plugin con un comando con los parámetros que se estén usando, esto se puede hacer desde el archivo pandora\_agent.conf situado en "/etc/pandora". Aunque si esta habilitada la configuración remota se puede hacer desde la consola. [![image-1647356034558.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647356034558.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647356034558.png) Para llamar al plugin se usará el parámetro `module_plugin` seguido del comando al final del archivo: Ejemplo: ``` module_plugin /pandora_ux.64 -exe pwr -script login_pandora.side -pwr_port 4444 -pwr_host 172.42.42.1 ``` En el siguiente intervalo que se actualice el agente aparecerán los módulos dentro del agente software en el que lo estamos llamando. [![image-1660823361674.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660823361674.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660823361674.png) **Ejemplo ejecutar el plugin como plugin de servidor** Se debe ir a servidores > plugins: [![image-1647441477355.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647441477355.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647441477355.png) Pinchar en añadir: [![image-1647441559604.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647441559604.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647441559604.png) Se le pone el nombre y la descripción que se prefiera: [![image-1660833282899.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660833282899.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660833282899.png) Abajo en "comando del plugin" se debe introducir la ruta en la que tenemos el plugin de UX. En parámetros del plugin se introducirán todos los que queramos usar para customizar la ejecución del plugin seguido de la macro \_field\_ que nos permitirá almacenar los valores de estos parámetros más abajo. **\* Si se va a usar el plugin como plugin de servidor, se debe usar el parámetro agent, ya que este hace que la ejecución del plugin muestre un valor básico con el que podremos ver el estado de la ejecución en vez de un xml que es lo que usaríamos si queremos usar el plugin en modo agente.** [![image-1660833394065.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660833394065.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660833394065.png) Se le puede añadir una descripción a cada macro para identificarlas seguido de un valor. Macro \_field1\_ [![image-1647349972507.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647349972507.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647349972507.png) Macro \_field2\_ [![image-1647350000362.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350000362.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350000362.png) Macro \_field3\_ [![image-1647350034720.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350034720.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350034720.png) Macro \_field4\_ [![image-1647350051952.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350051952.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350051952.png) Macro \_field5\_ [![image-1647350070959.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350070959.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350070959.png) Una vez hecho esto se puede ver en la vista previa del comando este, y ejecutándolo por terminal se puede ver si los datos introducidos son correctos. [![image-1660833583797.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660833583797.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660833583797.png) Si se introduce por terminal debería mostrar un 1 si todo ha ido correcto con la transacción. Una vez realizados estos pasos y configurado el plugin al antojo del usuario, se debe crear un módulo, que mostrará el estado de la ejecución del plugin, para ello es requerido ir a un agente y crear un nuevo módulo de servidor de complementos. [![image-1647441796782.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647441796782.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647441796782.png) Se le pondrá al módulo el nombre que queramos. [![image-1660833682879.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660833682879.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660833682879.png) Y en la etiqueta de plugin se seleccionará el que se acaba de crear, se puede ver como aparecen los parámetros que hemos metido por las macros abajo. [![image-1660833700342.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/scaled-1680-/image-1660833700342.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-08/image-1660833700342.png) Una vez hecho esto se debe crear el módulo y aparecerá en la vista de módulos con 1 si la ejecución del plugin no esta teniendo problemas. [![image-1647350259697.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350259697.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350259697.png) Se puede ver que se ha creado un agente con el nombre que se le puso por parámetro. [![image-1647350286122.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350286122.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350286122.png) Y dentro de este se pueden ver los módulos con el estado de la transacción. [![image-1647350330558.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1647350330558.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1647350330558.png) # Módulos generados por el plugin **Con grabación de solo una fase** Se devolverán los siguientes módulos: - UX\_Time\_nombre\_proyecto - UX\_Status\_nombre\_proyecto Si hay alguna fase con error, se creará también el módulo siguiente: - UX\_Snapshot\_nombre\_proyecto **Con grabación del chequeo con la información adicional basada en transacciones** Se devolverán los siguientes módulos por fase: - UX\_Time\_nombre\_phase<orden><fichero><acción> - UX\_Status\_nombre\_phase<orden><fichero><acción> Si hay alguna fase con error, se creará también el módulo siguiente: - UX\_Snapshot\_nombre\_phase<orden><fichero><acción> 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 Mostrará una imagen de la web en el momento del error.