Analyser les enregistrements de journal avec plusieurs horodatages

Certains enregistrements peuvent avoir plusieurs horodatages tels que l'heure de l'entrée de journal, l'heure de début et l'heure de fin d'un processus ou d'une transaction que vous pouvez saisir dans leurs propres champs. Après avoir saisi 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 entre deux occurrences. Voir eval.

Oracle Log Analytics comporte plusieurs champs définis par Oracle qui vous permettent de stocker des informations d'heure et de date qui ne correspondent pas à l'heure réelle de l'entrée de journal :

  • Heure de fin d'événement

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

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

  • Heure du premier événement

  • Heure de fin du contrat

  • Heure de début du contrat

  • Heure de déclenchement d'alerte

  • Heure de collecte

  • Heure de la détection

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

2018-07-04T23:43:34.000Z

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

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

Si votre journal contient déjà des informations de date et d'heure supplémentaires dans le 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 de l'entrée de journal, créez l'analyseur de base. Voir Créer un analyseur.

    {TIMEDATE}\s(\S+)\s(\S+)\s(.*)
  2. Ouvrez la boîte de dialogue Créer une source. Voir Créer une source.

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

  4. Indiquez le chemin d'accès au fichier pour l'exemple de journal.

  5. Dans l'onglet Champs étendus, ajoutez les définitions de champ étendu à la source de journaux 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 nouvelle source que vous avez créée.



Vous remarquerez maintenant que les deux champs Heure de début d'événement et Heure de fin d'événement sont alimentés avec les valeurs du journal. Dans l'Explorateur de journaux, vous pouvez voir les temps en millisecondes depuis l'époque.

Cas 2 : Votre journal n'a pas les informations d'heure et de date dans le format ISO-8601

Si les champs de temps supplémentaires à extraire ne sont pas dans le format ISO-8601, vous devez suivre les étapes ci-après pour l'analyse :

Prenons l'exemple de fichier journal dans lequel la totalité 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. Voir Créer 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 de l'événement

    • Heure de fin d'événement

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

  2. Ouvrez la boîte de dialogue Créer une source de journaux. Voir Créer une source.

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

  4. Indiquez le chemin d'accès au fichier pour l'exemple de journal.

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

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

    Si votre journal comporte 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 votre journal porte le nom abrégé du mois au lieu du numéro du mois, pour convertir le nom abrégé du mois en numéro de mois, ajoutez douze filtres de données de type MASK.

    Pour chaque mois civil, le filtre de données aura les mêmes détails que pour le mois de janvier ci-dessous :

    • Nom : Jan to 01

    • Type : Mask

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

    • Expression Replace : $101$3



    Le masque de données trouve des occurrences du modèle temporel dans le journal :

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

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

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

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

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

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

    Ces deux filtres de données doivent être positionnés après les douze filtres de données que vous avez créés pour convertir le nom abrégé du mois en numéro de mois. Cela garantit que le format des données d'heure et de date 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 dans le format ISO-8601 :

      • Nom : Change shape of Starts

      • Type : Mask

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

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

      • Nom : Change shape of Ends

      • Type : Mask

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

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



    Dans l'expression Find, chaque élément d'heure et de date est saisi. Dans l'expression Replace, l'ordre des éléments d'heure et de date est modifié. Les valeurs $1, $2, $3, and $4 correspondent aux groupes de saisie dans l'expression Find. Les groupes de saisie sont indiqués avec les paires de parenthèses ( ).

    La valeur statique .000Z est ajoutée dans l'expression Replace pour stocker la valeur d'heure et de date dans le champ. Cette valeur horodate efficacement l'heure et la date dans le fuseau horaire Temps universel coordonné (UTC). Si votre entrée de journal était dans le fuseau horaire Heure normale du Pacifique (PST), son fuseau horaire est remplacé par UTC, mais sans le décalage réel dans l'heure.

    Note

    Actuellement, il n'est pas possible de décaler la valeur d'heure et de date dans un autre fuseau horaire au moment de l'ingestion. Vous pouvez toutefois effectuer cette opération à partir de l'explorateur de journaux à l'aide de la commande eval :
    • Après avoir stocké l'heure de début et l'heure de fin de l'événement, soustrayez l'heure de fin de l'événement de l'heure de début de l'événement pour obtenir la durée de l'événement.

    • Ajoutez ou soustrayez l'écart de durée entre les fuseaux horaires calculés en millisecondes.

    • Convertissez la sortie à partir du nombre de millisecondes dans le format d'heure et de date.

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

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

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

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



Vous pouvez maintenant remarquer que les deux champs Heure de début d'événement et Heure de fin d'événement sont alimentés avec les valeurs de date et d'heure du journal. Dans l'Explorateur de journaux, vous pouvez voir les temps en millisecondes depuis l'époque.