Menu


Stacks Image 37777
Voici un dépoussiérage de la supervision de scénario Web avec certaines préconisations Centreon. Nous allons dédier un poller Centreon avec Sélénium. L'avantage de ce montage est d'éviter d'augmenter le temps d'exécution des services sur les pollers existants. Nous utiliserons une distribution Debian Stretch car il n'y aura pas de restriction avec la version du PHP contrairement avec un serveur Central. Les nouveaux plugins Centreon seront mis aussi à contribution pour utiliser les nouveaux scénarios en XML du plugin Katalon.

1 Configuration du poller Selenium

Nous utiliserons une ISO debian 9 en 64 bits équipée d'un serveur SSH, de la version open source de java, du serveur virtuel X xvfb et du navigateur iceweasel (firefox). Attention, n'hésitez pas à augmenter la RAM disponible, Selenium tourne sous Java, donc très gourmand en mémoire.

1.1 Installation du poller

Pour installer notre poller Centreon, nous utiliserons pour cet exemple la procédure d'installation automatisée que j'ai réalisée. Vous pouvez utiliser aussi le dépôt Centreon pour Debian ou si vous êtes plus courageux, la procédure d'installation des sources. Installez git.
apt-get install git-core -y
Récupérez le script sur mon GitHub et exécutez-le.
git clone https://github.com/kermith72/auto_install.git
cd auto_install/debian9/
bash centreon_poller.sh
L'installation doit se dérouler comme ceci :
================| Centreon Poller Install details v 1.16 |=============
                  Clib       : 1.4.2
                  Connector  : 1.1.3
                  Engine     : 1.8.1
                  Plugin     : 2.2
                  Broker     : 3.0.14
                  Centreon   : 2.8.24
                  Install dir: /usr/share
                  Source dir : /usr/local/src
======================================================================

Step1  => repo non-free on Stretch Install                       [ OK ]
Step2  => Clib install                                          [ OK ]
Step3  => Centreon Perl and SSH connectors install              [ OK ]
Step4  => Centreon Engine install                               [ OK ]
Step5  => Monitoring plugins install                            [ OK ]
Step6  => Centreon plugins install                              [ OK ]
Step7  => Centreon Broker install                               [ OK ]
Step8  => Centreon template generation                          [ OK ]
Step9  => Centreon web interface install                        [ OK ]
Step10 => Post install                                          [ OK ]


Go to Central Server for configuration
Stacks Image 46988
Remarques
Attention, avec cette installation, tous les plugins sont installés dans /usr/lib/centreon/plugins. Vous devrez adapter votre configuration Centreon en fonction de ce paramètre.

1.2 Installation de selenium

Nous allons continuer avec Sélénium
apt-get install openjdk-8-jre xvfb iceweasel libtest-www-selenium-perl -y
Vérifiez la version de firefox, elle ne doit pas être supérieure à la version 52
dpkg -l | grep firefox
ii  firefox-esr                    52.9.0esr-1~deb9u1             amd64        Mozilla Firefox web browser - Extended Support Release (ESR)
Créons un utilisateur selenium
useradd selenium -s /bin/bash -d /home/selenium -m selenium
Ensuite nous devrons télécharger le moteur du serveur Selenium (archive jar) dans le dossier /opt/selenium créé préalablement. Pour récupérer l'archive, visitez le site de Selenium. Pour faciliter la maintenance, créez un lien symbolique.
mkdir /opt/selenium
chown selenium: /opt/selenium
cd /opt/selenium
wget http://selenium-release.storage.googleapis.com/2.52/selenium-server-standalone-2.52.0.jar
ln -s selenium-server-standalone-2.52.0.jar selenium-server-standalone.jar
On peut vérifier le bon fonctionnement du serveur selenium
cd /opt/selenium
java -jar selenium-server-standalone.jar
Vous devriez avoir ces messages suivants
15:16:51.393 INFO - Launching a standalone Selenium Server
15:16:51.456 INFO - Java: Oracle Corporation 25.171-b11
15:16:51.457 INFO - OS: Linux 4.9.0-3-amd64 amd64
15:16:51.507 INFO - v2.52.0, with Core v2.52.0. Built from revision 4c2593c
15:16:51.667 INFO - Driver provider org.openqa.selenium.ie.InternetExplorerDriver registration is skipped:
registration capabilities Capabilities [{ensureCleanSession=true, browserName=internet explorer, version=, platform=WINDOWS}] does not match the current platform LINUX
15:16:51.672 INFO - Driver provider org.openqa.selenium.edge.EdgeDriver registration is skipped:
registration capabilities Capabilities [{browserName=MicrosoftEdge, version=, platform=WINDOWS}] does not match the current platform LINUX
15:16:51.673 INFO - Driver class not found: com.opera.core.systems.OperaDriver
15:16:51.674 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
15:16:51.676 INFO - Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped:
registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform LINUX
15:16:51.843 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
15:16:51.844 INFO - Selenium Server is up and running
Quittez l'application (CTRL+C). Nous allons créer les scripts pour les services. Editons le premier service xvfb.
vi /etc/systemd/system/xvfb.service
saisir les lignes suivantes
[Unit]
Description=X Virtual Frame Buffer Service
After=network.target
[Service]
Type=simple
User=selenium
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24
[Install]
WantedBy=multi-user.target
Editez le deuxième service selenium.
vi /etc/systemd/system/selenium.service
saisir les lignes suivantes
[Unit]
Description=Selenium
After=xvfb.target
[Service]
Type=simple
User=selenium
PIDFile=/var/spool/selenium/pid/master.pid
EnvironmentFile=-/etc/sysconfig/network
Environment=DISPLAY=:99
Environment=DBUS_SESSION_BUS_ADDRESS=/dev/null
ExecStart=/usr/bin/java -Dselenium.LOGGER=/opt/selenium/selenium.log -jar /opt/selenium/selenium-server- standalone.jar
ExecStop=kill `cat /var/spool/selenium/pid/master.pid`
[Install]
WantedBy=multi-user.target
Activez les services
systemctl enable xvfb
systemctl enable selenium
Démarrez les services.
systemctl start xvfb
systemctl start selenium
Vérifiez que selenium écoute sur le port 4444, il faudra installer le paquet net-tools
netstat -an | grep 4444
tcp6       0      0 :::4444                 :::*                    LISTEN
Stacks Image 1973
Remarques
Les bonnes pratiques de Selenium préconisent la désactivation de la mise à jour automatique de Firefox pour éviter la formation de processus zombie lors de l'exécution des tests. Dans notre cas sous Debian, ce problème est réglé puisque les mises à jour sont réalisées par le processus apt-get.

1.3 Vérification du serveur Selenium

Il est possible de tester le fonctionnement du serveur Selenium en saisissant l'url suivante
http://[ip serveur selenium]:4444/wd/hub/static/resource/hub.html
Vous devriez visualiser l'écran suivant.
Stacks Image 4550
fonctionnement du serveur Selenium
Il est possible de vérifier la création de session. Cliquez sur Create Session
Stacks Image 46911
Au bout de quelques secondes, une session est créée
Stacks Image 46916

1.4 Test du plugin Centreon

Préparons un dossier pour stocker les scénarios.
mkdir /var/lib/centreon_waa
chown centreon-engine:centreon-engine /var/lib/centreon_waa
Créer un scénario simple avec le plugin katalon. Notre exemple sera l'ouverture de l'interface web de Centreon
Stacks Image 46927
Ensuite cliquez sur le bouton Export et choisissez le format XML.
Stacks Image 46932
Copiez les lignes et insérez-les dans le fichier /var/lib/centreon_waa/testcentreon.xml. Nous allons tester notre scénario avec la commande suivante.
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::selenium::plugin --mode=scenario-katalon --selenium-hostname=127.0.0.1 --selenium-port=4444 --directory=/var/lib/centreon_waa --scenario=testcentreon
Le serveur selenium étant sur le poller nous indiquons la boucle locale avec la variable --selenium-hostname. Le scénario doit être mentionné sans l'extension. Le résultat est le suivant.
OK: Successful steps : 6/6 (100.00%), Failed steps : 0/6 (0.00%), Total execution time : 1910.89 ms - All steps state are ok | 'successful'=6;;;0;6 'successful_prct'=100.00%;;;0;100 'failed'=0;;;0;6 'failed_prct'=0.00%;;;0;100 'time_scenario'=1910.89ms;;;0; 'time_step_1'=1315.33ms;;;0; 'time_step_2'=57.94ms;;;0; 'time_step_3'=34.42ms;;;0; 'time_step_4'=436.25ms;;;0; 'time_step_5'=29.29ms;;;0; 'time_step_6'=33.21ms;;;0;
Nous avons le nombre d'étape et le temps d'exécution. Vous pouver ajoutez des seuils --warning-time-scenario et --critical-time-scenario. Il y a aussi une option --debug qui peut être utile.
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=apps::selenium::plugin --mode=scenario-katalon --selenium-hostname=127.0.0.1 --selenium-port=4444 --directory=/var/lib/centreon_waa --scenario=testcentreon --debug
OK: Successful steps : 6/6 (100.00%), Failed steps : 0/6 (0.00%), Total execution time : 846.64 ms - All steps state are ok | 'successful'=6;;;0;6 'successful_prct'=100.00%;;;0;100 'failed'=0;;;0;6 'failed_prct'=0.00%;;;0;100 'time_scenario'=846.64ms;;;0; 'time_step_1'=629.99ms;;;0; 'time_step_2'=36.16ms;;;0; 'time_step_3'=66.30ms;;;0; 'time_step_4'=27.88ms;;;0; 'time_step_5'=44.48ms;;;0; 'time_step_6'=39.13ms;;;0;
Step '1' [command: open, target: http://172.16.209.80/centreon/index.php] state is 'OK', Execution time : 629.99 ms
Step '2' [command: click, target: name=useralias] state is 'OK', Execution time : 36.16 ms
Step '3' [command: type, target: name=useralias, value: admin] state is 'OK', Execution time : 66.30 ms
Step '4' [command: click, target: name=password] state is 'OK', Execution time : 27.88 ms
Step '5' [command: type, target: name=password, value: password] state is 'OK', Execution time : 44.48 ms
Step '6' [command: click, target: name=submitLogin] state is 'OK', Execution time : 39.13 ms

1.5 Intégration dans l'IHM de Centreon

Vous avez intégré votre poller selenium dans votre Central. Nous allons maintenant passer à la configuration des commandes et templates. Commençons par la commande App-Selenium-Scenario-katalon
Stacks Image 46951
La commande sera la suivante :
$CENTREONPLUGINS$/centreon_plugins.pl --plugin=apps::selenium::plugin --mode=scenario-katalon --selenium-hostname=$HOSTADDRESS$ --selenium-port=$_HOSTSELENIUMPORT$ --directory=$_HOSTSCENARIODIR$ --scenario=$_SERVICESCENARIONAME$ --timeout=$_SERVICETIMEOUT$ --warning-time-scenario=$_SERVICEWARNING$ --critical-time-scenario=$_SERVICECRITICAL$
Nous créons le template de service App-Selenium-Scenario-Katalon
Stacks Image 46960
Finissons par le template d'hôte App-Selenium-Katalon qui contiendra le service App-Selenium-Scenario-Katalon. Il faudra ajouter deux macros SCENARIODIR et SELENIUMPORT.
Stacks Image 46965
N'oubliez pas la relation.
Stacks Image 46970
Maintenant, il nous reste à créer notre hôte avec le scénario. Ajoutez un hôte.
Stacks Image 46975
Modifiez le service pour l'adapter au scénario. Si vous avez d'autres scénarios à rajouter, il suffira d'ajouter un service.
Stacks Image 46980
Mes seuils sont très hauts pour pallier le manque de puissance de mes machines ;). Appliquez la configuration et après quelques secondes, vous pouvez visualiser le résultat.
Stacks Image 46985
comments powered by Disqus