Surveillance de l'expérience utilisateur WEB (WUX)
Introduction au WUX avec Pandora FMS
Le WEB User Experience Monitoring (User Experience Monitoring, UX Monitoring ou simplement WUX dans la terminologie de Pandora FMS) est le processus de collecte, d'analyse et d'évaluation des données sur la façon dont les utilisateurs interagissent avec un site web ou une application web en temps réel. Son objectif est de détecter les problèmes de performance, de convivialité et d'accessibilité afin d'améliorer l'expérience de l'utilisateur.
Pandora FMS WUX effectue une supervision synthétique (Synthetic Monitoring) en utilisant un backend spécialisé à cet effet (Selenium®). Cela signifie que Pandora FMS utilise un véritable navigateur pour interagir avec les sites web distants (Google Chrome®, Mozilla Firefox®, etc.).
- Il permet de détecter les problèmes avant que les utilisateurs réels ne les rencontrent. Collecte en temps réel des données de navigation des utilisateurs réels (webscrapping).
- Il mesure des paramètres tels que le temps de chargement, les interactions, les erreurs et le comportement des utilisateurs (analyse web).
- Des exemples: La mesure du chargement des pages, le temps de réponse, les captures d'écran (du web), les tests sur différents appareils, les tests d'applications complexes nécessitant une journalisation, l'interaction JavaScript®, l'input de texte, le passage de données d'un champ à un autre comme si elles étaient effectuées par un utilisateur, les clics de souris, les délais d'attente, etc.
Quelle est la différence entre WUX et les autres supervisions WEB que Pandora FMS effectue avec le serveur WEB ?
Le serveur WEB utilise des requêtes HTTP de base et, bien qu'il puisse simuler des sessions, il ne s'agit pas d'un véritable navigateur. Il ne peut donc pas exécuter de JavaScript ni émuler un navigateur moderne. Les tests WEB normaux sont parfaits pour les tests WEB simples, WUX est beaucoup plus puissant.
Quelles sont les différentes versions de WUX dont dispose Pandora FMS ?
- WUX basé sur des agents (Selenium version 2), jusqu'à la version 740.
- WUX centralisé sur le serveur WUX (Selenium 3), jusqu'à la version 780.
- WUX centralisé comme plugin de Discovery PFMS (Selenium 4), depuis la version 780.
Dans les versions antérieures à 780, WUX était exécuté en tant que partie du serveur Pandora FMS (WUX Server). Bien que toujours possible, la setup est plus complexe que l'utilisation de WUX en mode centralisé avec Discovery PFMS.
WUX centralisé dans Discovery PFMS est également basé sur Selenium 4 et peut être utilisé (optionnellement) à partir d'un agent en tant que plugin. Les fichiers transactionnels (.side
) qui fonctionnent sur un serveur WUX fonctionneront sur WUX Discovery PFMS.
Des informations sur l'utilisation de WUX Server (Selenium 3) sont disponibles en annexe Supervision WUX.
WUX / Discovery Architecture
Le fonctionnement de ce plugin pour Selenium 4 est assuré par le serveur Discovery de Pandora FMS. Comme mentionné ci-dessus, un serveur dédié connu sous le nom de WUX Server était utilisé exclusivement et il est possible d'utiliser Discovery PFMS pour ce serveur également.
Il est désormais capable d'effectuer des exécutions avec Selenium 4, d'où son nom, et est également compatible avec les transactions Selenium 3 (qui ont pu être exécutées précédemment dans un environnement grâce à un serveur WUX).
En ce qui concerne les exécutions de transactions, il existe 4 méthodes différentes de connexion à Selenium, qui seront discutées plus en détail ci-dessous, ainsi que les exigences qui doivent être respectées pour assurer un fonctionnement correct.
Conditions préalables
La principale exigence est que le serveur à partir duquel le plugin est exécuté doit pouvoir se connecter à la stack de Selenium 4, qui doit à son tour pouvoir communiquer avec les URL des sites web à superviser.
Ce plugin WUX a quatre méthodes de connexion Selenium différentes à exécuter dans chaque transaction, vous devrez donc ajuster les exigences au mode d'exécution désiré pour chaque cas.
Driver local
Le plugin utilisera les drivers pour Google Chrome ou Mozilla Firefox sur l'ordinateur où il est exécuté. Par défaut, ces composants seront recherchés dans les chemins suivants, bien que d'autres chemins puissent être spécifiés si nécessaire.
Binaire Google Chrome:
/usr/share/pandora_server/util/selenium_headless_drivers/chrome/google-chrome
Chromedriver:
/usr/share/pandora_server/util/selenium_headless_drivers/chromedriver
Binaire Mozilla Firefox:
/usr/share/pandora_server/util/selenium_headless_drivers/firefox/firefox
Geckodriver:
/usr/share/pandora_server/util/selenium_headless_drivers/geckodriver
Ces drivers peuvent être téléchargés depuis la Bibliothèque Pandora FMS dans un paquet et décompressés dans le chemin d'accès par défaut.
Pour que les navigateurs démarrent dans ce mode, leurs dépendances spécifiques doivent également être installées sur le système.
- Pour Mozilla Firefox:
gtk3
,alsa-lib
,libX11-xcb
. - Pour Google Chrome:
nss
,libdrm
,mesa-libgbm
.
Driver à distance
Le plugin se connectera à un serveur Selenium 4 indiqué par son URL, il sera donc nécessaire d'avoir accès depuis le serveur exécutant le plugin au serveur Selenium 4 via son port d'écoute (par défaut 4444
TCP).
Docker local
Le plugin démarre un conteneur Docker sur le serveur où il est exécuté en utilisant une image contenant les drivers spécifiés pour le mode driver local, ce qui permet d'abstraire les dépendances de la machine réelle.
Par défaut, l'image pandorafms/pandora_selenium_headless
sera utilisée (bien qu'il soit possible d'en spécifier une différente pour chaque exécution), et les drivers seront recherchés à l'intérieur du Docker dans les chemins suivants :
- Binaire Google Chrome:
/tmp/lib/chrome/google-chrome
. - Chromedriver:
/tmp/lib/chromedriver
. - Binaire Mozilla Firefox:
/tmp/lib/firefox/firefox
. - Geckodriver:
/tmp/lib/geckodriver
.
Docker à distance
Le plugin se connectera via SSH avec nom d'utilisateur et mot de passe à un serveur distant, sur lequel il exécutera une copie du plugin lui-même (copié à ce moment-là) en mode docker local. Par conséquent, en plus des exigences du mode précédent, la connectivité au serveur distant via SSH avec les informations d'identification spécifiées sur le port spécifié (par défaut 22
TCP) doit également être autorisée.
L'utilisateur spécifié pour la connexion SSH doit disposer d'autorisations suffisantes pour démarrer le conteneur Docker et accéder aux fichiers copiés dans le répertoire temporaire. Un répertoire temporaire sera utilisé pour copier les fichiers sur le serveur distant (par défaut /tmp
), bien qu'un chemin différent puisse être spécifié pour chaque exécution.
Exigences facultatives
Pour tous les modes d'exécution, il sera possible, si on le souhaite, d'utiliser les profils Google Chrome ou Mozilla Firefox pour chaque transaction. En cas d'utilisation de cette fonctionnalité, il convient de s'assurer que le serveur sur lequel la transaction est initiée (soit local, soit distant) contient les chemins d'accès à ces profils.
Dans les modes d'exécution Docker (local, distant), c'est le serveur hôte qui doit avoir les chemins vers les dossiers de profil, car le plugin montera ces dossiers en tant que volumes du conteneur qu'il démarre.
Il sera également possible de suivre les statistiques de connexion à l'URL principal du SIDE indiqué dans chaque exécution. Pour ce faire, il faudra que l'exécutable curl soit installé sur l'ordinateur où le plugin est lancé.
Notez que si l'exécution du test se fait en mode driver à distance, les statistiques ne seront pas obtenues à partir du serveur Selenium 4, mais à partir du serveur qui exécute le plugin.
Utilisation de WUX avec Discovery PFMS
Plugin Installation Discovery PFMS
Pour pouvoir utiliser le monitoring WUX avec Selenium 4, vous devez préalablement installer le .disk
dans la section Discovery de la Console Web Pandora FMS. Ceci peut être fait à partir de la vue Manage disco packages, en sélectionnant le fichier de type .disk
à télécharger à partir de la bibliothèque de Pandora FMS pour ce plugin :
Enregistrer des transactions avec Selenium IDE
Pour pouvoir exécuter ces transactions, elles doivent être préalablement sauvegardées à l'aide de l'extension Selenium IDE disponible pour les navigateurs Google Chrome ou Mozilla Firefox. Après avoir ouvert l'extension, il vous sera demandé de choisir si vous souhaitez sauvegarder dans un nouveau projet, ouvrir un projet existant, créer un nouveau projet ou simplement fermer l'extension.
Si vous choisissez la première option, il vous sera demandé de donner un nom au projet que vous créez et d'indiquer l'adresse URL de base pour l'enregistrement.
Si vous choisissez la troisième option, il vous sera uniquement demandé d'entrer le nom du projet, donc si vous n'avez pas d'enregistrements précédents, vous devrez également entrer l'URL de base manuellement afin de commencer l'enregistrement.
Une fois que l'extension est prête grâce aux étapes précédentes, la prochaine chose à faire est de cliquer sur le bouton REC situé en haut à droite de l'écran. Une nouvelle fenêtre s'ouvrira dans le navigateur sélectionné et chargera la page indiquée dans la section URL de base. A partir de ce moment, toute action effectuée sur cette fenêtre sera sauvegardée dans le projet d'extension de Selenium IDE.
Une fois que toutes les actions à superviser ultérieurement dans l'exécution de la transaction ont été effectuées, cliquez sur Stop recording (à l'endroit où se trouvait précédemment le bouton REC) pour arrêter l'enregistrement. Il vous sera demandé de saisir un nom pour le test de transaction. Un projet dans un enregistrement est composé d'un ou plusieurs tests, qui seront exécutés de manière séquentielle plus tard, s'il y en a plus d'un, lors du chargement ultérieur dans Pandora FMS. Un nouvel agent sera créé pour chaque test d'un projet.
Ensuite, une vue similaire à la suivante s'affiche:
Si vous le souhaitez, il est possible d'ajouter manuellement des commandes supplémentaires, telles que des séparateurs de phase, des commentaires ou des commandes d'attente (wait).
Une liste complète des commandes supportées se trouve dans la section Commandes pour les fichiers SIDE.
Pour les ajouter à l'enregistrement en cours, cliquez avec le bouton droit de la souris sur l'une des commandes existantes et cliquez sur l'option Insert new command:
Cette opération insère une ligne de commande vide au-dessus de la commande cliquée, qui peut être modifiée pour ajouter la commande manuellement. Il suffit de saisir la commande souhaitée dans le champ Command:
Par exemple, pour ajouter une commande de démarrage de phase, utilisez:
//phase_start:nom_de_la_phase
Par rapport aux versions précédentes, il ne sera plus nécessaire d'indiquer la fin de la phase pour la clôturer, celle-ci sera automatiquement détectée lorsqu'une nouvelle commande phase_start
apparaîtra ou, à défaut, lorsque la transaction se terminera.
Lorsque l'enregistrement est terminé et que vous avez fini de configurer les commandes supplémentaires que vous souhaitez utiliser, vous pourrez générer le fichier .side
, dont le contenu sera celui que vous pourrez utiliser dans la configuration de l'exécution du plugin. Pour ce faire, cliquez sur l'icône de la disquette en haut à droite de la fenêtre de Selenium IDE, nommez le fichier dans un chemin facile à trouver et sauvegardez-le.
Une fois que le fichier .side
a été généré, si vous l'ouvrez, vous verrez qu'il s'agit en fait d'un fichier JSON. Ce contenu au format JSON est ce qui doit être copié et collé dans la boîte JSON de l'IDE Selenium à l'étape Test setup dans la configuration plugin, à discuter ci-dessous.
Exécution de la transaction à partir de la découverte
Pour pouvoir exécuter les enregistrements à partir de l'outil Discovery dans la console Web Pandora FMS, créez une tâche à l'aide de Selenium 4 dans le menu Applications (menu Management → Discovery → Applications):
Un nom doit être donné à la tâche et un groupe doit lui être attribué. Il est possible d'ajouter une description et de modifier d'autres paramètres importants tels que le temps d'intervalle ou le type d'exécution :
Les paramètres suivants apparaîtront à l'étape suivante:
Celles-ci vous permettront de choisir l'un des quatre modes d'exécution disponibles mentionnés ci-dessus, ainsi que d'indiquer dans quel navigateur web la transaction sera exécutée. Pour des raisons de compatibilité, il est recommandé d'utiliser le même navigateur que celui dans lequel la transaction a été enregistrée avec Selenium IDE.
Une fois le type d'exécution indiqué, différentes options de configuration apparaissent en fonction de l'option choisie.
Docker Local
Par défaut, l'image à utiliser est indiquée; ne remplissez donc rien, sauf si vous souhaitez utiliser une autre image. S'il est nécessaire d'utiliser le profil d'un utilisateur spécifique dans l'exécution de la transaction, l'utilisateur doit être indiqué. Le chemin d'accès aux profils de navigateur utilisés peut également être spécifié.
Docker à distance
Les données nécessaires pour se connecter via SSH au serveur distant qui exécutera la tâche doivent être indiquées. Pour les données de connexion, les champs adresse IP ou FQDN, port SSH et identifiants d'accès sont requis.
Le chemin temporaire hébergera les fichiers nécessaires à l'exécution, et les autres champs sont les mêmes que dans l'exécution de Docker Local.
Driver Local
Dans ce type d'exécution, vous pouvez indiquer le chemin d'accès aux drivers nécessaires à l'exécution et qui peuvent être téléchargés à partir de la bibliothèque Pandora FMS.
Quant aux tokens, ils se trouvent au bas de la page:
- Virtual display: Utilisé pour l'exécution afin d'utiliser un bureau virtuel. S'il n'est pas spécifié, le serveur exécutant la tâche doit avoir un bureau physique (moniteur) attaché.
- Headless driver: Pour le navigateur utilisé dans ce mode, qui convient aux environnements autres que le bureau.
Il est recommandé de laisser les deux tokens marqués.
Driver à distance
Dans le quatrième mode disponible, l'URL de connexion au pilote distant driver doit être spécifiée. Le fonctionnement des paramètres d'utilisateur et de profil est le mentionné ci-dessus.
Après avoir sélectionné le mode de connexion, une dernière étape doit être configurée avant de finaliser la configuration de la tâche.
Il est possible de spécifier l'acceptation de certificats non sécurisés et la supervision des statistiques temporelles. Il existe également d'autres paramètres de configuration tels que la résolution d'écran à laquelle la transaction sera exécutée, le temps global timeout et le temps d'attente entre les commandes d'enregistrement.
Enfin, comme indiqué à l'étape enregistrer la transaction, le contenu JSON du format .side
doit être saisi dans le dernier champ nommé Selenium IDE JSON.
Une fois la tâche configurée, elle s'exécutera automatiquement après quelques secondes ou devra être forcée à s'exécuter manuellement, en fonction de la manière dont la tâche a été configurée lors de la première étape.
Lorsque l'exécution est terminée, vous pouvez consulter la vue récapitulative, qui indique quels agents ont été créés à partir de la tâche, lesquels appartiennent à des agents de test et combien il y a d'agents de chaque type.
Résultats de la tâche Discovery PFMS
Dans le cas de l'exemple, le projet Selenium a été nommé Selenium 4
et comporte deux tests différents appelés Test 1
et Test 2
. Si l'option Monitor time statistics est cochée lors de la configuration de la tâche, un agent portant le nom du projet qui hébergera les données de performance sera créé.
D'autre part, les agents des transactions enregistrées seront également créés, un pour chaque test. Dans ce cas, il y aura deux agents portant les noms Test 1
et Test 2
:
Résultats du suivi
Après l'exécution, des agents seront créés avec les données de la transaction et contiendront les modules de l'exécution de la transaction. L'agent contenant les données de performance doit également contenir les modules pour ces informations et l'option Monitor time statistics doit être activée au préalable dans la dernière étape de la configuration de la tâche.
Les modules à ajouter aux agents de test sont au moins les trois suivants:
- Global status: Il indique si le test s'est déroulé correctement ou s'il a échoué à un moment donné.
- Global time: Il s'agit d'un module numérique qui indique le nombre de secondes nécessaires à la réalisation du test.
- Last error screenshot: Si le test a échoué, une capture d'écran de ce qui apparaît dans le navigateur au moment de l'échec est stockée dans ce module.
Dans la description des modules Global status et Last error screenshot, le texte de l'erreur renvoyée par le moteur Selenium est indiqué.
Si des phases ont été configurées dans la transaction, des modules indiquant l'état et le temps de chaque phase sont créés en plus des modules ci-dessus. Il est important de savoir que le Global time ne doit pas nécessairement être la somme des modules time de chaque phase, car le Global time comprend également les temps d'ouverture et de fermeture du navigateur, pour ne citer que quelques exemples.
Quant aux données de performance, elles indiquent le temps en millisecondes qu'il a fallu pour effectuer chacune des opérations pour atteindre le site. Dans le cas présent, il s'agit de:
- URL stat DNS: Temps nécessaire à la résolution DNS de l'URL.
- URL stat TSSL: Temps nécessaire à l'établissement de la connexion SSL.
- URL stat TST: Temps de réception du premier octet.
- URL stat TT: Durée totale de la transaction pour accéder à l'URL.
- URL stat TTC: Temps de connexion TCP.
- URL stat TTCP: Temps nécessaire pour que la connexion soit prête à transférer des données.
- URL status: Il vérifie si la connexion à l'URL peut être établie.
Sur ces modules, comme sur tous les autres, vous pouvez créer des alertes, des rapports et d'autres actions dans le reste du menu de Pandora FMS.
Il existe également une vue dans l'agent dédiée uniquement aux données WUX. Elle se trouve dans les onglets en haut à droite:
En plus de widgets pour les tableaux de bord qui font spécifiquement référence aux modules WUX:
L'enregistrement présenté ci-dessus est un enregistrement simple. Si l'enregistrement a été configuré pour être divisé en différentes phases, celles-ci seront également différenciées dans la vue des données WUX:
Il en va de même pour widgets:
Enfin, il est également possible d'effectuer du web scraping (webscrapping), qui sera décrit plus loin.
Exécution manuelle (à partir d'un agent, en tant que plugin)
Pour l'exécution manuelle, un Agent logiciel peut être configuré à l'intérieur du serveur Pandora FMS lui-même qui héberge le plugin de Selenium 4 pour effectuer ces exécutions et qui génère les fichiers XML pour chacune d'entre elles, afin d'obtenir différents agents, et chacun avec ses modules respectifs.
Pour ce faire, le plugin Selenium 4 peut être configuré en tant qu'agent plugin en utilisant des chemins absolus, de sorte que le chemin vers le fichier plugin et les fichiers de configuration nécessaires puissent être indiqués.
Le modèle qui peut être utilisé pour configurer l'agent plugin en utilisant Selenium 4 ressemble à ceci:
module_plugin /var/spool/pandora/data_in/discovery/pandorafms.selenium.4/bin/pandora_selenium -c /chemin/d'accès/au/fichier/de/configuration -s /chemin/d'accès/au/fichier/side -t nom_de_la_tâche -i intervalle_agent -g ID_groupe -x
Il est important de noter que le fichier de configuration de la tâche et le fichier .SIDE chargé sur la machine doivent être configurés manuellement au préalable.
Pour préparer le fichier de configuration, vous pouvez vous rendre dans la section « Paramètres et configuration », où vous trouverez le modèle de données à remplir. Dans le cas du fichier .SIDE, il suffira de copier le fichier généré par l'extension Selenium IDE.
Il est important d'appliquer le paramètre -x
car il est chargé de générer les données d'exécution au format XML qui seront traitées ultérieurement. Dans le cas des exécutions par défaut via Discovery, le format des données reçues est JSON:
Si vous le souhaitez, il est également possible d'exécuter le plugin à partir d'un agent logiciel qui n'est pas installé sur le même serveur que Pandora FMS. Pour ce faire, il faut télécharger localement sur le serveur hébergeant l'agent logiciel le paquet .disk
du plugin, le renommer pour modifier son format en .zip
et décompresser le contenu pour avoir accès au binaire et au reste des fichiers dont il peut avoir besoin pour fonctionner.
En ce qui concerne la configuration nécessaire, le fichier doit également être créé manuellement, comme indiqué ci-dessus, et vous devez également utiliser les paramètres -x
pour envoyer des données au format XML et -S
pour indiquer l'adresse IP et le port du serveur Tentacle qui recevra le XML, qui est généralement la même machine que celle qui héberge le serveur Pandora FMS. L'exécution aurait un aspect similaire à ce qui suit:
module_plugin /chemin/d'accès/au/fichier/binaire/pandora_selenium -c /chemin/d'accès/au/fichier/de/configuration -s /chemin/d'accès/au/fichier/side -t nom_de_la_tâche -i intervalle_agent -g ID_groupe -x -S Adresse_IP_Tentacle_server:Port_Tentacle
Il est important de se rappeler que chaque XML généré avec ce type d'exécution correspondrait à un agent différent, de sorte que les modules ne seraient pas hébergés dans l'agent où le plugin est exécuté.
Enfin, il convient de noter que, bien qu'il soit possible d'effectuer ce type d'exécutions, soit manuellement à partir du terminal, soit à partir de l'agent logiciel, il est recommandé de toujours les effectuer à partir de la section Discovery PFMS, étant donné que la méthode d'exploitation a été conçue à l'origine pour fonctionner de cette manière et que la configuration de la tâche est considérablement plus simple.
Paramètres et réglages
Paramètre court / paramètre long | Description |
---|---|
-v --verbose | Facultatif. Il affiche des informations sur la progression de l'exécution du plugin par STDERR. |
-c <task_configuration_file_path> --conf <task_configuration_file_path> | Le chemin vers le fichier de configuration de la tâche à exécuter. |
-s <side_file_path> --side <side_file_path> | Le chemin du fichier SIDE à exécuter. |
-t <task_name> --task <task_name> | Le nom unique de la tâche. Il est utilisé pour générer des éléments temporaires qui n'écrasent pas d'autres tâches en cours d'exécution sur le même ordinateur. |
-i <agents_interval> --interval <agents_interval> | Facultatif. L'intervalle de supervision des agents générés par le plugin. Par défaut: 300 . |
-g <group_id> --group <group_id> | Facultatif. L'ID du groupe dans lequel vous souhaitez créer les agents générés par plugin. Par défaut : 0 . |
-x --xml_mode | Facultatif. S'il est spécifié, le plugin générera des fichiers XML pour les agents au lieu de les sortir via STDOUT. |
-S <server:port> --server <server:port> | Facultatif. Pour la génération d'agents par XML. L'adresse IP et port du serveur Tentacle auquel envoyer les fichiers XML. |
-T <temp_folder> --temp <temp_folder> | Facultatif. Pour la génération d'agents par XML. Le répertoire temporaire pour les fichiers XML qui sont générés avant d'être envoyés au serveur Tentacle indiqué. |
Fichier de configuration (--conf
)
{ "worker_mode": "<local | remote>", "run_mode": "<driver | docker>", "browser": "<chrome | firefox>", "driver_url": "http://<selenium_ip>:<selenium_port>/wd/hub", "ssh_address": "<ssh_ip>", "ssh_port": "<ssh_port>", "ssh_user": "<ssh_user>", "ssh_password": "<ssh_password>", "ssh_password_encrypt": "<1 | 0>", "ssh_temp_folder": "<ssh_temp_folder_path>", "docker_image": "<docker_image>", "chromedriver_path": "<chromedriver_path>", "chrome_binary_path": "<chrome_binary_path>", "chrome_user_data_dir": "<chrome_user_data_dir>", "chrome_profile": "<chrome_profile>", "geckodriver_path": "<geckodriver_path>", "firefox_binary_path": "<firefox_binary_path>", "firefox_profile": "<firefox_profile>", "accept_insecure_certs": "<1 | 0>", "monitor_stats": "<1 | 0>", "browser_width": "<width>", "browser_height": "<height>", "global_timeout": "<seconds>", "wait_between_commands": "<seconds>" }
Chaque élément de la configuration étant:
worker_mode | Il indique si la transaction sera lancée localement ou à distance. |
run_mode | Il indique si le plugin sera exécuté avec drivers ou dans Docker. |
browser | Il indique le navigateur web à utiliser pour la transaction. |
driver_url | Il spécifie l'URL du serveur Selenium 4 pour exécuter la transaction. Uniquement en mode remote/driver . |
ssh_address | Il spécifie l'adresse IP du serveur auquel vous connecterez via SSH pour exécuter plugin. Uniquement en mode remote/docker . |
ssh_port | Facultatif. Il indique ne numéro de port pour la connexion SSH. Par défaut: 22 . Uniquement en mode remote/docker . |
ssh_user | Il spécifie l'utilisateur pour la connexion SSH. Uniquement en mode remote/docker . |
ssh_password | Il indique le mot de passe de l'utilisateur ssh_user . Uniquement en mode remote/docker . |
ssh_password_encrypt | Facultatif. Il indique si le mot de passe ci-dessus est envoyé crypté ( 1 ) ou non (0 ). Uniquement en mode remote/docker . Les mots de passe peuvent être cryptés en exécutant plugin à partir du serveur Pandora FMS Discovery. |
ssh_temp_folder | Facultatif. Il spécifie le chemin d'accès au répertoire temporaire pour les fichiers nécessaires à l'exécution sur le serveur SSH. Par défaut: /tmp . Uniquement en mode remote/docker . |
docker_image | Facultatif. Il spécifie le nom de l'image Docker pour exécuter la transaction. Par défaut: pandorafms/pandora_selenium_headless . Uniquement en mode docker . |
chromedriver_path | Facultatif. Il indique le chemin d'accès au fichier binaire chromedriver .1) Uniquement en mode local/driver |
chrome_binary_path | Facultatif. Il indique le chemin d'accès au fichier binaire de Google Chrome.2) Uniquement en mode local/driver . |
chrome_user_data_dir | Facultatif. Il spécifie le chemin d'accès au répertoire de données ( data dir ) de Google Chrome que vous souhaitez utiliser. |
chrome_profile | Facultatif. Il spécifie le nom du profil Google Chrome à utiliser. Il doit se trouver dans le data_dir . S'il n'est pas spécifié, le profil par défaut du navigateur sera utilisé. |
geckodriver_path | Il indique le chemin d'accès au fichier binaire geckodriver .3) Uniquement en mode local/driver . |
firefox_binary_path | Il indique le chemin d'accès au fichier binaire de Mozilla Firefox.4) Uniquement en mode local/driver . |
firefox_profile | Facultatif. Il spécifie le chemin d'accès au répertoire du profil Mozilla Firefox que vous souhaitez utiliser. S'il n'est pas spécifié, le profil par défaut du navigateur sera utilisé. |
accept_insecure_certs | Facultatif. S'il est réglé sur 1 , les certificats SSL non sécurisés des URL accessibles pendant la transaction seront automatiquement acceptés comme valides. |
monitor_stats | Facultatif. Si la valeur est 1 , les modules de statistiques de connexion sont générés à l'URL principale du fichier SIDE spécifié. |
browser_width | Facultatif. Il indique la largeur du navigateur web en pixels pour la transaction. Par défaut: 1920 . |
browser_height | Facultatif. Il indique la hauteur du navigateur en pixels pour la transaction. Par défaut: 1080 . |
global_timeout | Facultatif. Il indique le timeout global en secondes pour les tâches effectuées par le plugin, telles que la connexion au serveur Selenium, le démarrage des drivers du navigateur, etc. C'est également le timeout par défaut utilisé pour l'exécution des commandes Selenium. Par défaut: 5 . |
wait_between_commands | Facultatif. Il indique le temps en secondes que plugin attendra entre chaque commande SIDE qu'il exécute. Cette valeur peut être définie avec le SIDE lui-même en utilisant la commande setSpeed . Par défaut: 0 . |
Par exemple:
{ "worker_mode" : "local", "run_mode" : "driver", "browser" : "chrome", "driver_url" : "", "ssh_address" : "", "ssh_port" : "", "ssh_user" : "", "ssh_password" : "", "ssh_password_encrypt" : "", "ssh_temp_folder" : "", "docker_image": "", "chromedriver_path": "", "chrome_binary_path": "", "chrome_user_data_dir" : "", "chrome_profile" : "", "geckodriver_path": "", "firefox_binary_path": "", "firefox_profile" : "", "accept_insecure_certs" : "0", "monitor_stats" : "1", "browser_width" : "1920", "browser_height" : "1080", "global_timeout" : "10", "wait_between_commands" : "0.2" }
Commandes du fichier .SIDE
Les commandes personnalisées suivantes peuvent être configurées pour générer des modules supplémentaires (toutes les commandes personnalisées doivent commencer par //
):
//phase_start:<phase_name> | Il indique le début d'une phase, qui durera jusqu'à ce qu'une autre commande soit trouvée //phase_start ou jusqu'à la fin du test. Cela génère un module indiquant l'état de la phase et un autre module indiquant le temps nécessaire à sa réalisation. Par exemple: //phase_start:Login |
//getValue;<module_name>;<module_type>;<regexp> | Il génère un module avec le contenu de la page web qui peut être obtenu par une expression régulière dans le code source de la page web. Par exemple: //getValue;Temperature;generic_data;<span class="temperature">(\d+\.*\,*\d*).*</span> Il obtiendrait la temperature indiquée dans une page web avec cette ligne dans son code source: <p> The temperature of the solar panel is: <span class="temperature">54 º C</span></p> |
//getVariable;<module_name>;<module_type>;<variable> | Il génère un module avec le contenu d'une variable stockée dans le SIDE avec les commandes store . Par exemple: //getVariable;List count;generic_data;listCount |
//getScreenshot;<module_name> | Il génère un module avec une capture d'écran du navigateur actuel. Par exemple: //getScreenshot;URL home |
Les commandes dans les fichiers SIDE qui peuvent être exécutées avec le plugin sont les suivantes (veuillez voir la documentation de Selenium IDE pour l'utilisation):
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 |
do |
doubleClick |
doubleClickAt |
dragAndDropToObject |
editContent |
else |
elseIf |
executeScript |
executeAsyncScript |
forEach |
if |
mouseDown |
mouseDownAt |
mouseMoveAt |
mouseOut |
mouseOver |
mouseUp |
mouseUpAt |
open |
pause |
removeSelection |
run |
runScript |
select |
selectFrame |
selectWindow |
sendKeys |
setSpeed |
setWindowSize |
store |
storeAttribute |
storeJson |
storeText |
storeTitle |
storeValue |
storeWindowHandle |
storeXpathCount |
submit |
times |
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 |
webdriverChooseCancelOnVisiblePrompt |
webdriverChooseOkOnVisibleConfirmation |
while |
Web Scrapping
Il est possible de faire du webscrapping avec Pandora FMS, bien qu'il ait été conçu pour mesurer les performances et les résultats de transactions complexes, mais c'est faisable.
Le web scraping est une technique utilisée pour extraire des informations de sites web de manière automatisée. Au lieu de collecter les données manuellement, des programmes ou scripts sont utilisés pour parcourir les pages web, identifier les informations pertinentes et les stocker dans une base de données ou un fichier structuré.
Ce qui est décrit ici peut être utilisé à la fois pour WUX en mode découverte (Selenium 4 uniquement) et pour WUX en mode intégré au serveur (version 777 ou antérieure), avec Selenium 3.
Il y a deux façons fondamentales de le faire, la plus simple est de prendre une valeur directement à partir de l'ID d'une page web (en utilisant l'inspecteur de l'extension Selenium console lui-même et en le passant à Pandora FMS) ou en utilisant une regexp pour traiter une donnée HTML dans crudo. Dans les deux cas, vous devez introduire une commande supplémentaire dans la transaction Selenium.
Par exemple, l'utiliser comme webscrapper pour lire le nombre d'évaluations d'un article dans la boutique Amazon®, en utilisant la capture de valeur et en la stockant dans une variable:
Elle sera stockée sous le type TEXT
dans une variable appelée REVIEW
. Et une commande supplémentaire echo
sera créée pour afficher la valeur de cette variable:
Vous pouvez voir ici les deux dernières étapes du code .side
généré par l'extension Selenium:
{ "id": "55546183-fc2f-45b5-af7e-2ff27464798f", "comment": "", "command": "storeText", "target": "css=.a-spacing-medium> .a-size-base", "targets": [ [ "css=.a-spacing-medium> .a-size-base", "css:finder" ], [ "xpath=//div[@id='cm_cr_dp_d_rating_histogram']/div[3]/span", "xpath:idRelative" ], [ "xpath=//span/div/div/div/div/div/div[3]/span", "xpath:position" ] ], "value": "REVIEW" }
{ "id": "69cd3cea-5981-4011-bb3d-88a1b58dc18e", "comment": "", "command": "echo", "target": "${REVIEW}", "targets": [], "value": "" }
L'inconvénient de cette méthode est qu'elle sera enregistrée sous la forme d'une chaîne de texte, puisqu'en utilisant un identifiant (dans ce cas un span), tout ce qui se trouve entre les balises de cet identifiant est enregistré.
Si vous souhaitez obtenir une valeur d'une manière plus « raffinée », vous devez utiliser la méthode parser avec une expression régulière pour traiter le texte:
- Dans ce cas, un nombre sera pris et converti en module numérique dans le Pandora FMS.
- En tant que code source pour le
.side
, la commande créée sera convertie en un code similaire à celui-ci. Il est important de noter que les caractères tels que les guillemets doubles sont escapés"
ou le caractère\
. - Ce qu'il faut faire, c'est déterminer le morceau de code HTML avec le texte à capturer, pour ce faire, analyser avec un inspecteur HTML la zone de code où la valeur va être prise, exemple:
Vous cherchez ce qui se trouve entre les tags:
<span id="acrCustomerReviewText" class="a-size-base">''
et
</span>
Si une regexp est appliquée, elle ressemblera à ce qui suit:
<span id="acrCustomerReviewText" class="a-size-base">(\d+) valoraciones</span>
Pour ce faire, il faut créer une commande « factice » (commentée avec la mention //
) à la fin de la séquence Selenium (escaping tout caractère avec "
ou \
) et en utilisant la commande getValue
pour créer un module nommé AMZ_001
, de type generic_data
(c'est-à-dire numérique) et en fournissant l'échappement regexp:
{ "id": "ae557b25-b096-4d6e-baa7-f7219ac16e04", "comment": "", "command": [ "//getValue;AMZ_001;generic_data;", "<span id=\"acrCustomerReviewText\"", " class=\"a-size-base\">(\\d+) valoraciones</span>" ], "target": "", "targets": [], "value": "" }
Après l'exécution, cela renverra des données conventionnelles de Pandora FMS, avec lesquelles vous pouvez appliquer des alertes, les inclure dans des graphiques, des rapports et bien d'autres choses encore.
Comme la transaction utilise un véritable navigateur, vous pouvez même établir la connexion avec un utilisateur spécifique et naviguer pour finalement obtenir les données nécessaires.
WUX Server et Selenium 3
Documentation décrite dans l'annexe technique « Supervision WUX avec le serveur WUX et Selenium 3».
/usr/share/pandora_server/util/selenium_headless_drivers/chromedriver
/usr/share/pandora_server/util/selenium_headless_drivers/chrome/google-chrome
/usr/share/pandora_server/util/selenium_headless_drivers/geckodriver
/usr/share/pandora_server/util/selenium_headless_drivers/firefox/firefox