Recherche par requête

Oracle Log Analytics permet d'analyser et de filtrer de grandes quantités de données de journal dans vos bases de données d'entreprises, via un même affichage unificateur et personnalisable, qui facilite la lecture et de la navigation. Utilisez la fonctionnalité de recherche intégrée pour filtrer toutes les données de journal disponibles et renvoyer des entrées de journal spécifiques.

Oracle Log Analytics Search permet d'effectuer une analyse descendante vers les entrées des journaux spécifiques, ce qui permet d'analyser et de surveiller ciblées dans votre entreprise. Utilisez le langage Oracle Log Analytics pour formuler des requêtes de recherche afin d'extraire les entrées du journal propres au problème que vous résolvez.

Le langage de requête pour l'analyse des journaux permet d'indiquer l'action à effectuer sur les résultats de recherche. Ces commandes peuvent être des commandes de recherche ou statistiques. Les commandes de recherche sont celles qui filtrent davantage les entrées de journal disponibles. Les commandes statistiques effectuent des opérations statistiques sur les résultats de recherche. Pour obtenir la liste complète des commandes, leur syntaxe et des exemples d'utilisation, reportez-vous à Référence des commandes du langage de requête.

Le langage de requête Oracle Log Analytics vous permet d'effectuer les opérations suivantes :

  • Filtrer et explorer toutes les données de journal disponibles

  • Effectuer l'analyse de la cause première

  • Exécuter une analyse statistique sur les entités sélectionnées

  • Générer des rapports

  • Enregistrer des requêtes de recherche pour utilisation ultérieure

  • Extraire des recherches enregistrées pour créer des tableaux de bord

Vous pouvez construire une requête de recherche en faisant glisser des éléments du panneau Champ et en les déplaçant vers les sections appropriées de la colonne Visualiser, ou en saisissant directement la requête dans le champ Rechercher. Pour plus d'informations sur l'utilisation de l'interface utilisateur afin de formuler des requêtes, reportez-vous à l'Formulation de requêtes à l'aide de l'interface utilisateur Log Analytics.

Pour écrire des requêtes performantes à l'aide de la commande regex, reportez-vous à la syntaxe RE2J à l'adresse Java Implementation of RE2.

Utiliser l'assistant d'aide de requête

Log Analytics vous offre désormais une aide active pour apprendre rapidement à écrire des requêtes et fournit également un vaste ensemble d'exemples de requêtes pour une analyse avancée.

Cliquez sur l'icône d'aide Icône d'aide à la requête en regard de la barre de requête dans l'explorateur de journaux pour ouvrir l'assistant d'aide aux requêtes. En quelques minutes, vous pouvez comprendre le format et la syntaxe des requêtes que vous pouvez composer. Exécutez les exemples de requête en commençant par la recherche de base jusqu'à l'analyse avancée et familiarisez-vous avec la référence de requête. L'assistant vous donne quelques conseils et raccourcis pour rendre votre recherche efficace. Vous pouvez également afficher le résultat de l'exécution de certaines commandes courantes pour leurs cas d'emploi classiques.

Recherche de journaux à l'aide de mots-clés et d'expressions

Utilisez des commandes pour extraire des données de journal et pour effectuer des manipulations sur ces données. La première commande (implicite) d'une requête est la commande de recherche. Une recherche est une série de commandes délimitées par une barre verticale (|). La première chaîne séparée par un caractère non imprimable suivant la barre verticale identifie la commande à utiliser. La barre verticale indique que les résultats de la commande précédente doivent être utilisés comme entrées dans la commande suivante.

Par exemple, pour rechercher tous les messages d'erreur de base de données, entrez l'expression logique suivante dans la barre Rechercher d'Oracle Log Analytics :

Severity = 'error' AND 'Entity Type' = 'Database Instance'

Si vous placez les mots entre guillemets et que vous les incluez dans la chaîne de requête en tant qu'expression (‘Database Instance’, par exemple), seuls les journaux contenant l'expression ‘Database Instance’ sont renvoyés. De plus, les recherches par mot-clé dans lesquelles la sous-chaîne peut être interprétée comme une directive distincte doivent être spécifiées entre guillemets. Par exemple, pour rechercher la chaîne and, vous devez entrer la chaîne entre apostrophes (‘and’) afin d'empêcher le système d'utiliser sa signification booléenne.

Pour plus d'exemples et de détails sur l'utilisation du langage de requête afin d'effectuer des recherches dans les journaux, reportez-vous à Ecriture de requêtes de recherche.

Liste des recherches récentes

Oracle Log Analytics permet de sélectionner et d'exécuter une recherche récemment utilisée. Lorsque vous cliquez sur le champ de recherche ou que Vous saisissez le texte dans le champ de recherche, Oracle Log Analytics affiche la liste des recherches récemment utilisées. Vous pouvez ainsi accéder rapidement aux commandes de recherche récemment employées. Vous pouvez sélectionner n'importe quelle commande répertoriée et cliquer sur Exécuter pour exécuter la commande de recherche sélectionnée.

Remarque

La liste des recherches récemment utilisées est disponible par session. Par conséquent, si vous vous déconnectez d'Oracle Log Analytics, puis vous reconnectez, la liste de la session précédente ne s'affiche pas. Une autre liste de recherches récentes est créée pour votre session.

Utilisation de la fonctionnalité de suggestion automatique

Lorsque vous entrez une requête dans le champ Rechercher, la fonctionnalité de suggestion automatique d'Oracle Log Analytics suggère automatiquement les termes que vous pouvez utiliser dans la requête. Oracle Log Analytics affiche une liste de suggestions, en fonction du texte saisi dans le champ Rechercher. Par exemple, si vous avez saisi le nom d'un champ ou d'une action de recherche, la fonctionnalité de suggestion automatique affiche uniquement les valeurs possibles pour ce champ ou la liste des actions disponibles.

Ecriture de requêtes de recherche

Pour créer une requête de recherche Oracle Log Analytics, vous pouvez spécifier des entités, des mots-clés, des phrases ou un caractère générique, des opérateurs de comparaison, des expression booléennes, des fonctions et des temps.

Pour utiliser la fonctionnalité de recherche dans Oracle Log Analytics, vous devez formuler une requête de recherche et de la saisir dans le champ Rechercher.

Utiliser l'interface utilisateur Log Analytics

L'interface utilisateur Oracle Log Analytics permet de formuler une requête de recherche.

Vous pouvez utiliser les éléments suivants de l'interface utilisateur pour formuler une requête de recherche :

  • Barre de recherche : la requête de recherche est affichée ici. Vous pouvez modifier directement le texte de ce champ pour affiner davantage les résultats de recherche.

    La barre de recherche grandit ou rétrécit en fonction du nombre de lignes ajoutées à la requête. Elle peut comporter un maximum de 21 lignes et un minimum de 1 ligne. Certains raccourcis personnalisés sont disponibles :

    • Ctrl + i : permet de mettre en retrait toutes les lignes de texte dans l'éditeur. La lettre majuscule I ouvre le débogueur.
    • Ctrl + Entrée : permet d'exécuter la requête affichée dans l'éditeur.
    • Ctrl + Espace : permet d'afficher la liste en écriture automatique des options selon la position du curseur.
    • Ctrl + Z : permet d'annuler la dernière modification.
    • Ctrl + Y : permet de rétablir la dernière modification.
    • Ctrl + D : permet de supprimer la ligne en cours.

    Remarque : n'utilisez pas la touche Maj, sauf indication contraire.

    Placez le curseur en regard des crochets à l'intérieur pour que l'élément correspondant soit mis en évidence. Les éléments pouvant être mis en évidence sont ( ) et [ ].

    La barre de recherche prend en charge deux thèmes différents : la couleur et les nuances de gris. Vous pouvez modifier les thèmes de façon dynamique en changeant l'option dans la fenêtre instantanée d'aide.

  • Champ : le panneau Champ se compose des sections suivantes :

    • Les attributs fixes permettent de filtrer les données de journal en fonction des éléments suivants :

      • Sources de journal, telles que les journaux de base de données, les journaux Oracle WebLogic Server, etc.

      • Entités de journal, qui sont les noms réels des fichiers journaux

      • Libellés, qui sont les balises ajoutées aux entrées de journal lorsque celles-ci correspondent à des conditions définies spécifiques

      • Noms de téléchargement des données de journal téléchargées à la demande

      Par défaut, les entités et les détails de collecte sont disponibles dans le bucket Fixe du panneau Champs pour le filtrage. Vous pouvez épingler des champs supplémentaires au bucket Fixe en fonction de votre utilisation. Une fois épinglés, les champs sont déplacés vers le bucket Fixe. Vous pouvez détacher n'importe quel champ, et l'enlever du bucket Fixe pour le replacer dans le bucket Intéressant ou Autre.

    • En fonction des recherches et des requêtes, Oracle Log Analytics ajoute automatiquement des champs au bucket Intéressant pour référence rapide. Vous pouvez épingler un champ disponible dans le bucket Intéressant. Le champ épinglé est déplacé vers le bucket Fixe.

    • Vous pouvez épingler n'importe quel champ dans le bucket Autre et le déplacer vers le bucket Fixe. Si vous utilisez un champ du bucket Autre dans votre recherche ou requête, il est déplacé vers le bucket Intéressant.

      Les options sélectionnées sont ajoutées automatiquement à la requête dans la barre Rechercher.

  • Visualiser : dans ce panneau, vous pouvez sélectionner la façon dont vous voulez afficher les résultats de recherche. Dans le champ Regrouper par, vous pouvez choisir les mesures selon lesquelles regrouper les résultats.

  • Enregistrer : utilisez ce bouton pour enregistrer la requête de recherche figurant actuellement dans le champ Rechercher pour pouvoir l'exécuter ultérieurement.

  • Ouvrir : utilisez ce bouton pour visualiser les requêtes de recherche précédemment enregistrées. Vous pouvez exécuter ces requêtes et obtenir les résultats en cours, ou utiliser ces requêtes pour créer des tableaux de bord.

  • Nouveau : utilisez ce bouton pour lancer une nouvelle requête de recherche.

  • Exporter : utilisez ce bouton pour exporter le résultat de la requête de recherche en cours dans un fichier au format CSV (Comma-seperated Values) ou JSON (JavaScript Object Notation).

  • Exécuter : utilisez ce bouton pour exécuter la requête figurant actuellement dans le champ Rechercher.

  • Sélecteur d'heure : utilisez le sélecteur d'heure pour indiquer la période.

  • Panneau de visualisation : les résultats de la requête de recherche sont affichés dans ce panneau. Les informations filtrées dans ce panneau sont chargées lorsque la requête du champ Rechercher est exécutée. En cliquant sur n'importe quelle zone du graphique dans le panneau de visualisation, vous pouvez effectuer une analyse descendante vers la requête de recherche et la mettre à jour.

Utilisation de mots-clés, d'expressions et de caractères génériques

Les requêtes de type chaîne peuvent inclure des mots-clés et des expressions. Un mot-clé est un mot unique (par exemple, database), tandis qu'une expression fait référence à plusieurs mots, entre apostrophes (' ') ou guillemets (" ") (par exemple, ‘database connection’). Si vous indiquez un mot-clé ou une expression dans la requête, toutes les entrées de journal contenant ce mot-clé ou cette expression sont renvoyées après l'exécution de la requête.

Le langage Oracle Log Analytics Search Language prend également en charge la correspondance de modèles spéciaux. En d'autres termes, vous pouvez utiliser des caractères génériques, tels que l'astérisque (*), le point d'interrogation (?) et le pourcentage (%), pour compléter les mots-clés.

Le tableau suivant répertorie les caractères génériques pris en charge et fournit une brève description de chacun.

Caractère générique Description

?

Utilisez ce caractère pour remplacer un seul caractère parmi toutes les possibilités associées au mot-clé. Par exemple, si vous entrez host?, le mot-clé host1 est considéré comme une correspondance, mais pas host.foo.bar.

* ou %

Utilisez l'un de ces caractères pour remplacer au moins 0 caractère parmi toutes les possibilités associées au mot-clé. Par exemple, si vous entrez host* ou host%, host1 et host.foo.bar sont considérés comme des correspondances du mot-clé. De même, si vous entrez %host%, ahostb et myhost sont considérés comme des correspondances du mot-clé.

Vous pouvez spécifier plusieurs mots-clés. Par exemple : database et connection. Les journaux contenant les mots database et connection (pas nécessairement ensemble) sont renvoyés. Toutefois, ces mots ne doivent pas nécessairement apparaître l'un à la suite de l'autre. En revanche, si vous placez les mots entre guillemets et que vous les incluez dans la chaîne de requête en tant qu'expression (‘database connection’, par exemple), seuls les journaux contenant l'expression ‘database connection’ sont renvoyés. Pour savoir comment utiliser plusieurs mots-clés, reportez-vous à Utilisation d'expressions booléennes.

Lorsque vous indiquez un mot-clé ou une expression, tenez compte de ce qui suit :

  • Les mots-clés et les chaînes d'expression ne distinguent pas les majuscules des minuscules.

  • Les mots-clés qui ne sont pas placés entre guillemets doivent contenir uniquement des caractères alphanumériques, des traits de soulignement (_) et des caractères génériques (*, % et ?).

  • Les recherches par mot-clé dans lesquelles la sous-chaîne peut être interprétée comme une directive distincte doivent être spécifiées entre guillemets. Par exemple, pour rechercher la chaîne and, vous devez la saisir entre apostrophes (‘and’) afin d'empêcher le système d'utiliser sa signification booléenne.

Remarque

Pour utiliser des caractères génériques avec le champ message, vous devez également utiliser LIKE ou LIKE IN. Vous trouverez ci-dessous des exemples d'utilisation des caractères génériques avec message.
ORA-* AND message LIKE 'connection* error*'
ORA-* AND message LIKE IN ('tablesp*','connection* error*')

Utilisation d'opérateurs de comparaison

Les opérateurs de comparaison sont les conditions que vous spécifiez pour établir une relation entre un champ et sa valeur. Les champs sans valeur sont considérés comme NULL.

Le tableau suivant répertorie les opérateurs de comparaison pris en charge et fournit une brève description de chacun.

Opérateur de comparaison Description
< Si vous utilisez cet opérateur dans une requête, toutes les entrées de journal dont la valeur, pour le champ correspondant, est inférieure à la valeur indiquée sont renvoyées.
<= Si vous utilisez cet opérateur dans une requête, toutes les entrées de journal dont la valeur, pour le champ correspondant, est inférieure ou égale à la valeur indiquée sont renvoyées.
> Si vous utilisez cet opérateur dans une requête, toutes les entrées de journal dont la valeur, pour le champ correspondant, est supérieure à la valeur indiquée sont renvoyées.
>= Si vous utilisez cet opérateur dans une requête, toutes les entrées de journal dont la valeur, pour le champ correspondant, est supérieure ou égale à la valeur indiquée sont renvoyées.
= Si vous spécifiez cet opérateur dans une requête, toutes les entrées de journal dont la valeur, pour le champ correspondant, est égale à la valeur indiquée sont renvoyées.
!= Si vous spécifiez cet opérateur dans une requête, toutes les entrées de journal dont la valeur, pour le champ correspondant, est différente de la valeur indiquée sont renvoyées.

Utilisez ces opérateurs pour rechercher les journaux dont les champs présentent des valeurs spécifiques. Par exemple, indiquez Severity=’ERROR’ pour effectuer une recherche dans les journaux disponibles où la valeur du champ Severity est ERROR. De même, Severity!=NULL renvoie tous les journaux où la valeur du champ Severity n'est pas NULL (en d'autres termes, où la gravité a été indiquée).

Remarque

La valeur à droite de l'opérateur de comparaison doit être indiquée entre guillemets si la valeur n'est pas numérique ou NULL.

Utilisation d'expressions booléennes

La fonctionnalité Oracle Log Analytics Search possède les caractéristiques de LIKE et REGEX, conformément aux conventions standard. Les expressions booléennes peuvent prendre la valeur true ou false.

Le tableau suivant répertorie les expressions booléennes prises en charge, ainsi qu'une brève description de chacune.

Expression booléenne Description
AND Utilisez cette expression pour visualiser uniquement les journaux contenant les deux paramètres spécifiés.
NOT IN ou IN Utilisez cette expression pour rechercher des données se trouvant dans un sous-ensemble spécifié de données disponibles. Par exemple, ‘Entity Type’ IN (‘Database Instance’,‘Automatic Storage Management’,’Listener’,’Cluster’) commence par examiner uniquement les journaux contenant ‘Database Instance’, ‘Automatic Storage’, Listener ou Cluster, puis identifie les journaux contenant ‘Entity Type’. Toutefois, lorsque vous utilisez NOT IN, les entrées de journal avec l'expression ou le mot-clé spécifié sont renvoyées, en excluant les entrées fournies. Par exemple, ‘Entity Type’ NOT IN (‘Database Instance’,’Automatic Storage Management’,’Listener’,’Cluster’) commence par retirer les entrées de journal avec ‘Database Instance’, ‘Automatic Storage Management’, Listener et Cluster, puis renvoie les entrées de journal pour lesquelles la valeur ‘Target Type’ ne fait pas partie des valeurs spécifiées.

Le mot réservé NULL est pris en charge avec cet opérateur booléen.

NOT LIKE ou LIKE Utilisez cette expression pour rechercher les données qui correspondent ou ne correspondent pas au modèle de caractères spécifié. Le modèle de caractères est une chaîne qui peut contenir des caractères génériques.
NOT LIKE IN ou LIKE IN Comme [NOT] IN, cette expression permet d'utiliser la saisie accélérée pour exprimer plusieurs clauses LIKE ensemble.
OR Utilisez cette expression pour visualiser les journaux contenant l'un des paramètres spécifiés.

Le langage Oracle Log Analytics Search prend en charge l'imbrication d'expressions booléennes dans d'autres expressions booléennes. Par exemple, prenons la requête suivante :

fatal ('order' OR host LIKE '*.oracle.com')

L'exécution de cette requête renvoie tous les journaux contenant fatal, et soit qui incluent le mot-clé order soit qui proviennent d'un hôte dont le nom se termine par .oracle.com.

Formulation de requêtes à l'aide de l'interface utilisateur Log Analytics

Vous pouvez accéder à l'interface utilisateur Oracle Log Analytics pour formuler une requête de recherche.

Par défaut, la requête * | stats count by ‘log source’ est spécifiée dans le champ Rechercher.

Pour afficher les données d'entités spécifiques, procédez comme suit :

  1. Ouvrez le menu de navigation et cliquez sur Observation et gestion. Sous Log Analytics, cliquez sur Explorateur du journal.

  2. Sous l'en-tête Entités du panneau Champs, sélectionnez Entité ou Type d'entité, selon la façon dont vous voulez afficher les entités. Les bases de données inscrites sont regroupées en fonction de la sélection que vous avez effectuée. Par exemple, si vous sélectionnez Type d'entité, les entités sélectionnées sont regroupées en fonction de leur type.

  3. Sélectionnez l'entité ou le type d'entité pour lequel visualiser les données.

  4. Cliquez sur Soumettre.

    Le bouton Effacer apparaît en regard de l'entité que vous avez sélectionnée et les données sont affichées dans le panneau de visualisation.

Pour afficher les données d'un champ spécifique, procédez comme suit :

  1. Sélectionnez le type de champ dans le panneau Champs et sous les attributs Fixe, le bucket Intéressant ou le bucket Autre.

  2. Sélectionnez le libellé, l'entité de journal, la source de journal, le propriétaire ou le nom de téléchargement pour lequel visualiser les données. Vous pouvez sélectionner plusieurs libellés, entités de journal, sources de journal, propriétaires ou noms de téléchargement.

  3. Cliquez sur Soumettre.

    Les données du champ sont chargées dans le panneau de visualisation.

Spécification de la plage horaire dans la requête

En général, la période que vous sélectionnez dans l'explorateur de journaux n'est pas incluse dans la chaîne de requête. Vous pouvez spécifier la période dans votre requête à l'aide du modificateur Temps absolu ou Temps relatif dans la commande search.

Remarque

Dans le cas d'une recherche enregistrée, la période sélectionnée dans l'explorateur de journaux lors de la création de la recherche enregistrée est stockée en tant que l'un des composants de recherche enregistrée. Lorsque vous utilisez la recherche enregistrée, vous pouvez modifier l'heure à l'aide du sélecteur de période dans l'explorateur de journaux.

En revanche, lorsque la période est spécifiée dans une requête, la période sélectionnée dans l'explorateur de journaux est ignorée. La période incluse dans la requête est utilisée pour l'analyse des journaux. Lorsque vous enregistrez cette requête en tant que recherche enregistrée, la période spécifiée dans la requête est prise en compte pour les tâches de recherche enregistrée et non pour l'heure spécifiée dans l'explorateur de journaux.

Exemples où une période peut être spécifiée dans la requête :

  • Renvoyer tous les journaux d'erreurs ORA-600 découverts au cours des dernières 24 heures :

    Message like 'ORA-600%' and time > dateRelative(24h)
  • Renvoyer le nombre de journaux pour la cible hôte myHost au cours des 90 derniers jours :

    'Host Name (Server)' = myHost and Time > dateRelative(90day) | stats count as 'Num Host Logs'

Fonctions basées sur le temps pouvant être utilisées avec la commande search

Les fonctions temporelles suivantes ne peuvent être utilisées qu'avec la commande search :

  • toDate : il s'agit du temps absolu, par exemple 2014-07-15T16:24:51.000Z ou '2014-07-12', 'yyyy-MM-dd'.

    Syntaxe pour toDate : toDate(<time>).

  • dateRelative : crée une date relative à la date actuelle, par exemple, 12h ou 2d, day.

    Syntaxe pour dateRelative : dateRelative(<timespan>, <rounding interval>) où l'arrondi est basé sur l'heure UTC.

  • dateadd : ajoute des unités de temps à la date indiquée, par exemple, ajoutez Day, 2 à toDate('2024-05-12', 'yyyy-MM-dd').

    Syntaxe pour dateadd : dateadd(<date>, <unit>, <amount>).

  • dateset : modifie une date en fonction des unités de temps. Par exemple, toDate('2015-08-12', 'yyyy-MM-dd') a été modifié avec year, 2014, month, 7.

    Syntaxe pour dateset : dateset(<date>, <unit>, <value> [, <unit>,<value>]).

  • now : date et heure en cours.

    Syntaxe pour now : now().

Les critères de temps peuvent être exprimés à l'aide des opérateurs de comparaison =, !=, <, <=, >, >= et de l'opérateur logique and.

Unités de temps prises en charge

  • All Time

    Exemple JSON équivalent : "timeFilter": { "type" : "relative", "timeUnit" : "allTime" }

  • Deuxième : s, sec, secs, second, secondes

  • Minute : m, min, min, minute, minutes

    Exemple : Last 60 minutes

    Exemple JSON équivalent : "timeFilter": { "type" : "relative", "duration" : "60", "timeUnit" : "minutes" }

  • Heure : heure, heure, heure, heures

  • Jour : d, jour, jours

  • Semaine : w, semaine, semaines

  • Mois : mois, mois et mois

  • Année : année, année, années

Par exemple, la date absolue au format JSON est "timeFilter": { "type" : "absolute", "startTime" : "2015-04-26T08:00:00.000Z", "endTime" : "2015-04-27T08:00:00.000Z" }.

Exemples pour la période dans les requêtes

La requête suivante recherche tout ce qui se trouve entre 2 dates absolues spécifiées au format ISO standard :

time between '2014-07-15T16:24:51.000Z' and '2014-07-17T18:14:16.000Z'

Voir ISO 8601 : DATE AND TIME FORMAT.

La requête suivante recherche tout en fonction de 2 dates absolues qui ne sont pas au format standard ISO :

time between toDate('2014-07-12', 'yyyy-MM-dd') and toDate('2014-07-15', 'yyyy-MM-dd')

La requête suivante recherche tout sauf les 12 dernières heures (* sur le côté gauche de l'expression between représente new Date(0), * sur la droite est now) :

time between * AND dateRelative(12h)

La requête suivante recherche tous les éléments au cours des 12 dernières heures :

time > dateRelative(12h)

La requête suivante recherche tout ce qui a été arrondi au cours des 30 dernières minutes pour commencer à partir du début de l'heure :

time > dateRelative(30min, hour)

La requête suivante recherche des enregistrements datés avant le 12 juillet 2014 :

time < dateAdd(toDate('2014-07-22', 'yyyy-MM-dd'), day, -10)

La requête suivante recherche les enregistrements datés après le 10 juin 2010 :

time > dateSet(toDate('2015-08-10', 'yyyy-MM-dd'), year, 2010, month, 6)

La requête suivante recherche les enregistrements dont la dernière date de connexion est antérieure à l'heure actuelle :

'Upload Name' = idcs_dev8_dormant_upload and 'Last Login Date' < now()

La requête suivante recherche les données des dernières 24 heures :

time between daterelative(1d) and now()

La requête suivante effectue une recherche entre un horodatage absolu et maintenant :

time between '2015-06-15T00:00:00.000Z' and now()

Ecriture de sous-requêtes

Les sous-requêtes permettent à la requête enfant d'ajouter un filtre dynamique à ses requêtes parent. Les sous-requêtes sont évaluées en premier et le résultat est ensuite utilisé dans la requête parent.

  • Vous pouvez imbriquer des sous-requêtes les unes dans les autres, et une requête particulière peut comporter plusieurs sous-requêtes au même niveau.
  • Par défaut, les sous-requêtes héritent de la période globale, mais vous pouvez la remplacer à l'aide de la syntaxe time between T1 and T2, si nécessaire.
  • Les sous-requêtes ne renvoient que les 2 000 premières correspondances comme entrées à leur parent. Les autres résultats sont tronqués.
  • Le délai d'expiration maximal est de 30 secondes.
  • Le nom de tous les champs renvoyés par une sous-requête doit correspondre au nom des champs de la requête parent. Sinon, une erreur est signalée.
  • Vous pouvez utiliser les sous-requêtes uniquement dans une commande de recherche.
  • Vous pouvez utiliser toutes les commandes dans une sous-requête, sauf cluster, clustersplit, clustercompare, fieldsummary, delete, classify, highlight et highlightrows.

Exemples :

  • Pour représenter dans un graphique le trafic de la liste noire d'adresses IP au fil du temps :
    [searchlookup table=ip_blacklist | distinct ip | rename ip as 'host address'] | timestats count
  • Pour répertorier les produits les plus achetés par les utilisateurs principaux d'un site de commerce électronique :
    'Log Source'='WLS Access Logs' status=200 action=purchase ['Log Source'='WLS Access Logs' status=200 action=purchase | stats count by 'Host (Client Address)' | top limit=1 'Host(Client Address)' | fields -*, 'Host (Client Address)'] | lookup table=products select 'product name' using productid | stats count, distinctcount(productId), unique('product name') by 'Host (Client Address)'
  • Pour identifier les 4 ID de processus de système d'exploitation avec les sommes les plus élevées :
    [ *|stats sum('OS Process ID') as OSprocessidSum by 'OS Process ID' | top 4 OSprocessidSum | fields -OSprocessidSum ] | stats count by 'OS Process ID', 'Log Source', 'Host Name(Server)'
  • Pour afficher tous les journaux de la cible avec le plus de journaux dont la gravité est Fatal :
    * and [ Severity = fatal | stats count by Target | top limit = 1 Count | fields -Count]

Fonctions de recherche

Vous pouvez utiliser les fonctions suivantes dans vos requêtes de recherche :

Fonction Description Exemple

md5(string)

Recherche la valeur encodée md5

md5("hash my input")

sha1(string)

Recherche la valeur encodée sha1

sha1("hash my input")

sha256(string)

Recherche la valeur encodée sha256

sha256("hash my input")

sha512(string)

Recherche la valeur encodée sha512

sha512("hash my input")

encode64(string)

Recherche la valeur encodée Base64

encode64("my input")

decode64(string)

Recherche la valeur décodée Base64

decode64("encoded input")

anyOf(condition1, condition2, ..., conditionN)

Remarque : Ceci est équivalent à (condition1 OR condition2 OR ... conditionN)

Remarque : Il peut également être utilisé dans eval/where

anyof(ERROR, WARNING, FATAL) - Rechercher l'un de ces mots

anyof(Severity = ERROR, ERROR)

allOf(condition1, condition2, ..., conditionN)

Remarque : Ceci est équivalent à (condition1 AND condition2 AND ... conditionN)

Remarque : Il peut également être utilisé dans eval/where

allof(ERROR, WARNING, FATAL) - Rechercher les trois mots

allof(Severity = ERROR, ERROR)

anyFields(wildCardExpression) = value

anyFields(wildCardExpression) != value

Remarque : Ceci est équivalent à (field1 = value OR field2 = value OR ...)

Remarque : Il peut également être utilisé dans eval/where

anyFields('Project*) != null

Se traduit par ('ID projet' != NULL ou 'Nom du projet' != NULL ou 'Description du projet' != NULL)

allFields(wildCardExpression) = value

allFields(wildCardExpression) != value

Remarque : Ceci est équivalent à (field1 = value AND field2 = value OR ...)

Remarque : Il peut également être utilisé dans eval/where

allFields('Project*) != null

Convertit en ('ID projet' != NULL et 'Nom du projet' != NULL et 'Description du projet' != NULL)

Exemples supplémentaires pour anyof() et allof() :

  • Correspond aux journaux dont l'un des mots suivants est adm, logoff ou user :

    anyof(adm, logoff, user)
  • Correspond aux journaux dont tous les mots sont adm, logoff ou user :

    allof(adm, logoff, user)
  • Correspond aux journaux qui n'ont aucun des mots oracle ou active et qui ont la valeur non NULL pour le champ severity.

    severity != null not anyof(oracle, active)
  • Correspond aux journaux qui n'ont PAS les deux mots oracle ou active et qui ont une valeur non NULL pour le champ severity.

    severity != null not allof(oracle, active)
  • Renvoie les valeurs de gravité qui commencent par d ou par f :

    * | distinct Severity | where anyof(substr(severity, 0, 1) = d, substr(severity, 0, 1) = f)
  • Renvoie les valeurs de gravité qui commencent par f et sont not fatal :

    * | distinct Severity | where allof(severity != fatal, substr(severity, 0, 1) = f)

Exemples supplémentaires pour allfields() amd anyfields() :

  • Renvoie les journaux dans lesquels tous les champs commençant par la chaîne tar (par exemple, Target, Target Guid, Target Type) ne sont pas NULL :

    allfields(tar*) != null
  • allfields est la fonction par défaut et la requête ci-dessus peut être écrite en bref comme suit :

    'tar*' != null
  • Renvoie les journaux dans lesquels l'un des champs commençant par tar est NULL :

    
    anyFields(tar*) = null
  • Correspond aux journaux avec tous les champs numériques se terminant par length (par exemple : Longueur de paquet, Longueur de paquet, Longueur de paquet UDP) ayant la valeur 2 :

    allFields(*length) = 2
  • Correspond aux journaux dont l'un des champs numériques se termine par length et dont la valeur est 2 :

    anyFields(*length) = 2