M-Detect

Analyseur de log pour IBMI

De MappingDoc
Révision datée du 19 mars 2021 à 14:35 par Jdieu (discussion | contributions) (Obligatoires)

Introduction

Cette documentation décrit le cas d'usage d'un de nos clients de M-Detect permettant de détecter certaines erreurs dans leurs logs IBMI. (QPJOBLOG)

De manière générale, l'analyseur de log M-Detect permet de :

  • Anticiper les incidents
  • Identifier les erreurs dans la masse d’information
  • Réduire le temps consacré à l’analyse
  • Prévenir le bon interlocuteur suivant les règles définies


Le but principal étant d'Assurer la qualité de service en anticipant les incidents.

Principe de fonctionnement

Le fichier spool de log QPJOBLOG est envoyé à un serveur ONYX. Un fichier de paramétrage est utilisé pour déterminer quelles lignes du fichier QPJOBLOG doivoient être incluse et/ou excluse du rapport généré et envoyé par email par M-Detect.

MDE 1.jpg


MDE 2.jpg


Invocation

Connect

M-Detect repose sur le principe de Connect paramétrable. Celui-ci prend en paramètre le fichier de paramétrage.

Son invocation se fait à l'aide d'une boite workflow M-Connect TEXT. Le nom de celui-ci est : SPLFEXTRAC

Paramètres avancés

- Type de sortie : LISTING --> Equivalent à ajouter un paramètre DB.MAPPING_DATASTREAM=LISTING

Obligatoires

*DB.INFILE_DATA : fichier SPOOL (QPJOBLOG) encodé en UCS2
*DB.INFILE_PARAM : fichier de paramètres de filtrage
*DB.OUTFILE_METADATA : fichier XML avec les infos relatives au spool
*DB.OUTFILE_DATA : fichier SPOOL après filtrage des lignes
*DB.MLL_PATH : emplacement des fichiers .mll (sans "/" ni "\" à la fin)

(exemple : D:\Mapping\email) Attention les fichiers .mll doivent être encodés en UCS2

*DB.MAPPING_WIDTHPAGE=9999

Facultatifs

*DB.FROMAS400 : paramètre DESTOPT passé en LPR

(exemple : USER=SMET;OUTQ=PRT1;SPLF=QPJOBLOG;STARTPAGE=00000;STOPPAGE=000000;JOB=FACPRD;JOBNUM=123456;DATESPL=20201125)

Liste des attributs utilisables dans le paramètre "DB.FROMAS400" :

- USER ou U - SPLF ou S - SPLNUM ou SPLFNUM ou N - JOB ou J - JOBNUM ou JN - OUTQ ou O - HOSTNAME ou H - USRDTA ou UD - DATESPL ou D (date au format AAAAMMJJ) - NBPAGES ou P - STARTPAGE ou F - STOPPAGE ou L

*DB.USER : attribut "USER" du spool AS400
*DB.SPLF : attribut SPLFNAME du spool AS400
*DB.SPLNUM : attribut Numéro du spool AS400
*DB.JOB : attribut JOBNAME du spool AS400
*DB.JOBNUM : attribut JOBNUMBER du spool AS400
*DB.OUTQ : attribut OUTORI du spool AS400
*DB.HOSTNAME : hostname à l'origine du SPLF
*DB.USRDTA : attribut USRDTA du spool AS400
*DB.DATESPL : attribut DATE du spool AS400 (au format AAAAMMJJ)
*DB.NBPAGES : nombre de pages du SPLF (obtenu après comptage avec map_count_page -type:TXT)
*DB.STARTPAGE : numéro de la première page à traiter
*DB.LASTPAGE : numéro de la dernière page à traiter
*DB.ADD_MESSAGE_IN_FILE : "true" pour ajouter le message de l'email au début du fichier texte DB.OUTFILE_DATA

Les données présentes dans FROMAS400 peuvent être surchargées par les par les paramètres tels que DB.USER , DB.SPLF etc....

Paramétrage

Le fichier de paramétrage permet de paramétrer les remontés de logs.

Syntaxe du XML de paramétrage

Voir l'exemple joint à ce package

Chaque élément <spool> correspond à une configuration de SPOOL à traiter.


Elément <attributes> : ---------------------- Attributs du spools utilisés pour le filtrage niveau SPOOL

Eléments fils de <attributes> :

<USER>

<SPLF>

<SPLNUM> (ou <SPLFNUM>)

<JOB>

<JOBNUM>

<OUTQ>

<HOSTNAME>

<USRDTA>

<NBPAGES>


Attributs xml

- cmp : permet de définir le type de comparaison à effectuer

- égalité : cmp="-eq" (valeur par défaut si non spécifié)

- commence par : cmp="begin"

- différent : cmp="-ne"

- supérieur : cmp="-gt"

- supérieur ou égal : cmp="-ge"

- inférieur : cmp="-lt"

- inférieur ou égal : cmp="-le"

- contient : cmp="contains"

- ne contient pas : cmp="not-contains"

Attention : les comparaisons "-lt" , "-gt" , "-le" et "-ge" sont de type numériques (1 < 00002)

Exemple : <attributes> <SPLF cmp="begin">QP</SPLF> </attributes>

Pour traiter les Spools dont le nom commence par QP


Elément <variables> : --------------------- Permet de définir une liste de valeurs à récupérer directement dans le spool et de les nommer afin de les réutiliser pour l'objet, le message du mail, les adresses d'expéditeur ou de destinataires, mais aussi à partir du workflow en lisant le XML de réponse.

Un élément fils <variable> par variable à récupérer. Chaque variable sera disponible dans le fichier XML de réponse, mais également utilisables au niveau des propriétés d'envoi de l'email via la syntaxe suivante : NOM_VARIABLE

Attributs : - name : nom de la variable - page : page du spool dans laquelle se trouve la valeur - line : numéro de la ligne - col : position du caractère dans la ligne - len : longueur de la valeur à récupérer

Exemple : <variables> <variable name="VARENV" page="1" line="4" col="42" len="3"/> </variables>


Elément <email> : -----------------

Propriétés de l'email à envoyer

- <from> : expéditeur - <to> : destinataire(s) - <cc> : destinataire(s) en copie - <object> : sujet du message - <message> : corps du message - <mll-file> : fichier mailing list (.mll) (5 maximum)

Tous ces éléments peuvent contenir des variables sous la forme xxxxx, que ce soient des attributs du spools ou des valeurs issues du contenu du Spool

Les éléments <to> , <cc> et <mll-file> peuvent être multiples, mais 5 maximum pour <mll-file>

Exemple :

<email> <from>citmapping_VARENV@mappingsuite.com</from> <to>nsmet@mappingsuite.com</to> <to>test@gmail.com</to> <to>mon_fichier_mll.mll</to> <cc>jdieu@mappingsuite.com</cc> <cc>user2@mappingsuite.com</cc> <mll-file>Mailing_list1.mll</mll-file> <mll-file>Mailing_list2_425.mll</mll-file> <object>ASP1 ANO - Journalière - JOB de USERJOBNUM - DATESPL</object> <message>Ceci est le corps de message de mon mail pour USER</message> </email>


Elément <lines> : -----------------

Liste les critères de sélection de chaque ligne

- <include> : lignes à récupérer - <exclude> : lignes à éliminer parmi les lignes récupérées - <nextline> : permet de définir comment reconnaitre une "ligne suivante", c'est à dire la suite d'une ligne répondant aux critères de sélection. - <reject-splf> : si une ligne correspond à ce critère, alors le spool est entièrement rejeté


Attributs : - cmp : type de comparaison à effectuer cmp="contains" : contient (par défaut) cmp="not-contains" : ne contient pas cmp="empty" : doit être vide (ou uniquement des espaces) - col : recherche à partir d'une position particulière dans la ligne - len : longueur de la ligne à prendre en compte pour la recherche


Exemple

<param>
   <spool>
     <attributes>                                      //Si le spool reçu depuis IMBI respecte les critères suivants
             <USER cmp="not-contains">MER</USER>                  //Le nom de l'utilisateur du spool ne contient pas la valeur "MER"                  
             <SPLF>QPJOBLOG</SPLF>                                //Le nom du spool est QPJOBLOG                  
             <SPLF>QPJOBLOG1</SPLF>                               //OU Le nom du spool est QPJOBLOG1                                
             <SPLNUM cmp="-le">1<SPLNUM>                          //Le numéro de spool est inférieur ou égal à 1  
             <JOB cmp="begin">FACPRD</JOB>                        //Le nom du job commence par FACPRD
             <HOSTNAME>ASP2</HOSTNAME>                            //Le nom du host vaut FACPRD
             <NBPAGES cmp="-le">500</NBPAGES>                     //Le nombre de pages est inférieur ou égal à 500
             <OUTQ cmp="-ne">PRT9</OUTQ>                          //L'OUTQ d'origine IBMI est différent de PRT9
             <USRDTA>MY CUSTOM DATA</USRDTA>                      //L'attribut du spool Référence utilisateur est égale à MY CUSTOM DATA
     </attributes>
     <variables>                                       //On initialise des variables avec le contenu du spool
             <variable name="VARENV" page="1" line="4" col="42" len="3"/>   //On crée et initialise la variable VARENV avec le contenu du spool en page 1, ligne 4, colonne 42 sur une longueur de 3
             <variable name="test" page="2" line="9" col="60" len="6"/>     //On crée et initialise la variable test avec le contenu du spool en page 2, ligne 9, colonne 60 sur une longueur de 6
     </variables>
     <email>                                          //paramétrage de l'envoi d'email
             <from>citmapping@mappingsuite.com</from>
             <to>nsmet@mappingsuite.com</to>
             <to>test@gmail.com</to>
             <cc>jdieu@mappingsuite.com</cc>
             <mll-file>ACH600_CDCHS.mll</mll-file>
             <mll-file>Mailing_list_2.txt</mll-file>
             <object>[[test]] [[VARENV]]- ASP1 ANO - Journalière - [[JOB]] de [[USER]] n° [[JOBNUM]] - [[DATESPL]] --> QPJOBLOG</object>
              <message>Ceci est le corps de message de mon mail pour [[USER]]</message>
     </email>
     <lines>                                          //paramétrage des lignes à inclure/exclure dans le rapport
             <include col="58" cmp="-eq">ERR</include>    //Inclure si dans la ligne il y a la valeur "ERR" en colonne 58
             <include col="40" len="50">err</include>     //Inclure si dans la ligne il y a la valeur "err" entre la colonne 40 et la colonne 90
             <include>non restauré(s) dans</include>      //Inclure si dans la ligne il y a la valeur "non restauré(s)"
             <include>; code fin 40 .</include>           //Inclure si dans la ligne il y a la valeur "'; code fin 40"'
             <include>; code fin 30 .</include>           //Inclure si dans la ligne il y a la valeur "; code fin 30"
             <include>; code fin 50 .</include>           //Inclure si dans la ligne il y a la valeur "; code fin 50"
             <include>; code fin 20 .</include>           //Inclure si dans la ligne il y a la valeur "; code fin 20"
             <include>; code fin 60 .</include>           //Inclure si dans la ligne il y a la valeur "; code fin 60"
             <include>LOT DEJA TRAITE LE</include>        //Inclure si dans la ligne il y a la valeur "LOT DEJA TRAITE LE"
             <include>lot refuse</include>                //Inclure si dans la ligne il y a la valeur "lot refuse"
             <exclude>: la facture de la précédente</exclude>               //Exclure si dans la ligne il y a la valeur ": la facture de la précédente"
             <exclude>Message....: ERR : données GOP incomplètes</exclude>  //Exclure si dans la ligne il y a la valeur "Message....: ERR : données GOP incomplètes"
             <exclude>ERR : impossible de traiter Org</exclude>             //Exclure si dans la ligne il y a la valeur "ERR : impossible de traiter Org"
             <exclude>ERR : Paramètrage non trouvé.</exclude>               //Exclure si dans la ligne il y a la valeur >"ERR : Paramètrage non trouvé."
             <nextline col="1" len="39" cmp="empty"></nextline>             //Si une ligne est vide entre la colonne 11 et la colonne 39, alors la ligne correspond à la suite du message de la ligne d'avant. Celle-ci doit alors être inclus dans le rapport           
             <reject-splf>Spool_demo</reject-splf>                          //si une ligne correspond à ce critère, alors le spool est entièrement rejeté
     </lines>
   </spool>
</param>