Supervision WUX avec le serveur WUX et Selenium 3

Introduction

La supervision de l'expérience utilisateur consiste à enregistrer des tâches automatisées à la fois de navigation web (PWR/WUX) et d'interaction avec le bureau et les applications du système Windows (PDR).

Ces enregistrements peuvent consister en un simple clic de souris sur un navigateur web, en la saisie d'un texte ou en la réalisation d'une recherche sur le web, jusqu'à l'ouverture d'une application sur le bureau. Cela permet de configurer les fonctions et de les enregistrer automatiquement pour une exécution ultérieure à la recherche de résultats.

Différences entre la supervision UX et WUX

Les deux systèmes de supervision servent à l'exécution de tâches automatisées de navigation web via le Pandora Web Robot Daemon (PWRD).

Le système UX réalise ces supervisions via l'EndPoint installé sur une machine, tandis que la supervision WUX (Web User Experience) repose sur un serveur intégré à Pandora FMS.

PWRD est un service qui fournit les outils nécessaires pour automatiser les sessions de navigation web. Pour ce faire, il utilise un fichier contenant une liste d'actions nécessaires pour naviguer sur le portail web à surveiller.

De plus, la supervision UX permet l'exécution de tâches automatisées interagissant avec le bureau et les applications du système MS Windows®. Ce type de tâches ne peut pas être effectué avec WUX.

Pandora FMS UX est un système qui exécute des tâches automatisées, fournissant au serveur Pandora FMS un rapport avec les résultats des exécutions, le temps passé et des captures d'écran des erreurs éventuelles trouvées.

Si un système d'automatisation des tâches est disponible, Pandora FMS UX permet également l'exécution des scripts déjà rédigés et surveille leur exécution.

  • Il est important de préciser l'utilisation de ce type de supervision. Les deux méthodes reposent sur l'exécution de la supervision via un plugin sur les EndPoints installés sur les machines concernées.

Supervision PWR UX

Compte tenu des différences entre la supervision UX et WUX, en gros, la supervision UX doit suivre une série de prérequis liés à l'environnement à surveiller, avec les étapes préalables suivantes :

  • Configurer un profil dans Mozilla Firefox®.
  • Installer un service Selenium®.
  • Distribuer PWR dans le système.
  • Installer l'IDE Selenium® pour Mozilla Firefox®.
  • Enregistrer une session PWR.

Pour l'exécution standard des sessions préenregistrées, le Plugin Pandora UX (en anglais) est utilisé dans sa dernière version 28-04-2022.

Expérience Utilisateur Web (WUX) avec Selenium 3

Pour le déploiement de Selenium sur les serveurs WUX, un stack de conteneurs sera utilisé pour un déploiement rapide et une mise à l'échelle facile.

Configurations Préalables

Docker® et Docker Compose® doivent être installés ; il est recommandé d'utiliser Rocky Linux® 9 comme système d'exploitation de base.

Pour installer Docker, suivez la documentation en fonction du système d'exploitation utilisé :

Pour Selenium®, utilisez les images officielles pour l'installation et le déploiement du stack :

Dans le dépôt de Selenium®, différentes images avec des navigateurs sont disponibles. Pour Pandora FMS, les conteneurs de Mozilla Firefox® et Google Chrome® sont recommandés.

Déploiement du stack Selenium

Pour déployer le stack Selenium, un répertoire dédié doit être créé pour la tâche. À l'intérieur, créez un fichier compose.yaml avec la configuration nécessaire :

# 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

Dans l'exemple précédent, vous devez apporter les modifications nécessaires pour chaque cas, telles que la limite de mémoire, le fuseau horaire, le nombre de nœuds, etc.

Pour démarrer et exécuter le conteneur avec la configuration définie, à l'intérieur du répertoire créé pour la tâche :

docker compose up -d

Pour vérifier les services en cours d'exécution dans le conteneur :

docker compose ps

Pour voir l'état et les journaux des services Selenium :

docker compose logs

Une fois les vérifications effectuées, pour vérifier que le grid fonctionne correctement et que les workers ont été enregistrés comme défini dans le fichier de configuration, il sera nécessaire d'accéder à l'URL suivante :

http://<ip_selenium_server>:4444/grid/console

Si vous devez augmenter le nombre de workers (X, Y) :

docker compose scale chrome=X firefox=Y

Infrastructure du service Selenium

Selenium fonctionne comme un HUB où un conteneur est lancé et agit comme un grid pour déployer les conteneurs worker nécessaires.

Configuration de Pandora FMS

Pour utiliser le mode centralisé (WUX), la configuration suivante doit être appliquée au serveur Pandora FMS.

Indépendamment du mode choisi, une fois démarré, vous pouvez commencer à attribuer des exécutions de sessions de navigation en ajoutant les paramètres de configuration du serveur WUX au fichier de configuration du serveur Pandora FMS.

Ajoutez la configuration suivante à la fin du fichier /etc/pandora/pandora_server.conf
(remplacez <ip_wux_host> par l'adresse IP du serveur ; si c'est le même serveur exécutant le serveur Pandora FMS, utilisez 127.0.0.1) :

wuxserver 1
wux_host <ip_wux_host>
wux_port 4444

Le fichier de configuration du serveur comprend un nouveau token pour nettoyer les sessions qui pourraient être mises en file d'attente chaque fois que le serveur Pandora FMS est démarré.

clean_wux_sessions 1 #(par défaut)

Gestion des fils de Pandora FMS

  1. La gestion des fils du wuxserver se fait automatiquement lors du démarrage du service pandora_server.
  2. Cela se fait en fonction du nombre de nœuds de navigateur INFÉRIEUR présents dans le hub de Selenium :
  • Si le hub a 2 nœuds Firefox et 2 nœuds Chrome configurés, le nombre de fils du wuxserver sera de 2.
  • Si le hub a 1 nœud Firefox et 4 nœuds Chrome configurés, le nombre de fils sera de 1.
  • Si le hub a 6 nœuds Firefox configurés, le nombre de fils sera de 6.

Il faut toujours garder à l'esprit que chaque fil indique les sessions qui peuvent être envoyées simultanément du wuxserver au hub de Selenium.

Annexe : Ajouter des workers pour Internet Explorer et Microsoft Edge

Si vous devez lancer des transactions web contre des navigateurs Microsoft®, il est nécessaire de configurer une machine (physique ou virtuelle) avec la version souhaitée de MS Windows® et de configurer le driver en suivant la documentation officielle.

Documentation pour l'installation du driver MS Internet Explorer® :

https://www.selenium.dev/documentation/ie_driver_server/

Il est recommandé d'utiliser la version 32 bits du driver 3.141 pour éviter les problèmes de performance avec la version 64 bits.

Documentation pour l'installation du driver Microsoft Edge® :

https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

Pour l'exécution de Selenium, Java® doit être installé sur le dispositif MS Windows®.

Pour vérifier si Java® est installé, exécutez :

java -version

Vous devez obtenir un résultat similaire à celui-ci :

Le fichier JAR de Selenium est également nécessaire pour exécuter le serveur localement et l'enregistrer sur le grid. Il peut être obtenu à l'adresse suivante :

https://www.selenium.dev/downloads/

Pour démarrer le serveur Microsoft Edge®, exécutez, dans un terminal dans le répertoire où se trouve le fichier JAR téléchargé (tout cela sur une seule ligne, décomposé pour simplification) :

java
  -jar selenium-server-standalone-<VER>.jar
  -port 5555 -role node
  -hub http://<ip_selenium_server>:4444/grid/register
  -browser "browserName=MicrosoftEdge, platform=WINDOWS, maxInstances=1"

Pour démarrer le serveur Internet Explorer®, la commande est similaire, en spécifiant le chemin <PATH> du driver téléchargé (tout cela sur une seule ligne, décomposé pour simplification) :

java
  -Dwebdriver.ie.driver=<PATH>IEDriverServer.exe
  -jar selenium-server-standalone<VER>.jar
  -port 5555
  -role node
  -hub http://ip_selenium_server:4444/grid/register
  -browser "browserName=internet explorer, platform=WINDOWS, maxInstances=1"

Il est nécessaire de configurer le pare-feu MS Windows® pour permettre le trafic sur les numéros de ports spécifiés dans la commande d'exécution (dans cette documentation, 5555 et 4444 ont été utilisés).

Enregistrement

Pour la version 3 de Selenium, les enregistrements anciens et nouveaux seront compatibles, bien qu'avec une compatibilité partielle avec les versions plus anciennes.

Pour enregistrer une nouvelle session, l'extension Selenium IDE doit être installée dans le navigateur choisi.

Firefox

https://addons.mozilla.org/es/firefox/addon/selenium-ide/

Chrome

https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd

L'icône permettra de démarrer l'environnement d'enregistrement une fois l'extension installée.

En cliquant dessus, un menu s'ouvrira permettant de démarrer de nouveaux projets d'enregistrement.

Une fois l'enregistrement terminé, vous obtiendrez un résultat similaire à celui-ci :

En plus de la fonctionnalité fournie par Selenium, Pandora FMS propose des commandes personnalisées pour extraire des informations de l'objectif à surveiller.

Commandes

La liste des commandes compatibles pour les utiliser dans Pandora FMS peut être trouvée dans le lien suivant.

Recommandations et suggestions lors de l'enregistrement

Voici quelques recommandations et conseils pour enregistrer des transactions avec Selenium IDE et intégrer les commandes plus complexes avec Pandora FMS :

  • Diviser la transaction en phases chaque fois que possible. Cela permet de créer des modules pour les états, les temps et les captures d'écran qui seront segmentés, ce qui facilite l'identification de l'endroit où la transaction a échoué.

  • Utiliser la commande Selenium set speed et wait for pour éviter les faux négatifs. Lors de l'exécution d'une transaction, les commandes de Selenium n'ont pas de délai par défaut entre elles, ce qui signifie que certaines n'ont pas de temps d'achèvement ou de délai d'attente. Cela fait que la transaction s'exécute aussi rapidement que possible, mais si la page Web est un peu lente ou prend une seconde de plus à se charger, la vérification peut échouer. Un scénario courant : après avoir exécuté une commande click et changé de page, si le prochain élément avec lequel interagir est retardé d'une seconde, il ne sera pas trouvé et la vérification échouera.
    Pour éviter cela, utilisez la commande set speed, qui ajoute un délai en millisecondes entre chaque commande. Il est recommandé de la définir au début de la transaction. De plus, pour les cas où le chargement d'une page ou l'apparition d'un élément peut être retardé de quelques secondes, utilisez les commandes wait for element present, wait for visible, et wait for text, où vous pouvez définir le temps d'attente en millisecondes avant de marquer la transaction comme échouée. Bien que ces commandes augmentent considérablement la fiabilité de la vérification, elles augmentent également le temps d'exécution de la transaction.

  • Vérifiez les éléments. Utilisez des commandes comme assert et verify dans leurs différentes versions. Par exemple, terminer une transaction avec un clic ne garantit pas que la page qui devrait s'ouvrir suite au clic sera effectivement ouverte, seulement qu'il est possible de cliquer sur l'élément. Si après le clic vous ajoutez un verify text à un texte qui ne se charge qu'après le clic, cela confirme que la page vers laquelle le clic mène est disponible.

  • Utiliser store window handle pour les transactions où vous allez changer de fenêtre. Un changement de fenêtre (avec select window) peut échouer si l'identifiant de la fenêtre initiale n'a pas été préalablement stocké.

  • Utiliser xpath lorsque le Target échoue en raison de l'identifiant CSS ou lorsque vous voulez rechercher du contenu dans la page. Par défaut, l'enregistreur Selenium IDE utilise le localisateur CSS dans le Target, mais il enregistre également le localisateur xpath, vous pouvez donc voir tous les localisateurs qu'il enregistre en cliquant sur la case du Target dans l'enregistreur :

De plus, en utilisant des chemins xpath, vous pouvez rechercher des textes dans les balises de la page, rendant les enregistrements beaucoup plus dynamiques. Dans la capture d'écran précédente, vous pouvez utiliser un xpath qui recherche le texte “Innovadores de la monitorización” dans toutes les balises span de la page, et pas seulement dans un localisateur spécifique.

  • Bonne utilisation de la commande execute script. Cette commande exécute un extrait de code JavaScript dans la fenêtre où elle est située dans la transaction. Il est recommandé de lire le guide pour connaître son utilisation et les différentes options disponibles : https://ui.vision/rpa/docs/selenium-ide/executescript.
    Toutefois, l'utilisation des variables préalablement stockées (via la commande store text, par exemple) doit être entre guillemets pour que le webdriver de Pandora FMS puisse les interpréter correctement.

Voici un exemple d'une variable stockée avec store text et utilisée ensuite dans execute script, de manière à ce que le serveur Pandora FMS l'interprète correctement. L'utilisation de la variable entre guillemets échouera lors de l'exécution du script dans l'enregistreur Selenium IDE :

Gestion et Visualisation des Données

Créer un module d'analyse Web dans la Console Pandora FMS

Une fois que vous avez une session de navigation enregistrée, il est temps de la déployer en tant que module dans la Console Web Pandora FMS.

Pour ce faire, accédez à n'importe quel agent associé à un serveur avec la fonctionnalité WUX activée et cliquez sur le bouton Create Module :

En cliquant sur le bouton Create, vous devrez remplir les champs du formulaire (seuls ceux liés à ce sujet sont affichés) :

  • Name: Module WUX (Parent); rappelez-vous que tous les sous-modules avec les résultats de la surveillance dépendront de ce nouveau module.

  • Execute tests from: Indique quel serveur WUX exécutera la vérification. Par défaut, cela indique None, sélectionnez un serveur dans la liste.

  • Run performance tests: Spécifie si des tests de performance doivent être effectués, c'est-à-dire surveiller l'expérience de navigation et aussi les statistiques de performance de l'accès au site Web cible (champ Target web site).

  • Browser: Navigateur Web pour exécuter la vérification. La compatibilité avec les navigateurs IE et Edge est expérimentale, les tests peuvent ne pas fonctionner comme prévu.

    Le navigateur indiqué doit être répertorié dans le grid ou serveur Selenium utilisé par le serveur WUX.

  • User data dir: Optionnel, seulement si Google Chrome est utilisé, permet de spécifier un répertoire pour les données.

  • Profile: Optionnel, seulement si Google Chrome est utilisé, permet de spécifier un profil utilisateur. Si le nom du profil n'existe pas, le profil par défaut sera utilisé.

  • Accept insecure certificates: Si activé, il acceptera tout certificat non sécurisé (auto-signé, expiré, etc.) dans le cadre de la navigation.

    Cette option est uniquement disponible pour les navigateurs Google Chrome® et Mozilla Firefox® avec un serveur Selenium 3.

  • Upload your selenium test in html or side (only Selenium 3) format: Utilisez le bouton Select file pour télécharger le contenu des fichiers de la session de navigation qui a été enregistrée précédemment.

Macros Personnalisées

Le fonctionnement des macros personnalisées implique le remplacement de certaines chaînes de texte présentes dans le fichier de session de navigation par des valeurs personnalisables.

Dans le cas des modules d'analyse Web, cette fonctionnalité a été améliorée, permettant des macros dynamiques qui permettent à ces valeurs d'être traduites en dates et heures variables.

Pourquoi cette fonctionnalité ?

Supposons qu'il faille surveiller, au moyen d'une session de navigation, le bon fonctionnement d'une application web de réservation de salles de réunion.

Si vous fixiez une date et une heure précises au moment de remplir le formulaire, il est possible que le système annule la réservation car elle se situerait alors dans le passé.

Il est également possible que vous rencontriez une limite de temps pour effectuer cette réservation et que le système vous oblige à réserver la salle dans un délai précis.

Pour éviter d'avoir à modifier la macro tous les deux ou trois jours et ne plus avoir à vous soucier de la configuration, vous pouvez utiliser des macros dynamiques, en indiquant au système de réserver toujours la salle de réunion pour le lendemain au moment de réaliser le test web.

Pour pouvoir utiliser cette fonctionnalité, les valeurs doivent avoir un format spécifique, permettant les substitutions suivantes :

  • @DATE_FORMAT: date/heure actuelle au format défini par l'utilisateur.
  • @DATE_FORMAT_nh: heures.
  • @DATE_FORMAT_nm: minutes.
  • @DATE_FORMAT_nd: jours.
  • @DATE_FORMAT_ns: secondes.
  • @DATE_FORMAT_nM: mois.
  • @DATE_FORMAT_nY: ans.

Où « n » peut être un nombre sans signe (positif) ou négatif et FORMAT suit la norme strftime de Perl :

@DATE_%Y-%m-%d %H:%M:%S
@DATE_%H:%M:%S_300s
@DATE_%H:%M:%S_-1h

Affichage des données

Les informations générées par WUX seront affichées sous forme de modules et l'activation de l'affichage en mode hiérarchique, dans la liste des modules, permettra de visualiser les informations de manière beaucoup plus claire :

Au sein de cette hiérarchie, on trouve :

  • module_Global_Status : Indique l'état global de la navigation complète.
  1. S'il existe un enregistrement, indiquez l'état de l'enregistrement WUX.
  2. Si Run performance Test est activé mais que l'enregistrement n'est pas inclus, l'état du module Global Status correspond à celui du contrôle effectué lors de l'obtention de ces modules.
  • module_Global_Time : Indique le temps global passé à naviguer sur l'ensemble du site.
  • module_Phase X : Nom de la phase_Statut : Indique l'état de la navigation pendant la phase X.
  • module_Phase X : Nom de la phase_Temps : Indique le temps passé dans la phase X.
  • module_Global_Screenshot : contient une image avec le résultat de l'erreur de navigation, qui ne sera générée qu'en cas d'erreur :

En accédant à la console WUX de l'agent, vous pouvez voir plus de détails sur la transaction et ses étapes :

Les statistiques du site web sont résumées dans les concepts suivants :

  • Stats_TT: Temps total nécessaire pour obtenir le site web.
  • Stats_TDNS: Temps total nécessaire pour résoudre l'adresse IP de la cible.
  • Stats_TTCP: Temps passé à se connecter via TCP.
  • Stats_TSSL: Temps nécessaire pour établir une communication SSL.
  • Stats_TST: Temps écoulé jusqu'au début du transfert des données.
  • Stats_TTC: Temps de transfert des données ; regroupe tous les temps de transfert des ressources.
  • Stats_TTR: Temps nécessaire pour transférer le contenu de la page.
  • Stats_TTR_main: Temps passé à transférer le code HTML.
  • Stats_TTR_image: Temps passé à transférer les ressources de type image (png|jpg|jpeg|bmp|tiff|gif|webp|svg).
  • Stats_TTR_css: Temps passé à transférer les feuilles de style.
  • Stats_TTR_js: Temps nécessaire au transfert des fichiers JavaScript.

Attribuer des alertes à un module d'analyse Web

Les alertes associées aux modules d'analyse Web fonctionnent selon le même principe que l'ensemble du système d'alertes de Pandora FMS.

Pour des raisons de compatibilité, il est recommandé d'attribuer les modèles d'alertes aux sous-éléments générés automatiquement par le module d'analyse Web :

  • L'état de la navigation mondiale.
  • Alertes sur les seuils de temps.
  • Alertes avec modèle d'avertissement réglé sur « toujours » pour les modules de capture d'image des résultats.

Widgets pour tableaux de bord

Afin de représenter les informations relatives à la navigation des utilisateurs, deux types de widgets ont été ajoutés dans les tableaux de bord, Agent WUX transaction et WUX transaction stats :

Liste des commandes compatibles

Commandes internes

  • run: Exécutez un test.
  • build_transaction: Préconstruit une transaction basée sur le test passé (interne).
  • get_transaction: Renvoie la transaction actuelle, toujours utilisée pour récupérer les résultats, l'ordre des phases et les variables.
  • sessions: Récupère la liste des sessions présentes dans le hub.
  • kill_sessions: Supprime toutes les sessions existantes dans le hub.

Commandes supplémentaires

  • extract: Combine source et code propre pour l'extraction.
  • storeExtraction: Stocke le résultat de extract dans une variable.
  • dispatchEvent: Déclenche un événement JavaScript sur un élément donné.
  • takeElementScreenshot: Effectue une capture d'écran d'un élément spécifique.
  • phase_start: Démarrez une phase et transformez le test en une transaction WUX.
  • phase_end: Complète une phase.

Commandes générant des modules

  • getValue: Extrayez une valeur.

getValue;nom_du_module;type_du_module;capture_REGEX

  • getVariable: Extrait une valeur spécifique d'une variable.

getVariable;nom_du_module;type_du_module;nom_de_la_variable

  • getScreenshot: Capturez une capture d'écran.

getScreenshot;nom_du_module

Toutes les commandes propres doivent apparaître dans le fichier de test (.side) sous forme de commentaires. Dans le cas contraire, le test échouera lors de l'extension Selenium.

Commandes fournies par l'extension d'enregistrement (v3)

  • addSelection
  • answerOnNextPrompt
  • assert
  • assertAlert
  • assertChecked
  • assertConfirmation
  • assertEditable
  • assertElementPresent
  • assertElementNotPresent
  • assertNotChecked
  • assertNotEditable
  • assertNotSelectedValue
  • assertNotText
  • assertPrompt
  • assertSelectedValue
  • assertSelectedLabel
  • assertText
  • assertTitle
  • assertValue
  • check
  • chooseCancelOnNextConfirmation
  • chooseCancelOnNextPrompt
  • chooseOkOnNextConfirmation
  • click
  • clickAt
  • close
  • doubleClick
  • doubleClickAt
  • dragAndDropToObject
  • echo
  • editContent
  • else
  • elseIf
  • end
  • executeScript
  • executeAsyncScript
  • if
  • mouseDown
  • mouseDownAt
  • mouseOver
  • mouseUp
  • mouseUpAt
  • open
  • pageLoadTimeout
  • pause
  • removeSelection
  • select
  • selectFrame
  • selectWindow
  • sendKeys
  • setSpeed
  • setWindowSize
  • store
  • storeAttribute
  • storeJson
  • storeText
  • storeTitle
  • storeValue
  • storeWindowHandle
  • storeXpathCount
  • submit
  • type
  • uncheck
  • verify
  • verifyChecked
  • verifyEditable
  • verifyElementPresent
  • verifyElementNotPresent
  • verifyNotChecked
  • verifyNotEditable
  • verifyNotSelectedValue
  • verifyNotText
  • verifySelectedLabel
  • verifySelectedValue
  • verifyText
  • verifyTitle
  • verifyValue
  • waitForElementEditable
  • waitForElementNotEditable
  • waitForElementNotPresent
  • waitForElementNotVisible
  • waitForElementPresent
  • waitForElementVisible
  • waitForText
  • webdriverAnswerOnVisiblePrompt
  • webdriverChooseCancelOnVisibleConfirmation
  • webdriverChooseOkOnVisibleConfirmation

← Retour à l'index de la documentation de Pandora FMS