Analyse des enregistrements de journal avec plusieurs horodatages

Certains enregistrements de journal peuvent comporter plusieurs horodatages, tels que l'heure d'entrée de journal, l'heure de début et l'heure de fin d'un processus ou d'une transaction, que vous pouvez capturer dans leurs propres champs. Après avoir capturé les heures de début et de fin dans leurs propres champs, vous pouvez utiliser la commande eval pour effectuer des manipulations de date sur ces champs, par exemple, pour obtenir la durée écoulée entre les deux. Reportez-vous à eval.

Oracle Log Analytics comprend plusieurs champs définis par Oracle qui permettent de stocker les informations d'heure et d'heure qui ne sont pas l'heure réelle de l'entrée de journal :

  • Heure de fin d'événement

  • Heure de début d'événement

  • Heure de génération d'événement

  • Heure du premier événement

  • Heure de fin de contrat

  • Heure de début du contrat

  • Heure de déclenchement de l'alerte

  • Heure de collecte

  • Heure de détection

Les données stockées dans ces champs doivent être au format ISO-8601 :

2018-07-04T23:43:34.000Z

Lors de la création de l'analyseur, vous pouvez utiliser la macro {TIMEDATE} une seule fois pour exprimer l'heure d'entrée de journal. Pour les champs temporels supplémentaires, vous devez extraire les données à l'aide de l'une des méthodes ci-dessous, en fonction du cas d'emploi.

Cas 1 : le journal contient déjà les informations d'heure et de date au format ISO-8601

Si le journal contient déjà des informations supplémentaires d'heure et de date au format ISO-8601, vous pouvez les extraire en tant que chaînes dans l'analyseur de base de la définition de champ étendu.

Prenons l'exemple de journal suivant :

July 4, 2018 23:43:12 Server1 ModuleA Transaction completed. Start=2018-07-04T23:45:34.000Z, End=2018-07-04T23:46:39.000Z

Le journal contient des informations d'heure et de date pour l'entrée de journal, l'heure de début et l'heure de fin.

  1. Pour obtenir l'heure d'entrée du journal, créez l'analyseur de base. Reportez-vous à Création d'un analyseur.

    {TIMEDATE}\s(\S+)\s(\S+)\s(.*)
  2. Ouvrez la boîte de dialogue Créer une source. Reportez-vous à Création d'une source.

  3. Sélectionnez l'analyseur de base que vous avez créé à l'étape 1.

  4. Indiquez le chemin de fichier de l'exemple de journal.

  5. Dans l'onglet Champs étendus, ajoutez les définitions de champ étendu à la source de journal pour extraire les champs d'heure et de date :

    • Dans le champ Message : Start={Event Start Time:\S+}

    • Dans le champ Message : End={Event End Time:\S+}

  6. Enregistrez la source que vous avez créée.



Vous remarquez à présent que les deux champs Heure de début de l'événement et Fin de l'événement sont remplis avec les valeurs du journal. Dans l'explorateur de journaux, vous pouvez consulter les heures en millisecondes depuis la période.

Cas 2 : le journal ne contient pas les informations d'heure et de date au format ISO-8601

Si les champs temporels supplémentaires que vous voulez extraire ne sont pas au format ISO-8601, vous devez suivre les étapes ci-dessous pour l'analyse :

Prenons un exemple de fichier journal dans lequel l'intégralité du fichier est une entrée de journal unique :

+---------------------------------------------------------------------------+
Application Object Library: Version : 12.2
Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
FNDWFBG: Workflow Background Process
+---------------------------------------------------------------------------+
Current system time is 04-JUL-2018 17:25:23
+---------------------------------------------------------------------------+
**Starts**04-JUL-2018 17:25:23
**Ends**04-JUL-2018 18:25:23
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+
Successfully resubmitted concurrent program FNDWFBG with request ID 239834523 to start at 04-JUL-2018 18:30:23 (ROUTINE=IERKWEP)
+---------------------------------------------------------------------------+
No completion options were requested.
Output file size: 
0
Output is not being printed because:
The print option has been disabled for this report.
+---------------------------------------------------------------------------+
Concurrent request completed successfully
Current system time is 04-JUL-2018 18:30:23
+---------------------------------------------------------------------------+
  1. Créez l'analyseur de base. Reportez-vous à Création d'un analyseur.

    .*?Current system time is {TIMEDATE}.*\*\*Starts\*\*([\S\ ]+).*?\*\*Ends\*\*([\S\ ]+).*

    Les champs que vous devez sélectionner pour l'analyse sont les suivants :

    • Version

    • Heure de début d'événement

    • Heure de fin d'événement

    Pour l'exemple de journal ci-dessus, cochez la case Gérer l'intégralité du fichier comme une entrée de journal unique. Aucune expression régulière d'en-tête n'est requise.

  2. Ouvrez la boîte de dialogue Créer une source de journal. Reportez-vous à Création d'une source.

  3. Sélectionnez l'analyseur de base que vous avez créé à l'étape 1.

  4. Indiquez le chemin de fichier de l'exemple de journal.

  5. Accédez à l'onglet Filtres de données.

  6. Convertissez le nom abrégé du mois en nombre :

    Si le journal contient déjà un numéro de mois au lieu d'un nom de mois, vous pouvez ignorer cette étape et passer à l'étape 7.

    Si le journal contient le nom abrégé du mois au lieu du numéro du mois, pour convertir ce nom abrégé en numéro de mois, ajoutez douze filtres de données de type MASK.

    Pour chaque mois calendaire, les détails du filtre de données sont semblables à ceux du mois de janvier ci-dessous :

    • Nom : Jan to 01

    • Type : Mask

    • Expression de recherche : (\*\*\w+\*\*\d{2}-)(JAN)(-\d{4})

    • Expression de remplacement : $101$3



    Le masque de données détecte les occurrences du modèle de date/heure dans le journal :

    **Starts**04-JAN-2018 17:25:23

    Il capture les données avant JAN, la valeur JAN et les données après JAN dans trois groupes de capture. Les groupes de capture sont indiqués par les trois paires de parenthèses ( ).

    Ensuite, dans l'expression de remplacement, la valeur du premier groupe de capture est remplacée à l'aide de $1, la valeur JAN est remplacée par 01 et le troisième groupe de capture est remplacé à l'aide de $3.

    Une fois le filtre de données implémenté, les informations d'heure et de date apparaissent comme suit :

    **Starts**04-01-2018 17:25:23
  7. Réécrivez les informations d'heure et de date au format ISO-8601 :

    Maintenant que les informations d'heure et de date sont disponibles dans le bon type de données, réécrivez les données d'heure et de date au format ISO-8601 à l'aide de deux filtres de données pour l'exemple de journal :

    Ces deux filtres de données doivent être placés après les douze filtres de données créés pour convertir le nom abrégé du mois en numéro de mois. Vous vous assurez ainsi que le format des données de date et d'heure est évalué après la conversion du nom abrégé du mois en numéro de mois. Utilisez les flèches vers le haut et vers le bas pour modifier l'ordre des filtres de données.

    Créez les deux filtres de données suivants pour convertir les données d'heure de début et d'heure de fin au format ISO-8601 :

      • Nom : Change shape of Starts

      • Type : Mask

      • Expression de recherche : \*\*Starts\*\*(\d+)-(\d+)-(\d{4})\s(\d{2}:\d{2}:\d{2})

      • Expression de remplacement : \*\*Starts\*\*$3-$2-$1T$4.000Z

      • Nom : Change shape of Ends

      • Type : Mask

      • Expression de recherche : \*\*Ends\*\*(\d+)-(\d+)-(\d{4})\s(\d{2}:\d{2}:\d{2})

      • Expression de remplacement : \*\*Ends\*\*$3-$2-$1T$4.000Z



    Dans l'expression de recherche, chaque élément d'heure et de date est capturé. Dans l'expression de remplacement, l'ordre des éléments d'heure et de date est modifié. Les valeurs $1, $2, $3 et $4 correspondent aux groupes de capture dans l'expression de recherche. Les groupes de capture sont indiqués par les paires de parenthèses ( ).

    L'élément statique .000Z est ajouté dans l'expression de remplacement pour stocker la valeur d'heure et de date dans le champ. Cette opération horodate l'heure et la date dans le fuseau horaire Temps universel coordonné (UTC). Si l'entrée de journal était dans le fuseau horaire standard du Pacifique (PST), son fuseau horaire est remplacé artificiellement par UTC, mais sans décalage réel de l'heure.

    Remarque

    Actuellement, il est impossible de décaler la valeur d'heure et de date dans un autre fuseau horaire au moment de l'inclusion. Vous pouvez toutefois effectuer cette opération à partir de l'explorateur de journaux à l'aide de la commande eval :
    • Une fois que vous avez stocké l'heure de début et l'heure de fin de l'événement, soustrayez l'heure de fin de l'heure de début pour obtenir la durée de l'événement.

    • Ajoutez ou soustrayez la durée de la différence entre les fuseaux horaires calculés en millisecondes.

    • Convertissez la sortie en nombre de millisecondes au format d'heure et de date.

    Reportez-vous à eval.
  8. Dans l'onglet Champs étendus, ajoutez les définitions de champ étendu à la source de journal pour extraire les champs d'heure et de date :

    • Dans le champ Message : \*\*Starts\*\*{Event Start Time:\S+}

    • Dans le champ Message : \*\*Ends\*\*{Event Start Time:\S+}

  9. Enregistrez la source de journal que vous avez créée.



Vous remarquez à présent que les deux champs Heure de début de l'événement et Fin de l'événement sont remplis avec les valeurs de date et d'heure du journal. Dans l'explorateur de journaux, vous pouvez consulter les heures en millisecondes depuis la période.