Table des matières


Web account

Compte web

Rôle

Installation

COMPLETE permet de mettre le chemin complet des programmes dans le VOC

Configurer le(s) pool(s) qui communiqueront avec le wiservice

Champ Description Exemple
Pool name Nom donné au pool.
:W: Il ne peut y avoir deux serveur DB avec un nom de pool identique qui communique avec un même WIService sinon le WIService ne sait pas sur quel serveur DB transmettre la requête
Pool Actif = Oui. Le WI.HDL.MNG gère ce pool
= Non : Le WI.HDL.MNG gère ce pool
= TEST : utilisé lorsque le développeur veut lancer une ligne WI.HDL en clair sans que le WI.HDL.MNG ne gère ce pool
Account Le compte UV sur lequel sera exécuté les requêtes HTTP dans le cas où le compte n'est pas spécifié dans l'application web.
En principe, le compte UV est toujours spécifié dans l'application WEB.
Durée de vide La durée de vie maximum d'une ligne WI.HDL. Après cette durée de vie, le programme WI.HDL.MNG en démarre une nouvelle.
Une ligne WI.HDL est redémarrée car après X temps d'utilisation, la vitesse d'exécution des requêtes peut diminuer
Hostname Le nom ou l'adresse IP du serveur sur lequel est installé le WIService
Niv Le niveau de log :
- 0 : Debug
- 1 : Info
- 2 : Warning
- 3 : Error
Plus le niveau de log est bas, plus il y aura des messages de logs dans le répertoire “log path”. Pour plus d'info
log path Le chemin du répertoire de log.
En linux, il faut préfixer le chemin par “\” car une première ligne ne peut commencer par “/” dans une fenêtre SB
Port le numéro de port tco de communication avec le WIService
Min le nombre de lignes WI.HDL à démarrer pour ce pool et pour ce hostname
Max Utilisé en D3 et pas en UV/UD.
Min F Utilisé en D3 et pas en UV/UD.
Max F Utilisé en D3 et pas en UV/UD.
Noop Utilisé en D3 et pas en UV/UD.
Check Utilisé en D3 et pas en UV/UD.
Ancienne procédure

Ancienne procédure pour lancer le WI.HDL.MNG au démarrage du serveur

Comment faire pour qu'un compte puisse recevoir des requêtes WS

Procédure pour lancer le WI.HDL.MNG après le démarrage du service universe

Windows

Linux

  1. Copier le fichier /etc/init.d/UV.phantoms
  2. Copier le fichier /etc/UV.phantoms.conf
  3. Copier divers scripts dans /infodata/scripts-live :
    1. common
    2. common.conf
    3. runas
  4. Configurer le fichier /etc/UV.phantoms.conf.
    Exemple :
    #UV.phantom service configuration file
    #synthax : - delimiter : ":"
    #          - field 1 : "hostname -s" conc
    #          - field 2 : sudo user
    #          - field 3 : path of UV account
    #          - field 4 : how many occurences of phantom
    #          - field 5 : command (without verb PHANTOM)
    nomDeMonServeur:monUserLinux:/data/uvdb/WEB:1:PHANTOM WI.HDL.MNG

Procédure pour vérifier que le WI.HDL.MNG fonctionne

Windows

Cette procédure appelle un script powershell toutes les x minutes via les taches planifiées pour s'assurer que l'url “ping” retourne toujours un code http 200.

Pour mettre en place ca, voici les différentes étapes à suivre:

1. Créer l'application WI.PING

A faire par les devs

Créer l'application WI.PING dans le compte web (reprendre les informations de masterprod du compte web).

Ensuite il vous faut tester la requête ping qui est appelé par le watchdog.

Exemple :

https://Myserver/wiapp/ping?w3exec=WI.PING&w3hostname=XXXX

2. Installation du package infodata-PSTools

3. Configuration infodata-PSTools

4. Créer la tache planifiée watchdog

Exemple :

Import-module -Name Infodata-PSTools -Force
 
$me = "WI.HDL.MNG" 
$err= 503
 
$task = @{
    Name    = "WI.HDL.MNG" 
    Url     = "https://{urlFixme}/wiapp/ping?w3hostname={w3hostnameFixme}&w3exec=WI.PING" 
    Subject = "ALERT : WI.HDL.MNG STOPPED {NomClient}"
    Mailto  = @("jcd@infodata.lu", "{AutreDestinataireClient}")
}
 
New-InPsWatchdogUrlScheduledTask @task
 
$task = @{
    source  = "InPsWatchdog-$($me)"
    eventId = $err
    action  = "START-PROCESS -FilePath ""$($env:UVHOME)\BIN\UV.exe"" -ArgumentList ""PHANTOM WI.HDL.MNG"" -workingDirectory ""$($env:UVDB)\WEB"" -RedirectStandardOutput ""{fixmePathRoot}\RuntimeLogs\infodata-pstools\InPsWatchdog-$($me)-$($err).action.log"" "
}
New-InPsEventLogScheduledTask @task 

FIXME : Erreur sur Repetition not found. On a du ajouter la réétition manullemenet

Si vous avez l'erreur suivante: La propriété « Repetition » est introuvable dans cet objet. Vérifiez qu’elle existe et qu’elle peut être définie. Au caractère C:\Program Files\WindowsPowerShell\Modules\Infodata-PSTools\1.230717.1237\onUVServer\WatchDogs\New-InPsWatchdogUrlScheduledTask.ps1:100 : 9 + $Trigger.Repetition = ( New-ScheduledTaskTrigger -Once -Repet … + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation : (:) [], RuntimeException + FullyQualifiedErrorId : PropertyAssignmentException

Solution: Modifier manuellement les taches planifiées en allant dans le planificateur de tâches, aller sur la section “Bibliothèque du Planificateur de tâches” → “Integrix”. Ensuite séléctionner la première tâche InPsWatchdog-WI.HDL.MNG, aller en bas sur Onglet “Déclencheur” puis clique droit et propriété. Cocher “Répéter la tâche toutes les 15 mins pour une durée de Indéfiniment et cocher Arrêter toutes les tâches à l'issue de la durée de répétition et puis enregistrer.

5. Tester le bon fonctionnement

Documentation technique

Liste des tâches planifiées créées

3 taches permettent au service WI.HDL.MNG de fonctionner correctement.

  1. Tâche ”Universe coldstart after UV Started”.
    C’est cette tâche qui permet de démarrer le service qui permet au serveur WEB et au serveur Integrix de communiquer entre eux.
    Ce service démarre lorsque le service Universe démarre
  2. Tâche « InPsWatchdog-WI.HDL.MNG
    Cette tache exécute toutes les 15 minutes l’url « https://ws.nordparts.lu/wiapp/ping?w3exec=wi.ping »
    Si la réponse est une erreur 503 Plus de handler disponible », la tache 3 est exécuté par cette tache
  3. Tache “InPsWatchdog-WI.HDL.MNG-503”
    Cette tâche est exécutée par la tâche 2.
    Elle démarre le service qui permet au serveur WEB et au serveur Integrix de communiquer entre eux.

Logs liés aux taches planifiées

Le répertoire de logs des tâches 2 et 3 se trouve sur le serveur Integrix habituellement dans le répertoire « C:\INTEGRIX\LOG_WEB\infodata-pstools » . ” C:\INTEGRIX” est la racine des applications intégrix“. \ En fonction de l'installation, le répertoire peut- se trouver autre part.

Si tout va bien, seul le fichier « InPsWatchdog-WI.HDL.MNG.log » a sa date de modifié toutes les 15 minutes. Ca veut dire que la tâche 2 se lance bien toutes les 15 minutes

La date et heure des fichiers « InPsWatchdog-WI.HDL.MNG-503 » correspondent à la dernière fois où il y a eu un problème. 17 :06 aujourd’hui lors de mon test

Mails d’alerte

S’il y a un problème, Infodata recoit un premier mail d’alerte qui nous informe que le service ne fonctionne plus.

Exemple :

On reçoit ensuite un deuxième mail nous informant que le service a été démarré

En résumé

Si ca se reproduit, on sera informé par mail dans les 15 minutes au plus tard et le service redémarrera automatiquement. On pourra tout de suite analyser la raison du problème. Raisons possibles :

Linux

None

Start/Stop/Status WI.HDL.MNG

Dans le fichier FWI.LOG.EXE/WI_MANAGER_AAAA_MM_JJ.txt, vous pourrez savoir ce que le WI.HDL.MNG a démarré
Status du WI.HDL.MNG Ecran
Ligne 1 WI.HDL.MNG est démarré ou non WI.HDL.MNG IS RUNNING
WI.HDL.MNG ISN'T RUNNING
Ligne 2 Si le WI.HDL.MNG est en cours d'arret WI.HDL.MNG IS SHUTTING DOWN
Detail ligne WI.HDL
Nom Description Exemple
PID le pid de la ligne WI.HDL
Si le pid est un nombre à plus de 3 chiffres, alors la ligne a été lancé en phantom
sinon la ligne WI.HDL a été lancé en clair
11502
Pool (Actif) Nom du pool(fichier FWI.CFG) et si la ligne est active ou non
Actif : Oui, Non ou test.
Un Pool “Test” n'est pas géré par le WI.HDL.MNG.
Ca permet aux développeurs de tester leurs WS
UNIVERSE (Oui)
Hostname Le nom ou l'adresse IP du serveur où il y a le WIservice 192.160.0.2
Port le port de communication entre la ligne WI.HDL et le WIService 1505
Started la date et heure de démarrage de ligne WI.HDL 13/10/2015 16:59:50
Last status la date et heure de la dernière activité de la ligne WI.HDL,
ce qui correspond soit :
- au dernier appel WS
- au date time du dernier heathbeat de la ligne WI.HDL qui se fait toutes les 20 secondes
14/10/2015 08:33:40
Status le status de la ligne WI.HDL. Ca permet de savoir ce qu'elle est entrain de faire.
Last Application le nom de la dernière WIAPP (FWI.APP) qui a été appelé AC.UNIV
listes des status d'une ligne WI.HDL
  1. Starting : La ligne WI.HDL est en cours de démarrage. C'est le premier statut d'une ligne WI.HDL
    Vous ne devrez jamais voir ce statut
  2. Socket : La ligne WI.HDL essaye de se connecter au WIService
    si ce status persiste plus de 5 secondes, c'est que la ligne WI.HDL n'arrive pas à se connecter au WIService
  3. Identification : Après avoir recu une réponse du WIService signalant qu'il a bien recu la demande de connexion, la ligne WI.HDL s'identifie auprès du WIService pour signaler qui elle est (envoie son nom de pool)
  4. Waiting request : la ligne WI.HDL est libre et fonctionnelle. Elle est prête à recevoir une nouvelle requête.
    C'est le statut qui sera le plus souvent visible
  5. Retry connection : Si la ligne WI.HDL a perdu la connexion avec le WIService.
  6. Something to do : C'est le premier statut lorsque la ligne WI.HDL a recu une requête. Ce statut est mis avant que la ligne WI.HDL commence à analyser la requête recue et donc avant d'avoir exécuté la routine de traitement
  7. Verifying application : Status mis lorsque le WI.HDL va vérifier la requête recue, si le compte distant est correctement configuré et l'authentification application et/ou utilisateur
  8. Executing Subroutine XXX : Status lorsqu'une routine est appelé et qu'elle n'a pas encore rendu la main.
    Si ce status persiste plus de X temps, ca peut signifier que la routine a planté.
  9. Responding : La routine appelée a terminée son exécution et la ligne WI.HDL va envoyer le résultat au wiservice.
  10. Sending Error : Envoie d'un message d'erreur au wiservice. Code http différent de 200
  11. File : Open connexion en mode fichier et pas socket. Le mode fichier a été mis au frigo. Ce status n'est donc pas utilisé.
  12. Shutdown : la ligne WI.HDL est arrêtée. Ca se produit lorsqu'on passe le status actif(HDL.ACT) à “N” de la ligne WI.HDL.
    Le WI.HDL.MNG peut arrêter une ligne WI.HDL tous les x temps pour en démarrer une nouvelle

WI.HDL.MNG dans UV.COLDSTART

Vérification installation

Lien vers la page de procédure de vérification

Log

Log des pools

Exemple

Mode Info
L	14:21:06 27 JUL 2015	Starting WI.HANDLER on 18100 as jcd to www.infodata.lu:1505 working in pool XXX	
L	14:21:06 27 JUL 2015	Opening the socket	
L	14:21:06 27 JUL 2015	Connected, saying hello	
L	14:21:06 27 JUL 2015	Index : 3, WIService Version :INFODATA	
L	14:21:31 27 JUL 2015	----------------------------------------------------	
L	14:21:31 27 JUL 2015	REQUEST.URL : /dos	
L	14:21:31 27 JUL 2015	WIAPP FINAL = AC.XXX		
Mode Erreur

Le mode erreur affichera uniquement les messages d'erreur

Log applications

Exemple

Voici ce que donne la même requête en fonction du niveau de log :

Mode Debug
L	14:53:24 27 JUL 2015	----------------------------------------------------	
L	14:53:24 27 JUL 2015	WIAPP FINAL = AC.XXX	
L	14:53:24 27 JUL 2015	Values
W3HOSTNAME= XXX
W3EXEC= AC.XXX
L	14:53:24 27 JUL 2015	CGI
UPN= TP
HTTP_USER_AGENT= Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36
ACCEPT-LANGUAGE= fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
ACCEPT-ENCODING= gzip, deflate, sdch
X-FORWARDED-HOST= webserver.com
REMOTE_ADDR= 192.168.0.79
X-FORWARDED-FOR= 192.168.0.79
SERVER_PROTOCOL= HTTP/1.0
CONNECTION= Keep-Alive
ACCEPT= */*
USER-AGENT= Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36
HOST= localhost:1508
REQUEST_METHOD= GET
COOKIE= WITOKEN=451737541357; _ga=GA1.2.1196159395.1431519094; WITOKEN=451737541357
CACHE-CONTROL= no-cache
QUERY_STRING= w3hostname=XXX&w3exec=AC.XXX
HTTP_HOST= webserver.com
X-FORWARDED-SERVER= webserver.com
REMOTE_HOST= 192.168.0.79
CSP= active
REQUEST_PATH= /dos	
L	14:53:24 27 JUL 2015	Want to execute >AC.XXX<	
L	14:53:24 27 JUL 2015	Trouve pas session en variable	
L	14:53:24 27 JUL 2015	Session ID =451737541357	
L	14:53:24 27 JUL 2015	DIFF 1501200000-1501253436*	
L	14:53:24 27 JUL 2015	ANALYSE de url GET:dos	
L	14:53:24 27 JUL 2015	Check dos	
L	14:53:24 27 JUL 2015	Matches dos sur dos	
L	14:53:24 27 JUL 2015	URL OK	
L	14:53:24 27 JUL 2015	Routine finale WI.RFL	
L	14:53:24 27 JUL 2015	READ CATALOG DE WI.RFL	
L	14:53:24 27 JUL 2015	Call auth user WI.AUT.USR.XXX	
L	14:53:24 27 JUL 2015	Call auth application WI.AUT.APP.ACX	
L	14:53:24 27 JUL 2015	Try to execute >WI.RFL<	
L	14:53:24 27 JUL 2015	LOGTO AC.CCC	
L	14:53:24 27 JUL 2015	Executing WI.SUB WI.RFL	
L	14:53:24 27 JUL 2015	 ---> Debut routine WI.RFL	
L	14:53:24 27 JUL 2015	 ---> Fin routine  (Duree de la request : 6 ms)
	
L	14:53:24 27 JUL 2015	RETOUR WEB55	
L	14:53:24 27 JUL 2015	Cookies out
WITOKEN= 451737541357	
L	14:53:24 27 JUL 2015	Header out
CONTENT-TYPE= application/json; charset=UTF-8
X-WITOKEN= 451737541357
ACCESS-CONTROL-ALLOW-ORIGIN= *	
L	14:53:24 27 JUL 2015	Resultat[1,200] = 
[{"id":"AC.XXX","label":"XXX TEST WS"}]	

Mode Info
L	14:31:37 27 JUL 2015	----------------------------------------------------	
L	14:31:37 27 JUL 2015	WIAPP FINAL = AC.XXX
L	14:31:37 27 JUL 2015	Want to execute >AC.XXX<	
L	14:31:37 27 JUL 2015	Session ID =451737541357	
L	14:31:37 27 JUL 2015	ANALYSE de url GET:dos	
L	14:31:37 27 JUL 2015	Matches dos sur dos	
L	14:31:37 27 JUL 2015	Routine finale WI.RFL	
L	14:31:37 27 JUL 2015	LOGTO AC.XXX	
L	14:31:37 27 JUL 2015	Executing WI.SUB WI.RFL	
L	14:31:37 27 JUL 2015	 ---> Debut routine WI.RFL	
L	14:31:37 27 JUL 2015	 ---> Fin routine  (Duree de la request : 7 ms)
Mode Error

Aucun message sauf s'il y a une erreur.

L	15:04:51 27 JUL 2015	Error
404= [WI] Could not find any good url 	

Log RFL

Mode Debug
L	15:05:17 27 JUL 2015	Objet RFL : AC_DOS	
L	15:05:17 27 JUL 2015	Conversion de 'CONTENT' au format OEM	
L	15:05:17 27 JUL 2015	METHODE : GET	
L	15:05:17 27 JUL 2015	Parametre : 	
L	15:05:17 27 JUL 2015	1. : GET	
L	15:05:17 27 JUL 2015	2. : AC_DOS	
L	15:05:17 27 JUL 2015	subroutine de selection : AC.RFL.DOS.SEL	
L	15:05:17 27 JUL 2015	Apres subroutine process de selection Erreur : 1,No authorized account	
E	15:05:17 27 JUL 2015	Erreur : No authorized account	

Log WI.HDL.MNG

Exemple de log

boundary_WI_MANAGER_2015_10_13.txt
H	LogId=WI_MANAGER_2015_10_13.txt	12:22:17 13 OCT 2015
D	LOGNAME=jcd
D	USERID=
D	PHANTOM=1
D	ACCOUNT=WEB55 /data/uvdbsb55/WEB55
L	12:22:17 13 OCT 2015	----------------- STARTING WI.MANAGER '11963'-----------------	
L	12:22:17 13 OCT 2015	Active pool list : 	
L	12:22:17 13 OCT 2015	                   - pool 'UNIV'	
L	12:22:17 13 OCT 2015	                   - pool 'JCD'	
L	12:22:17 13 OCT 2015	Pas de WI.HDL actif	
L	12:22:17 13 OCT 2015	Nettoyage du fichier FWI.HDL : SELECT FWI.HDL WITH HDL.ACT.SEL # "O" AND WITH HDL.STA.STP.DAT <= 17453 AND WITH HDL.STA.STP.TIM < 44477.4248 =  0 record(s) selected to SELECT list #0. 	
L	12:22:17 13 OCT 2015	Starting PHANTOM WI.HDL...	
L	12:22:17 13 OCT 2015	        1. PHANTOM WI.HDL -H www.infodata.lu -P 1505 -N UNIV	
L	12:22:17 13 OCT 2015	           RESULT : Phantom process started with process ID 11966.	
L	12:22:17 13 OCT 2015	        2. PHANTOM WI.HDL -H masterdev -P 1506 -N JCD	
L	12:22:17 13 OCT 2015	           RESULT : Phantom process started with process ID 11967.	
L	12:22:17 13 OCT 2015	Nombre de WI.HDL a arreter : 0	
L	12:30:28 13 OCT 2015	----------------- STARTING WI.MANAGER '12072'-----------------	
L	12:30:28 13 OCT 2015	WI.MANAGER is already started	
L	10:51:49 14 OCT 2015	-------------------------------------------------------	
L	10:51:49 14 OCT 2015	WARNING!!! temps d'ex‚cution de la routine a d‚épassé‚ le temps limite de 60 sec. HDL : 11966	
L	10:51:49 14 OCT 2015	
    - Etat de la ligne WI.HDL '11966' lors du crash : 
    - Date de démarrage : 10/13/2015 - 12:22:17
    - Date du dernier traitement : 10/14/2015 - 10:50:22
    - Application : AC.UNIV
    - Status : Executing Subroutine WI.RFL
    - Session : 119661745438951B

    - Headers (Nombre : 23)
        - ORIGIN : http://localhost:8081
        - CONTENT-LENGTH : 385
        - HTTP_USER_AGENT : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
        - ACCEPT-LANGUAGE : en-US,en;q=0.8,fr;q=0.6
        - X-WITOKEN : 119661745438951B
        - ACCEPT : */*
        - SERVER_PROTOCOL : HTTP/1.0
        - X-FORWARDED-SERVER : univ.infodata.lu
        - REMOTE_ADDR : 12.34.56.78
        - USER-AGENT : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
        - X-SSO-USER-ID : bob.sponge@staging-abplatform.net
        - REQUEST_METHOD : POST
        - ACCEPT-ENCODING : gzip, deflate
        - X-FORWARDED-FOR : 12.34.56.78
        - HOST : localhost:1508
        - REFERER : http://localhost:8081/
        - REQUEST_PATH : /dco
        - X-FORWARDED-HOST : univ.infodata.lu
        - CONTENT-TYPE : text/plain;charset=UTF-8
        - CONNECTION : Keep-Alive
        - QUERY_STRING : w3hostname=UNIV&w3exec=AC.UNIV
        - HTTP_HOST : univ.infodata.lu
        - REMOTE_HOST : 12.34.56.78

    - Params (Nombre : 9)
        - REQUEST_CONTENT : {"Id":"4154",suite du JSON}
        - W3HOSTNAME : UNIV
        - W3EXEC : AC.UNIV
        - APPID : AC.UNIV
        - CORS : 1
        - AUTHUSER : WI.AUT.USR.UNIV
        - AUTHAPP : WI.AUT.APP.ACX
        - MAX_STS_EXEC : 60
        - RFLOBJ : AC_DCO

    - Layer stack : PORT.STATUS PID 11966 LAYER.STACK

There are currently 1 uniVerse sessions; 0 interactive, 1 phantom

  Pid....  User name.  Printer Segment  Last command processed....................
    11966  jcd         0xACEBD142  SELECT AC.UNIV.FAC.EXE WITH EXE.DB <= "03.05.15" AND WITH EXE.DF >= "03.05.15" [ AC.P.BDG.DCO.CPT @ 0x123A ]

Layer type.......  Program name....................  Address...
BASIC run machine  AC.P.BDG.DCO.CPT                  0x0000123A
BASIC run machine  SB.PROCESS                        0x00000924
BASIC run machine  AC.P.RFL.DCO.UPD                  0x00000926
BASIC run machine  SB.PROCESS                        0x00000924
BASIC run machine  WI.RFL.SUB                        0x00000C2C
BASIC run machine  WI.RFL                            0x00000430
BASIC run machine  WI.SUB                            0x000000E4
Verb             
Command Language 
Execute          
BASIC run machine  WI.HDL.CTR                        0x0000126C
BASIC run machine  WI.HDL                            0x000006F2
Verb             
Command Language 

---------------------------------------------------------------------	
L	10:51:49 14 OCT 2015	Pole UNIV trouve	
L	10:51:49 14 OCT 2015	PHANTOM WI.HDL -H www.infodata.lu -P 1505 -N UNIV	
L	10:51:49 14 OCT 2015	Demande d'arret du WI.HDL : '11966'	
L	10:52:20 14 OCT 2015	Executing Subroutine WI.RFL , On patiente 30 secondes avant de forcer l'arrˆt	
L	10:52:50 14 OCT 2015	Forcer l'arret du WI.HDL : 'LOGOUT 11966' : 	
L	10:53:19 14 OCT 2015	verifie si le PID existe toujours : 'PORT.STATUS PID 11966'	
L	10:53:19 14 OCT 2015	
There are no uniVerse sessions that match the specified conditions.

	
L	10:53:19 14 OCT 2015	Succes, PID suivant supprimé‚ : '11966	
1)
Le WI.HDL est une ligne qui permet le traitement en basic d'une requête HTTP