Exécution d'analyses avancées avec Lien

Comprenez l'usage de la fonctionnalité Lien dans l'exécution d'analyses avancées avec le cas d'emploi abordé dans cette rubrique.

Pour connaître les étapes d'utilisation de la fonctionnalité Lien afin d'analyser vos enregistrements de journal, reportez-vous à Visualisation de lien.

Exemples de scénario :

Cas d'emploi Fonctionnalité Lien Exemples de journal

Visualisation des données de série temporelle à l'aide de la fonctionnalité de tendance de lien

Tendance de lien

EBS Concurrent Request Logs

Analyse des journaux d'accès d'Oracle WebLogic Server

Fonctionnalités Lien de base

FMW WLS Server Access Logs

Génération de graphiques avec des champs virtuels

Utilisation de champs virtuels pour les graphiques

SAR CPU Logs

Lien avec le champ Instruction SQL comme champ d'analyse

Utilisation de l'instruction SQL en tant que champ

Database Audit Logs, Database Audit XML Logs, Oracle Unified DB Audit Log Source Stored in Database 12.1

Analyse du temps nécessaire entre les étapes d'une transaction

Analyse du temps

Access Logs

Génération de graphiques pour plusieurs champs et leurs valeurs

Graphiques pour plusieurs champs et leurs valeurs

-

Agrégation de deuxième niveau à l'aide de la commande eventstats dans Lien

Agrégation de deuxième niveau

Access Logs

Utilisation des fonctions de navigation Lien pour identifier les événements dans une base de données

Fonctions de navigation

Database Alert Logs

Utiliser les symboles de devise dans votre analyse de journal

Utiliser un symbole de devise dans une table de groupes et des graphiques

Gasoline Prices

Analyse de séries chronologiques à l'aide de la commande timestats

Analyser la tendance d'un champ

OCI VCN Flow Unified Schema Logs

Clusterisation de séries chronologiques

Regrouper les valeurs de séries temporelles similaires

OCI VCN Flow Unified Schema Logs

Visualisation des données de série temporelle à l'aide de la fonctionnalité de tendance de lien

Lien permet de regrouper les enregistrements de journal en fonction de champs spécifiques. Vous consultez les différentes statistiques que vous pouvez extraire de ces groupes à l'aide de la visualisation de graphique à bulles. La visualisation de graphique à bulles a été améliorée pour prendre en charge le champ Heure en tant qu'axe.

Les étapes suivantes expliquent comment utiliser la fonction de tendance afin d'analyser la durée de travail pour les demandes simultanées Oracle E-Business Suite (EBS).

Examinez l'exemple de journal suivant au chemin de fichier /u01/oracle/appl_top/req/l7474445.req :

Human Resources: Version : 12.2

Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.

AME_MIGRATIONB: Approvals Management Post Upgrade Process
+---------------------------------------------------------------------------+

Current system time is 24-JUL-2018 01:04:29 
+---------------------------------------------------------------------------+

**Starts**24-JUL-2018 01:04:30
**Ends**24-JUL-2018 01:04:30
Migration of item class usages successful
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+

+---------------------------------------------------------------------------+
No completion options were requested.

Output file size: 
0
Deleting empty output file.

+---------------------------------------------------------------------------+
Concurrent request completed successfully
Current system time is 24-JUL-2018 01:04:32

+---------------------------------------------------------------------------+

La source définie par Oracle Journaux de demandes simultanées EBS - Amélioré extrait le champ ID de demande du chemin de fichier. Par exemple, les données numériques 7474445 constituent l'ID de demande extrait du chemin de fichier de l'exemple de journal ci-dessus. La source extrait également les métadonnées associées pour chaque ID de demande.

  1. Sélectionnez la source et passez à la visualisation de lien :

    Dans le panneau Champs, cliquez sur Source de journal, sélectionnez la source de journal Journaux de demandes simultanées EBS - Amélioré, basculez sur la visualisation Lien, puis glissez-déplacez le champ ID de demande vers le panneau Regrouper par pour obtenir la liste des demandes :



    La requête générée automatiquement se présente comme suit :

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced' | link 'Request ID'
  2. Extrayez les heures de début et de fin de demande :

    Pour chaque demande, une heure de début et une heure de fin sont imprimées dans le fichier. Si l'heure de fin est absente, l'heure à laquelle le fichier est mis à jour est considérée comme l'heure de fin. La source de journal est configurée pour capturer ces valeurs comme champs Heure de début de l'événement et Fin de l'événement.

    Modifiez la requête pour extraire ces champs :

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
    | link 'Request ID'
    | stats earliest('Event Start Time') as 'Request Start Time',
    latest('Event End Time') as 'Request End Time'

    earliest est une fonction de la commande stats. Elle trie les enregistrements de chaque ID de demande par heure et renvoie l'heure de début d'événement la plus ancienne. De même, latest renvoie la dernière heure de fin d'événement.

    Vous pouvez maintenant visualiser les nouveaux champs dans la table des enregistrements :



    L'heure de début de demande et l'heure de fin de demande sont automatiquement détectées en tant qu'horodatages et formatées dans le fuseau horaire local. Lorsque les fichiers sont collectés, l'agent utilise le fuseau horaire de base de données EBS pour interpréter les horodatages.

    Remarque

    Pour vous assurer que le fuseau horaire de base de données est affiché comme prévu dans le répertoire d'origine de la configuration Oracle Infrastructure Monitoring et pour éviter toute incohérence entre les valeurs, indiquez le fuseau horaire lors du téléchargement.
  3. Calculez la durée de demande :

    Maintenant que nous disposons des heures de début et de fin pour chaque demande, nous pouvons calculer la durée, qui est la différence entre ces deux champs.

    Modifiez la requête de façon appropriée :

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
    | link 'Request ID'
    | stats earliest('Event Start Time') as 'Request Start Time',
    latest('Event End Time') as 'Request End Time'
    | eval 'Time Taken' = 'Request End Time' - 'Request Start Time'

    Le champ Temps nécessaire est un nouveau champ créé pour chaque groupe d'ID de demande. Il contient la différence entre les heures de début et de fin de demande.



    Remarque

    Oracle Logging Analytics détecte automatiquement le champ Durée en tant que champ de durée, car il est le résultat de la différence entre deux champs d'horodatage. Par conséquent, il est automatiquement formaté de sorte à être lisible par l'homme.

  4. Découvrez la tendance associée au temps nécessaire aux demandes simultanées EBS :

    Le champ Temps nécessaire peut à présent être analysé pour dégager des tendances. Cliquez sur l'icône Analyser Analyser, sélectionnez les champs Heure de début de la demande et Temps nécessaire dans la boîte de dialogue Analyser, puis cliquez sur OK.

    La requête est remplacée automatiquement par ce qui suit :

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
    | link 'Request ID'
    | stats earliest('Event Start Time') as 'Request Start Time',
    latest('Event End Time') as 'Request End Time'
    | eval 'Time Taken' = 'Request End Time' - 'Request Start Time'
    | classify topcount = 300 'Request Start Time', 'Time Taken'

    La commande classify prend deux champs, regroupe les résultats dans des clusters et marque les anomalies le cas échéant. Les résultats sont affichés dans le graphique à bulles.

    Lorsque l'option Heure est sélectionnée pour un axe, le graphique à bulles bascule automatiquement sur l'option Tendance. Pour modifier les options de graphique, cliquez sur l'icône Options de graphique options du graphique et modifiez les paramètres requis.

    Dans le graphique à bulles obtenu, les valeurs Heure de début de la demande sont représentées sur l'axe des X et les clusters Temps nécessaire sur l'axe des Y :



    L'heure est affichée dans le fuseau horaire local. La taille des bulles reflète le nombre de demandes.

    Dans le graphique à bulles ci-dessus, une durée de demande de plus de quatre minutes est constatée le 21 juillet 2018. La majorité des demandes se terminent en moins de deux minutes.

    Vous pouvez cliquer sur des bulles pour effectuer une analyse descendante et visualiser les demandes spécifiques concernées.

Analyse des journaux d'accès d'Oracle WebLogic Server

Prenons l'exemple d'un ensemble de données composé de journaux d'accès Oracle WebLogic Server provenant de la source de journal FMW WLS Server Access Logs. Les enregistrements de journal contiennent des données sur l'accès des utilisateurs à Oracle WebLogic Server sur une période donnée. Ces enregistrements de journal individuels peuvent être analysés pour obtenir des informations pertinentes sur les statistiques d'utilisation, la popularité des URL, les utilisateurs les plus actifs et d'autres données similaires. A partir des journaux, vous pouvez obtenir les résultats suivants en analysant les enregistrements de journal avec la sélection de champs spécifiques pour chaque résultat :

  1. Afficher les principales URL par nombre d'accès réussis

  2. Afficher les anomalies par nombre d'accès réussis

  3. Afficher les anomalies par durée d'accès

  4. Identifier les URL par taille de téléchargement vers le serveur

  5. Identifier les URL par taille de téléchargement en local

  6. Analyser la corrélation entre le nombre d'accès réussis et la taille de téléchargement en local

  7. Déterminer les pages les plus visitées

  8. Identifier les principaux utilisateurs

  9. Identifier les principaux utilisateurs et leurs pages favorites

  10. Identifier la page d'entrée qui génère le nombre maximal de visites

  11. Identifier le chemin d'entrée et de sortie pour la plupart des utilisateurs

Remarque

  • Utilisez la commande rename pour remplacer le nom du champ par un nom plus pertinent pour le cas d'emploi.

  • La commande classify permet d'analyser les groupes et d'afficher le résultat sous la forme d'un graphique à bulles. Pour visualiser simplement le résultat de l'exécution d'une requête sous forme de table, enlevez la commande classify de la requête et réexécutez-la.

  • Cliquez sur la bulle d'anomalie dans le graphique pour afficher les détails des groupes d'anomalie. Pour revenir au résultat d'origine après avoir examiné la bulle, cliquez sur l'icône Annuler Annuler.

  • Lorsque vous exécutez la commande link, la durée du groupe est affichée dans un format lisible dans le graphique à bulles, par exemple, en minutes ou en secondes. Toutefois, si vous voulez exécuter une commande where après la commande link pour rechercher les transactions qui ont pris plus de temps que le nombre de secondes indiqué (par exemple, 200 secondes), l'unité à utiliser est les millisecondes.

Pour extraire l'ensemble de données, sélectionnez une plage de dates appropriée, indiquez la source de journal et exécutez la requête :

'Log Source' = 'FMW WLS Server Access Logs'

Sélectionnez Lien ouvrir la fonctionnalité Lien dans le panneau Visualiser. La table des groupes "FMW WLS Server Access Logs" et le graphique à bulles apparaissent.

  1. Pour afficher les principales URL par nombre d'accès réussis, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, obtenez le nombre total associé à l'URL dans chaque groupe, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et affichez le résultat sous forme de table. Cette analyse permet de déterminer les URL les plus utilisées.

    1. Glissez-déplacez le champ URI vers Regrouper par et enlevez le champ Source de journal de Regrouper par.

    2. Une fois la requête exécutée, dans la ligne de commande, remplacez les noms des champs : Nombre par Nombre d'accès réussis, Heure de début par Premier accès, Heure de fin par Dernier accès et Durée du groupe par Durée de l'accès.

    3. Enlevez la commande classify de la ligne de commande et soumettez la requête.

      La requête se présente comme suit :

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'

    Via l'exécution de la requête, vous pouvez déterminer les principales URL en fonction du nombre d'accès réussis dans la table. Les colonnes sont renommées comme indiqué dans la commande rename.

  2. Pour afficher les anomalies par nombre d'accès réussis, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon le nombre d'accès réussis de l'URL. Cette analyse permet de distinguer le modèle inhabituel d'accès aux URL.

    Cliquez sur Analyser, sélectionnez Nombre d'accès réussis, puis cliquez sur OK.

    La requête doit être modifiée comme suit :

    'Log Source' = 'FMW WLS Server Access Logs' | link URI | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Number of Hits'

    Cette requête déclenche l'analyse de la colonne Nombre d'accès réussis et crée des bulles représentant les plages courantes. La majorité des valeurs est traitée comme la valeur de référence. Par exemple, une bulle volumineuse peut devenir la valeur de référence, ou un grand nombre de petites bulles regroupées peuvent former la valeur de référence. Les bulles les plus éloignées de la valeur de référence sont marquées comme des anomalies.

    Ainsi, les URL d'anomalie sont regroupées dans des bulles séparées dans le graphique à bulles. Pour afficher le pourcentage des URL dans chaque plage de nombres d'accès réussis, positionnez le curseur sur les bulles.

  3. Pour afficher les anomalies par durée d'accès, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon la durée d'accès de l'URL. Cette analyse permet de distinguer le modèle inhabituel de temps d'accès aux URL. Suite à l'étape 2 :

    Cliquez sur Analyser, sélectionnez Durée d'accès, puis cliquez sur OK.

    La durée d'accès reflète la durée d'accès à chaque URL. Elle est calculée comme la différence entre le dernier horodatage et le premier horodatage du fichier journal pour chaque URL.

  4. Pour identifier les URL par taille de téléchargement vers le serveur, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon la taille des données téléchargées. Cette analyse permet d'identifier les URL dont la taille des données téléchargées vers le serveur est inhabituelle. Suite à l'étape 3 :

    1. Glissez-déplacez le champ Taille de contenu entrant vers la section Valeur.

    2. Remplacez le nom du champ Taille de contenu entrant par Octets téléchargés vers le serveur en modifiant la requête sur la ligne de commande, puis exécutez la requête.

    3. Cliquez sur Analyser, sélectionnez Octets téléchargés vers le serveur, puis cliquez sur OK.

      La requête se présente comme suit :

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size In') as 'Bytes Uploaded' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Bytes Uploaded'

      Le graphique Analyser affiche les groupes d'URL en fonction des octets téléchargés vers le serveur.

    4. Pour mettre en corrélation les données Octets téléchargés vers le serveur sur la période, vous pouvez masquer ou afficher les graphiques dans les options d'histogramme. Explorez les autres options de visualisation en plus du graphique à barres.

  5. Pour identifier les URL par taille de téléchargement en local, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon la taille des données téléchargées. Cette analyse permet d'identifier les URL dont la taille des données téléchargées en local est inhabituelle. Suite à l'étape 4 :

    1. Glissez-déplacez le champ Taille de contenu sortant vers la section Valeur et enlevez la section Taille de contenu entrant de la section Valeur.

    2. Remplacez le nom du champ Taille de contenu sortant par Taille de téléchargement en local en modifiant la requête sur la ligne de commande, puis exécutez la requête.

    3. Cliquez sur Analyser, sélectionnez Taille de téléchargement en local, puis cliquez sur OK.

      La requête se présente comme suit :

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size Out') as 'Download Size' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Download Size'

      Le graphique Analyser affiche les groupes d'URL en fonction de la taille de téléchargement en local.

    4. Pour mettre en corrélation les données Taille de téléchargement en local sur la période, vous pouvez masquer ou afficher les graphiques dans les options d'histogramme. Explorez les autres options de visualisation en plus du graphique à barres.

  6. Pour analyser la corrélation entre nombre d'accès réussis et taille de téléchargement en local, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon la taille des données téléchargées et le nombre d'accès réussis. Cette analyse permet d'identifier les URL dont la taille des données téléchargées en local et le nombre d'accès réussis sont inhabituels. Suite à l'étape 5 :

    1. Cliquez sur Analyser, sélectionnez les champs Nombre d'accès réussis et Taille de téléchargement en local, puis cliquez sur OK.

    2. Enlevez topcount=300 de la requête pour afficher toutes les bulles et exécutez la requête.

      La requête se présente comme suit :

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size Out') as 'Download Size' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify 'Download Size', 'Number of Hits'

    Dans le graphique à bulles, le champ Nombre d'accès réussis est représenté sur l'axe des X et le champ Taille de téléchargement en local sur l'axe des Y.



    Les bulles peuvent être interprétées comme suit :

    • 73,8 % des URL ont été consultées d'une à sept fois.

    • La taille moyenne de téléchargement en local pour ces 73,8 % d'URL est comprise entre 32 345 et 34 000 octets. Cette plage réduite implique qu'un grand nombre d'URL présentent un comportement très uniforme par rapport à la taille de téléchargement en local.

    • Etant donné que 73,8% constitue une vaste majorité, les autres points sont marqués comme des anomalies.

    • Avec des données réelles, il est courant que le système regroupe les fichiers .css, .js et image séparément des autres URL car les comportements de téléchargement en local associés sont généralement différents.

  7. Pour déterminer les pages les plus visitées, regroupez les enregistrements de journal en fonction de la valeur de l'URL dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon le nombre de visiteurs uniques. Cette analyse permet d'identifier les URL les plus consultées par des visiteurs uniques. Suite à l'étape 6 :

    1. Glissez-déplacez le champ Nom utilisateur vers la section Valeur.

    2. Cliquez sur la flèche vers le bas en regard du nom du champ et remplacez la fonction Uniques par Nombre distinct. Vous pouvez sélectionner d'autres fonctions pour un champ numérique :

    3. Remplacez le nom du champ Nom utilisateur par Nombre d'utilisateurs uniques, enlevez la commande classify en modifiant la requête sur la ligne de commande, puis exécutez la requête. La requête se présente comme suit :

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size In') as 'Bytes Uploaded', avg('Content Size Out') as 'Download Size', distinctcount('User Name') as 'Number of Unique Users' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' 
    4. Cliquez sur Analyser, sélectionnez Nombre d'utilisateurs uniques, puis cliquez sur OK.

    La table répertorie les URL et le nombre correspondant d'utilisateurs uniques, ce qui nous aide à identifier les URL les plus visitées par des utilisateurs uniques. A partir de la table, vous pouvez également déterminer le nombre d'accès réussis de chaque URL.

    L'analyse montre que plus de 99 % des URL présentent 0 ou 1 utilisateur unique. C'est le cas pour les URL qui n'ont pas besoin de connexion utilisateur ou qui sont rarement consultées. L'analyse descendante vers l'une des plus petites bulles indique les pages concernées, le nombre standard d'accès réussis et le nombre de visiteurs uniques.

  8. Pour identifier les principaux utilisateurs, regroupez les enregistrements de journal en fonction de la valeur du nom utilisateur dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon le nombre d'accès réussis. Cette analyse permet d'identifier les utilisateurs les plus actifs.

    1. Modifiez la ligne de commande de façon à enlever tous les filtres : 'Log Source' = 'FMW WLS Server Access Logs' | link URI

    2. Glissez-déplacez le champ Nom utilisateur vers Regrouper par, enlevezURI et exécutez la requête.

    3. Enlevez la commande classify, renommez les champs par défaut dans la ligne de commande et exécutez la requête suivante :

      'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'

      La table est triée en fonction du nombre d'accès réussis de l'utilisateur.

    4. Pour afficher le comportement utilisateur par accès, cliquez sur Analyser, sélectionnez le champ Nombre d'accès réussis et cliquez sur OK.

    5. Cliquez sur les anomalies pour identifier les utilisateurs ayant enregistré un nombre d'accès réussis supérieur ou inférieur à celui des autres utilisateurs.

  9. Pour identifier les principaux utilisateurs et leurs pages favorites, regroupez les enregistrements de journal en fonction de la valeur du nom utilisateur dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon le nombre de pages uniques. Cette analyse permet d'identifier les utilisateurs les moins actifs et les plus actifs, ainsi que leurs pages favorites. Suite à l'étape 8 :

    1. Glissez-déplacez le champ URI vers la section Valeur. Remplacez la fonction Uniques par Nombre distinct.

    2. Remplacez le nom du champ URI par Nombre de pages uniques en modifiant la requête sur la ligne de commande, puis exécutez la requête.

    3. Cliquez sur Analyser, sélectionnez Nombre de pages uniques, puis cliquez sur OK.

  10. Pour identifier la page d'entrée qui génère le nombre maximal de visites, regroupez les enregistrements de journal en fonction de la valeur du nom utilisateur dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon les valeurs des URL d'entrée et de nombre d'accès réussis aux URL. Cette analyse permet d'identifier les pages auxquelles les utilisateurs accèdent en premier. Suite à l'étape 9 :

    1. Pour obtenir les URL d'entrée, faites passer la fonction du champ URI de Nombre distinct à Premier.

    2. Remplacez le nom du champ URI par URL d'entrée en modifiant la requête sur la ligne de commande, puis exécutez la requête.

    3. Cliquez sur Analyser, sélectionnez les champs Nombre d'accès réussis et URL d'entrée, sélectionnez topcount avec la valeur 20 et cliquez sur OK.

      'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | stats earliest(URI) as 'Entry URL' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 20 'Number of Hits', 'Entry URL'


    La première URL employée par les utilisateurs par rapport au nombre de résultats est ainsi affichée. Par exemple, /login est la première URL par laquelle passe une majorité d'utilisateurs.

  11. Afin d'identifier le chemin d'entrée et de sortie pour la plupart des utilisateurs, regroupez les enregistrements de journal en fonction de la valeur du nom utilisateur dans l'enregistrement de journal, remplacez les noms des champs par défaut dans la table des groupes par les valeurs appropriées et analysez les groupes selon les valeurs des URL d'entrée et de sortie. Cette analyse permet d'identifier les éléments suivants :
    • Les chemins les plus courants empruntés par les utilisateurs pour passer par le site Web

    • Les pages de produit les plus populaires à partir desquelles les utilisateurs quittent le site Web

    • Les URL de sortie les plus courantes, telles que les pages de réservation de produit ou la passerelle de paiement

    • Les URL de sortie inhabituelles et la cause première de ces sorties inattendues

    Suite à l'étape 10 :
    1. Glissez-déplacez le champ URI vers la section Valeur.

    2. Pour obtenir la page de sortie, faites passer la fonction du champ URI de Uniques à Dernier.

    3. Modifiez la ligne de commande, remplacez le nom du champ latest(URI) par URL de sortie et soumettez la requête.

    4. Cliquez sur Analyser, sélectionnez les champs URL d'entrée et URL de sortie, sélectionnez topcount avec la valeur 20 et cliquez sur OK.

      'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | stats earliest(URI) as 'Entry URL', latest(URI) as 'Exit URL' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 20 'Entry URL', 'Exit URL'
    5. Augmentez la taille du graphique à l'aide des options de graphique d'analyse.



    Cette visualisation treemap affiche la relation entre l'URL d'entrée et l'URL de sortie dans un site. Elle est très utile pour les sites de vente au détail pour lesquels les fournisseurs de services veulent identifier les URL d'entrée qui conduisent les clients aux pages de paiement, ainsi que les URL de produit qui font que les utilisateurs ne passent pas commande.

Génération de graphiques avec des champs virtuels

Pour créer un champ virtuel, vous pouvez utiliser la commande eval dans la fonctionnalité de lien. La requête eval sur la ligne de commande génère un graphique à courbes pour le champ virtuel et permet son suivi dans le temps.

Pour créer un champ virtuel, vous pouvez utiliser la commande eval dans la fonctionnalité de lien. La requête eval sur la ligne de commande génère un graphique à courbes pour le champ virtuel et permet son suivi dans le temps.

Exemples :

  • Prenons le scénario dans lequel les enregistrements de journal issus de la source de journal SAR CPU Logs sont regroupés par nom d'hôte et par UC. Pour déterminer la charge subie par l'UC du serveur au fil du temps, la commande eval crée le champ virtuel Load % et génère un graphique à courbes.

    'Log Source' = 'SAR CPU Logs' | rename Instance as CPU | link 'Host Name (Server)', CPU | stats avg('CPU Idle Time (%)') as 'CPU Idle Time (%)' | eval 'Load %' = 100 - 'CPU Idle Time (%)'

    Pour afficher le graphique à courbes, procédez comme suit :

    1. Cliquez sur l'onglet Histogramme.

    2. Cliquez sur la flèche vers le bas en regard de l'icône Options de graphique (options du graphique). Cliquez sur Masquer/Afficher les graphiques. Sélectionnez % de charge.

    3. Cliquez sur la flèche vers le bas en regard de l'icône Options de graphique (options du graphique). Cliquez sur Options de graphique. Dans la liste Type de graphique, sélectionnez Ligne sans marqueur. Cliquez sur Fermer.



  • Prenons le scénario dans lequel les enregistrements de journal issus de la source de journal OMC WLS Server Access Logs sont regroupés par URI. Pour déterminer la taille des données consultées au fil du temps en méga-octets, la commande eval crée le champ virtuel Content Size (MB), calcule la taille du contenu en méga-octets en fonction de la valeur du champ Content Size et génère un graphique à courbes.

    'Log Source' = 'WLS Server Access Logs' | link URI | stats avg('Content Size') as 'Content Size Bytes' | eval 'Content Size (MB)' = 'Content Size Bytes' / 1024

    Pour afficher le graphique à courbes, procédez comme suit :

    1. Cliquez sur l'onglet Histogramme.

    2. Cliquez sur la flèche vers le bas en regard de l'icône Options de graphique (options du graphique). Cliquez sur Masquer/Afficher les graphiques. Sélectionnez Taille de contenu (Mo) et Enregistrements de journal d'accès.

    3. Cliquez sur la flèche vers le bas en regard de l'icône Options de graphique (options du graphique). Cliquez sur Options de graphique. Dans la liste Type de graphique, sélectionnez Ligne sans marqueur. Cliquez sur Fermer.



Lien avec le champ Instruction SQL comme champ d'analyse

Lien prend en charge le champ Instruction SQL en tant que champ d'analyse. Le champ contient l'instruction SQL exécutée et capturée par des sources de journal telles que Database Audit XML Logs et Oracle Unified DB Audit Log Source Stored in Database 12.1.

Vous pouvez utiliser link 'SQL Statement' pour regrouper les instructions SQL, analyser leur comportement et identifier les anomalies.

Exemple :

Prenons la requête suivante, qui lie les enregistrements de journal en fonction du champ Instruction SQL :

'Log Source' in ('Database Audit Logs', 'Database Audit XML Logs') 
	| rename 'Host Name (Server)' as 'DB Server', 'User Name (Originating)' as 'OS User', 'User Name' as 'DB User' 
	| link 'SQL Statement' 
	| rename Count as 'Number of Runs', 'Start Time' as 'First Run', 'End Time' as 'Last Run', 'Group Duration' as Age 
	| addfields [ Object = dual | stats count as 'dual Table Access' ], 
		[ Object like 'all_%' | stats count as 'ALL_ Table Access' ], 
		[ Object like 'dba_%' | stats count as 'DBA_ Table Access' ], 
		[ Object like 'user_%' | stats count as 'USER_ Table Access' ], 
		[ Object like 'v$%' | stats count as 'VDollar Table Access' ], 
		[ Object = null | stats count as 'No Table Access' ], 
		[ Action = '2' | stats count as 'Insert Count' ], 
		[ Action = '3' | stats count as 'Select Count' ], 
		[ Action = '6' | stats count as 'Update Count' ], 
		[ Action = '7' | stats count as 'Delete Count' ], 
		[ Type = '8' | stats count as 'Connect Count' ], 
		[ 'Status Code' = 1 | stats count as Failures ] 
	| eval 'Object Type' = if('dual Table Access' > 0, Dual, 
		'ALL_ Table Access' > 0, System, 
		'DBA_ Table Access' > 0, System, 
		'USER_ Table Access' > 0, System, 
		'VDollar Table Access' > 0, System, 
		'No Table Access' > 0, 'No Table', Other) 
	| eval 'SQL Type' = if('Insert Count' > 0, Insert, 
		'Select Count' > 0, Select, 
		'Update Count' > 0, Update, 
		'Delete Count' > 0, Delete, 
		'Connect Count' > 0, Connect, Other) 
	| stats distinctcount(Object) as Objects, distinctcount('Database ID') as 'Number of DBs', 
		distinctcount(Session) as 'Number of Sessions' 
	| fields -'dual Table Access', -'No Table Access', -'ALL_ Table Access', 
		-'USER_ Table Access', -'DBA_ Table Access', -'VDollar Table Access', -'Insert Count', 
		-'Select Count', -'Update Count', -'Delete Count', -'Connect Count', -'SQL Type', -'Object Type' 
	| classify Age 
	| classify 'Number of Sessions' 
	| classify 'Number of DBs' 
	| classify 'Number of Runs', 'Object Type' 
	| classify 'Object Type', 'SQL Type'
Remarque

addfields est une fonction disponible avec la visualisation de lien pour ajouter des champs virtuels à la requête. Elle part d'une requête et transmet la sortie à une commande stats. Le champ virtuel obtenu est disponible dans la table et dans le graphique de série temporelle.

Pour connaître la syntaxe et d'autres détails de la commande addfields, reportez-vous à addfields.

L'exécution de la requête ci-dessus permet d'observer les résultats suivants :

  • En fonction de la commande classify, les graphiques à bulles pour Age, Number of Sessions, Number of DBs, Number of Runs, Object Type et Object Type, SQL Type sont générés.





    Dans les graphiques à bulles, les enregistrements de journal sont regroupés en fonction du nombre d'instructions SQL appartenant à chaque ensemble de paramètres. Les paramètres Object Type et SQL Type sont déterminés grâce à la commande eval dans la requête.

  • L'histogramme Courbes avec aires illustre l'occurrence de champs tels que dual Table Access, No Table Access, ALL_ Table Access, USER_ Table Access, DBA_ Table Access, VDollar Table Access, Insert Count, Select Count, Update Count, Delete Count, Connect Count et Log Records représentés dans le temps.

    1. Dans l'onglet de l'histogramme, cliquez sur la flèche vers le bas en regard de l'icône Options de graphique (options du graphique).

    2. Sélectionnez l'affichage des graphiques de tous les champs.

    3. Sous Type de graphique, sélectionnez Courbes avec aires.

    4. Ajustez la largeur de façon à afficher deux graphiques par ligne.



  • La table des groupes répertorie les groupes identifiés par le lien en fonction du champ Instruction SQL. Vous pouvez constater que, pour chaque instruction SQL, la table indique le nombre d'exécutions de l'instruction SQL, l'heure de début, l'heure de fin et la durée du groupe. Cliquez sur chaque groupe et consultez les enregistrements de journal pour plus de détails. Vous pouvez également afficher les groupes dans la visualisation de cluster pour une analyse plus approfondie.



Analyse du temps nécessaire entre les étapes d'une transaction

La fonctionnalité de lien permet d'analyser les sessions utilisateur, d'extraire les différents paramètres temporels par regroupement et de déduire les données sur la durée de transaction pour vous aider à gagner en visibilité sur votre activité.

Prenons cet ensemble de données non trié extrait d'un fichier journal d'accès. Les champs suivants fournissent les informations d'une session utilisateur et les actions effectuées par l'utilisateur :

Time | Session ID | Action
 T2  | 1          | Login
 T1  | 5          | Login
 T6  | 1          | addtocart
 T3  | 1          | productlisting
 T4  | 1          | purchase
 T9  | 1          | purchase
 T7  | 5          | addtocart
 T5  | 1          | addtocart
 T8  | 5          | purchase 

Les actions telles que Login, addtocart, productlisting et purchase sont enregistrées dans un ordre aléatoire de T1 à T9, et sont survenues sur deux sessions avec les ID de session 1 et 5.

Pour effectuer une analyse du temps similaire sur vos journaux d'accès, extrayez la valeur Session ID des journaux dans un champ. Extrayez les étapes intermédiaires de la session à partir des journaux d'accès en appliquant une expression régulière pour obtenir la valeur URL à partir des journaux.

Dans un contexte générique, les sessions de cet exemple représentent toutes les transactions utilisateur, et les actions représentent les étapes intermédiaires effectuées par l'utilisateur pour terminer une transaction.

Pour analyser ces données non triées et extraire les informations requises, vous pouvez exécuter l'exemple de requête suivant :

'Upload Name' = logadmin 
| link 'Session ID'
| rename 'Group Duration' as 'Session Duration' 
| addfields 
  [ Action = addtocart | stats earliest(Time) as 'First Add To Cart Time' ], 
  [ Action = purchase | stats latest(Time) as 'Last Purchase Time' ] 
| eval 'Time Taken for Purchase (Secs)' = ('Last Purchase Time' - 'First Add To Cart Time') / 1000 
| fields -'First Add To Cart Time', 
         -'Last Purchase Time' 
| classify 'Time Taken for Purchase (Secs)'
  • link 'Session ID' regroupe les enregistrements des journaux d'accès par ID de session, créant ainsi deux groupes :

    Time | Session ID | Action
     T2  | 1          | Login
     T6  | 1          | addtocart
     T3  | 1          | productlisting
     T4  | 1          | purchase
     T5  | 1          | addtocart
     T9  | 1          | purchase
    
     T1  | 5          | Login
     T7  | 5          | addtocart
     T8  | 5          | purchase
  • La commande addfields est exécutée sur chacun de ces groupes. La première commande addfields récupère les enregistrements pour lesquels Action = addtocart. Le résultat de cette requête est le suivant pour les deux groupes :

    Time | Session ID | Action
     T6  | 1          | addtocart
     T5  | 1          | addtocart
    
     T7  | 5          | addtocart
  • La commande stats earliest(Time) trie le résultat ci-dessus par heure, pour chaque groupe :

    Time | Session ID | Action
     T5  | 1          | addtocart
     T6  | 1          | addtocart
     
     T7  | 5          | addtocart
  • Le champ spécifié, qui est Time, est ensuite extrait du premier enregistrement :

    'First Add To Cart Time' = T5 for Group = 1
    'First Add To Cart Time' = T7 for Group = 5
  • La deuxième commande addfields est exécutée pour Action = purchase et extrait les enregistrements suivants :

    Time | Session ID | Action
     T4  | 1          | purchase
     T9  | 1          | purchase
    
     T8  | 5          | purchase
  • latest(Time) trie également les enregistrements ci-dessus selon le champ Time :

    Time | Session ID | Action
     T4  | 1          | purchase
     T9  | 1          | purchase
    
     T8  | 5          | purchase
  • latest(Time) récupère le dernier enregistrement et extrait le champ spécifié, à savoir Time :

    'Last Purchase Time' = T9 for Group = 1
    'Last Purchase Time' = T8 for Group = 5
  • A ce stade, les valeurs First Add to Cart Time et Last Purchase Time sont définies pour les deux groupes. Il s'agit d'horodatages. eval soustrait l'un de l'autre pour obtenir le temps écoulé.

  • Dans les faits, vous pouvez obtenir le temps nécessaire afin de passer de l'étape d'ajout au panier à l'étape d'achat pour chaque session. Vous pouvez à présent l'utiliser dans classify pour analyser l'écart sur ce temps écoulé entre les sessions.



Pour connaître la syntaxe et d'autres détails de la commande addfields, reportez-vous à addfields.

Génération de graphiques pour plusieurs champs et leurs valeurs

Vous pouvez utiliser la commande addfields dans la requête pour spécifier plusieurs champs afin de générer des graphiques distincts. Vous pouvez désormais utiliser l'option Ajouter/Modifier des graphiques de l'histogramme dans l'interface utilisateur pour effectuer la même opération que la commande addfields.

En règle générale, vous voudrez comparer les graphiques d'un même champ avec différentes valeurs, par exemple les valeurs du champ Gravité telles que Erreur, Critique, Alerte et Avertissement. L'option Ajouter un graphique permet de générer plusieurs graphiques à comparer côte à côte en spécifiant le champ et ses valeurs dans la boîte de dialogue.

Vous pouvez également saisir et mettre à jour la requête avec la commande. L'option Ajouter un graphique permet d'effectuer l'opération plus rapidement qu'en composant la requête à l'aide de la commande addfields.

  1. Dans l'interface utilisateur de lien, accédez à l'onglet Enregistrements de journal, puis dans le menu icône Options de graphique Options de graphique, cliquez sur Ajouter/Modifier des graphiques pour mettre à jour automatiquement la requête à l'aide de la commande addfields.

    La boîte de dialogue Ajouter/Modifier des graphiques apparaît.

  2. En regard de Sous-requête, sélectionnez le champ dans le menu, par exemple, Severity.

    Sélectionnez l'opérateur pertinent.

    Cliquez sur l'icône de modification icône Modifier pour sélectionner des valeurs, par exemple, alert. Les champs calculés ne sont pas pris en charge.

  3. Sélectionnez éventuellement la fonction Statistiques.

    En regard de Statistiques, sélectionnez la fonction à exécuter sur le champ et le champ de fonction dans le menu déroulant.

    A l'exception de la fonction count, toutes les autres fonctions nécessitent que le champ de fonction soit spécifié.

  4. Cliquez sur Ajouter un graphique pour visualiser la requête obtenue. Cliquez sur l'icône de modification icône Modifier pour modifier la requête.

  5. Répétez les étapes 2 à 4 pour ajouter d'autres graphiques, par exemple, afin de générer des graphiques pour les valeurs error, critical et warning du champ Severity.

    Cliquez sur Mettre à jour.

  6. Cliquez sur le menu Options de graphique options du graphique et assurez-vous que les nouveaux graphiques générés sont inclus et sélectionnés dans l'option Masquer/Afficher. Vous pouvez également sélectionner le type de graphique, la taille dans le graphique, la hauteur, la largeur et d'autres attributs. Reportez-vous à Histogramme.

Vous pouvez maintenant consulter les graphiques personnalisés des champs et leurs valeurs sélectionnés dans l'onglet Enregistrements de journal, et les comparer visuellement.

Agrégation de deuxième niveau à l'aide de la commande eventstats dans Lien

Lien permet de regrouper les enregistrements de journal à l'aide de clés uniques. Par exemple, vous pouvez regrouper tous les enregistrements de journal appartenant à une transaction avec un ID de transaction unique. Les statistiques peuvent être générées sur chaque groupe à l'aide de la commande stats. eventstats est une nouvelle commande qui permet d'agréger davantage ces statistiques. Les exemples suivants illustrent les cas d'emploi de eventstats.

Nous allons nous appuyer sur l'ensemble de données de journaux d'accès suivant dans tous les exemples :

1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      100
1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      100
1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      50
1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      50
1-Jan-2020 10:00:00 PST, chicago_dc2    /index.html      200
1-Jan-2020 10:00:00 PST, chicago_dc2    /index.html      200
1-Jan-2020 10:00:00 PST, austin_dc7     /report/download 5000
1-Jan-2020 10:00:00 PST, austin_dc7     /users/auth      50
1-Jan-2020 10:00:00 PST, amsterdam_dc1  /index.html      350
1-Jan-2020 10:00:00 PST, amsterdam_dc1  /report/download 1024

L'ensemble de données comporte les champs suivants :

  • Heure : par exemple, 1-Jan-2020 10:00:00 PST
  • Nom d'hôte (serveur) : hôte ayant traité cette demande, par exemple, chicago_dc1
  • URI : URL de la demande, par exemple, /index.html
  • Taille de contenu sortant : nombre d'octets téléchargés en local, par exemple, 100

Regroupement simple :

   * | link 'Host Name (Server)', URI
     | stats sum('Content Size Out') as 'Bytes Downloaded'

La requête ci-dessus regroupe les enregistrements de journal par combinaison distincte des champs Nom d'hôte (serveur) et URI. Le champ Taille de contenu sortant de chaque enregistrement est ensuite additionné par groupe dans le nouveau champ Octets téléchargés en local.

Somme globale avec eventstats

Les octets téléchargés en local dans l'exemple précédent concernent chaque combinaison serveur/URL. L'un des cas d'emploi simples de eventstats consiste à calculer le total des données téléchargées en local sur tous les serveurs et URL :

  * | link 'Host Name (Server)', URI
    | stats sum('Content Size Out') as 'Bytes Downloaded'
    | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded'


Dans l'exemple ci-dessus, eventstats agrège les valeurs de chaque groupe pour générer un cumul global unique. Celui-ci peut être transmis à classify ou à eval, et utilisé dans la clause where.

Commandes eventstats multiples :

Plusieurs commandes eventstats peuvent être regroupées ou chaînées comme dans l'exemple suivant :

.. | eventstats sum('Content Size In') as 'Bytes Uploaded', sum('Content Size Out') as 'Bytes Downloaded'
   | eventstats avg('Duraton') as 'Global Average Duration'

Regroupement avec eventstats

La commande eventstats dispose également d'un mode Regrouper par. Prenons la requête suivante :

* | link 'Host Name (Server)', URI
  | stats sum('Content Size Out') as 'Bytes Downloaded'
  | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by URI

Au lieu de calculer une seule valeur, eventstats calcule désormais une valeur par URI unique :



La somme est obtenue en prenant d'abord les URI distincts, puis en effectuant l'agrégation :

index.html       -> 300 + 400 + 350 = 1050
/report/download -> 5000 + 1024     = 6024
/users/auth      -> 50              = 50

Commande eventstats avec une commande eval

La commande eventstats peut également fonctionner sur un champ généré par une commande eval. Par exemple, au lieu de l'URL, nous pouvons obtenir les totaux par rapport au centre de données :

* | link 'Host Name (Server)',  URI
  | stats sum('Content Size Out') as 'Bytes Downloaded'
  | eval offset = indexof('Host Name (Server)', _)
  | eval Datacenter = substr('Host Name (Server)', 0, offset)
  | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by Datacenter
  | fields -offset


La fonction sum est exécutée après le regroupement par sous-chaîne :

chicago_dc1 = 300 
chicago_dc2 = 400
  -> chicago = 300+400 = 700

amsterdam_dc1 = 350
amsterdam_dc1 = 1024
  -> amsterdam = 350 + 1024 = 1374

austin_dc7 = 5000
austin_dc7 = 50
 -> austin = 5000 + 50 = 5050

Le regroupement peut être effectué à l'aide de propriétés. Les propriétés sont les clés de groupe, ou les valeurs de chaîne générées par stats ou eval.

Calcul des pourcentages pour la comparaison de groupes

Une application très importante de la commande eventstats est la génération d'une valeur globale et l'identification du pourcentage élevé ou faible de contribution des différents groupes :

 * | link 'Host Name (Server)', URI
   | stats sum('Content Size Out') as 'Bytes Downloaded'
   | eval offset = indexof('Host Name (Server)', _)
   | eval Datacenter = substr('Host Name (Server)', 0, offset)
   | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by Datacenter
   | eval 'Download Contribution %' = 100 / ('Total Bytes Downloaded' / 'Bytes Downloaded')
   | fields -offset


Le % de contribution au téléchargement en local est calculé à l'aide de la valeur globale générée par eventstats..by et de la valeur par groupe générée par stats :

chicago_dc1, index.html         => 100/(700/300)   = 42.857
chicago_dc2, index.html         => 100/(700/400)   = 57.143
amsterdam_dc1, index.html       => 100/(1374/350)  = 25.473
amsterdam_dc1, /report/download => 100/(1374/1024) = 74.527
austin_dc7, /report/download    => 100/(5050/5000) = 99.01
austin_dc7, /users/auth         => 100/(5050/50)   = 0.99

Cette requête permet de déterminer les URL qui génèrent le trafic de téléchargement le plus élevé par rapport aux autres URL du même centre de données. Le champ % de contribution au téléchargement en local peut être utilisé pour filtrer les groupes à l'aide des éléments suivants :

  • Clause where
  • Commande sort pour le classement
  • Commande classify pour la détection d'anomalie

Utilisation des fonctions de navigation Lien pour identifier les événements dans une base de données

Utilisez Lien pour créer des données structurées à partir d'enregistrements de journal et afficher les données sous forme de table triée. Les fonctions statistiques peuvent être appliquées aux colonnes de la table à l'aide de la commande stats pour créer des colonnes dérivées. Ces colonnes dérivées peuvent être agrégées à nouveau à l'aide de la commande eventstats.

Fonctions de navigation

Les fonctions de navigation permettent d'extraire des valeurs dans une colonne donnée à partir d'une ligne spécifique. Elles produisent des résultats différents selon la commande de tri précédente.

Les fonctions de navigation suivantes peuvent être utilisées avec la commande eventstats dans Lien :

Fonction Description

rownum

Créer une colonne de numéros de ligne

first()

Obtenir la première valeur du champ spécifié

last()

Obtenir la dernière valeur du champ spécifié

nthval()

Obtenir la valeur de colonne pour la ligne indiquée

lag()

Obtenir la valeur de colonne pour la ligne précédente

lead()

Obtenir la valeur de colonne pour la ligne suivante

Pour plus d'informations sur les fonctions, reportez-vous à eventstats.

Obtention du contexte d'un événement

Oracle Log Analytics fournit des libellés prêts à l'emploi pour les journaux d'alertes de base de données. Le libellé Terminaison anormale indique un problème grave à l'origine de l'arrêt de la base de données. La classification classique consiste à analyser la séquence d'événements survenue avant ce type d'arrêt. Il est également utile de connaître les événements se produisant après un arrêt.

Les sections suivantes décrivent les étapes de classification à l'aide de certaines fonctions eventstats pour les journaux d'alertes de base de données.

Liaison d'événements dans les journaux d'alertes de base de données

Exécutez la requête suivante pour lier les événements de la base de données sélectionnée :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'

Cette opération crée une ligne unique pour chaque libellé dans la base de données. Etant donné que nous avons inclus la colonne Heure, plusieurs lignes peuvent exister pour le même libellé s'il se répète à des moments différents.

La commande sort trie la table selon l'ordre des libellés, le plus ancien se trouvant sur la première ligne.

Ajout du numéro de ligne

Exécutez la requête suivante pour ajouter un numéro à chaque ligne :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database

Si la requête comprend plusieurs bases de données, le numéro de ligne est réinitialisé pour chaque base de données, en raison de la clause by Database.

Identification des lignes comportant un événement de panne de base de données

Le libellé Terminaison anormale indique que la base de données a subi une panne. Identifiez les lignes concernées à l'aide de la requête suivante :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]

addfields permet d'identifier un sous-ensemble d'enregistrements de journal. Ici, addfields effectue une recherche sur plusieurs lignes de la table. Les lignes mises en correspondance sont transmises à eventstats, et last('Row Number') récupère le numéro de la dernière ligne mise en correspondance. Cette valeur est désormais renseignée en tant que nouveau champ : Ligne de panne. La ligne de panne comporte une valeur uniquement pour les lignes correspondant à la condition indiquée dans addfields.

La ligne de panne est alimentée uniquement pour des lignes spécifiques. Utilisez une autre commande eventstats pour remplir toutes les lignes avec la valeur :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]
| eventstats max('Crash Row') as 'Event Row' by Database

Elle crée la colonne Ligne d'événement sur chaque ligne et contient la ligne présentant la dernière panne de base de données.

Identification des événements proches de la panne de base de données

La table peut encore comporter des centaines d'événements. Pour identifier quelques événements avant la ligne d'événement et quelques événements après la ligne d'événement, modifiez la requête afin de filtrer les lignes :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]
| eventstats max('Crash Row') as 'Event Row' by Database
| eval 'Start Row' = 'Event Row' - 3
| eval 'End Row' = 'Event Row' + 2
| where 'Row Number' >= 'Start Row' and 'Row Number' <= 'End Row'

La table indique maintenant les événements qui se sont produits avant la terminaison anormale. Les événements survenus après la terminaison anormale sont également visibles.

Evénements précédent et suivant

Vous pouvez utiliser lag() pour obtenir l'événement précédent. Un numéro de ligne facultatif peut être transmis pour obtenir une ligne précédente spécifique. Vous pouvez également utiliser lead() pour obtenir la ligne suivante :

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| addfields
   [ *
      | where Label != null
      | eventstats lag(Label) as 'Previous Event',
                   lead(Label) as 'Next Event'
   ]

De plus, nthVal() peut obtenir la valeur d'une ligne spécifique.

Utiliser les symboles de devise dans votre analyse de journal

Vous pouvez utiliser la fonction unit dans la commande eval pour marquer un champ comme contenant une devise. Vous pouvez ensuite utiliser cette valeur de champ dans votre analyse et afficher le symbole de devise correspondant dans la table des visualisations et des groupes.

Vous pouvez d'abord spécifier l'unité de devise à l'aide du format défini dans eval. Après cela, la table de liens et les graphiques afficheront les bons symboles de devise.

Dans l'exemple suivant, la valeur du champ Prix est utilisée pour calculer les valeurs des nouveaux champs Prix (USD), Prix (GBP), Prix (JPY), Prix (CNY) et Prix (INR), et les marquer comme contenant la devise. Les mêmes nouveaux domaines sont utilisés pour l'analyse dans l'obtention du prix moyen régional de l'essence sur une période de plusieurs années.

'Log Source' = 'Gasoline Prices'
| eval 'Price (USD)' = unit(Price, currency_usd)
| eval 'Price (GBP)' = unit(Price * 0.72, currency_gbp)
| eval 'Price (JPY)' = unit(Price * 110.6, currency_jpy)
| eval 'Price (CNY)' = unit(Price * 6.47, currency_cny)
| eval 'Price (INR)' = unit(Price * 74.79, currency_inr)
| link Time, Type, Region
| stats avg('Price (USD)') as 'Cost (USD)', 
        avg('Price (GBP)') as 'Cost (GBP)', 
        avg('Price (JPY)') as 'Cost (JPY)', 
        avg('Price (CNY)') as 'Cost (CNY)', 
        avg('Price (INR)') as 'Cost (INR)'
| classify 'Start Time', 'Cost (USD)', Region, Type as 'Gas Price Analysis'

Dans l'image suivante, les groupes sont identifiés en fonction de la région, du temps et du type d'essence. La tranche de prix moyen de l'essence est utilisée pour tracer les bulles le long de l'axe des ordonnées.


Groupes identifiés en fonction de la région, du temps et du type d'essence

Dans l'image suivante, le tableau des groupes indique le prix moyen de l'essence dans différentes devises. Les graphiques montrent la variation du coût sur plusieurs années pour chaque valeur de devise.


Le tableau des groupes montre le prix moyen de l'essence dans diverses devises

Analyse de série chronologique à l'aide de la commande timestats

Vous pouvez analyser la tendance d'un champ à l'aide de la commande timestats. La commande timestats, lorsqu'elle est utilisée après la commande link, fournit des analyses de séries chronologiques supplémentaires et une visualisation enrichie.

Prenons l'exemple des journaux de schéma unifié de flux OCI VCN. Le champ Action dans les journaux de schéma unifié de flux OCI VCN indique si une demande réseau particulière a été acceptée ou rejetée. Utilisez la commande timestats pour analyser la tendance de ce champ. Reportez-vous à timestats.

A partir de la commande link de base :

'Log Source' = 'OCI VCN Flow Unified Schema Logs' | link Action

Il existe deux valeurs distinctes pour la période sélectionnée :


deux valeurs distinctes pour la période sélectionnée

Dans le cas ci-dessus, une seule ligne est disponible pour chaque action unique car le comportement par défaut est de grouper en fonction du champ donné. La première étape consiste à s'assurer qu'il existe plusieurs lignes pour chaque valeur en fonction de la période. Pour ce faire, ajoutez Time en tant qu'autre champ à la commande link.

'Log Source' = 'OCI VCN Flow Unified Schema Logs' | link span=1day Time, Action

Le paramètre span est facultatif. Si aucune valeur n'est fournie, une valeur par défaut appropriée pour la période sélectionnée est calculée. Vous pouvez désormais voir la même action pour un jour différent apparaître sur une ligne distincte.


plusieurs lignes pour chaque valeur en fonction de la période

Utilisez maintenant la commande timestats. Dans ce cas, nous voulons Heure de début dans l'axe des X et la valeur Nombre dans l'axe des Y. Etant donné que timestats requiert toujours une fonction, utilisez la fonction sum() pour additionner le nombre d'enregistrements avec la valeur d'action donnée, pour chaque intervalle.

'Log Source' = 'OCI VCN Flow Unified Schema Logs' 
| link span=1day Time, Action
| timestats name="Trend of Action" sum(Count) as Records by Action

Affiche les valeurs sum(Count) pour chaque action.


valeurs sum(Count) pour chaque action

Pour plus d'informations sur le tracé de la série chronologique à l'aide de la commande timestats, des champs, des limites et des options de configuration, reportez-vous à Utilisation de la commande timestats pour tracer une série chronologique.

Clusterisation de séries chronologiques

Vous pouvez regrouper des valeurs de séries temporelles similaires à l'aide de la commande timecluster après la commande link. Le clustering est utile lorsqu'il existe un grand nombre de séries temporelles à analyser ou lorsque vous souhaitez identifier différents comportements dans vos valeurs de séries temporelles.

Journaux de schéma unifiés de flux OCI VCN enregistrent les informations de trafic réseau pour une carte d'interface réseau virtuelle OCI. Pour identifier la quantité de données transférées par différentes adresses IP publiques, vous pouvez créer une requête à l'aide des champs Adresse IP publique et Taille de contenu sortante.

A partir de la commande link de base :

'Log Source' = 'OCI VCN Flow Unified Schema Logs' | eval 'Content Size Out (bytes)' = unit('Content Size Out', byte) | link 'Public IP'

Cela indique qu'il existe plus de 25k adresses IP publiques uniques dans le système.


sur des adresses IP publiques uniques 25k

La table comporte une ligne pour chaque adresse IP publique unique. Il doit être fractionné pour avoir une ligne pour chaque période. Pour ce faire, ajoutez le champ Heure à la commande link :

'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| eval 'Content Size Out (bytes)' = unit('Content Size Out', byte)
| link Time, 'Public IP'

Plusieurs lignes sont affichées pour chaque valeur d'adresse IP publique.

Si la commande timestats est utilisée pour tracer la série chronologique, elle renvoie uniquement les 100 principales adresses IP publiques. Il est impossible de tracer les adresses IP 25k dans un graphique.


la commande timestats renvoie uniquement les 100 principales adresses IP publiques

Par conséquent, au lieu de timestats, utilisez timecluster pour obtenir les exemples représentatifs.

'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| eval 'Content Size Out (bytes)' = unit('Content Size Out', byte)
| link Time, 'Public IP'
| timecluster avg('Content Size Out (bytes)') as 'Network Transfer' by 'Public IP'

Tracer des séries temporelles à l'aide de la commande timecluster

Chaque ligne représente une ou plusieurs valeurs d'adresse IP publique ayant des valeurs similaires pour le transfert réseau.

Passez la souris sur n'importe quel point pour afficher plus de détails :


Passez la souris sur n'importe quel point pour afficher plus de détails

Pour plus d'informations sur la commande timecluster et le clustering de séries temporelles, reportez-vous aux sections timecluster et Use timecluster Command to Plot a Time Series.