Un filtre de requête est composé de termes et d’opérateurs.
Il existe deux types de termes :
Un terme unique est un mot unique comme test
ou hello
.
Une séquence est un groupe de mots entre guillemets, comme hello dolly
.
Pour combiner plusieurs termes dans une requête complexe, vous pouvez utiliser l’un des opérateurs booléens suivants :
Opérateur | Description | Exemple |
AND | Intersection : les deux termes figurent dans les événements sélectionnés (si aucun opérateur n’est ajouté, AND est utilisé par défaut). | authentication AND failure |
OR | Union : un des deux termes figure dans les événements sélectionnés. | authentication OR password |
- | Exclusion : le terme suivant ne figure PAS dans les événements sélectionnés. | authentication AND -password |
Utilisez la fonctionnalité de saisie automatique de la barre de recherche pour compléter votre requête en utilisant des valeurs existantes :
Les caractères suivants sont considérés comme spéciaux : +
-
=
&&
||
>
<
!
(
)
{
}
[
]
^
"
“
”
~
*
?
:
\
et /
. Ils requièrent donc le caractère d’échappement \
.
Pour rechercher les logs qui contiennent user=AliceMartin
dans l’attribut message, utilisez la recherche suivante :
user\=AliceMartin
Pour effectuer une recherche en fonction d’un attribut spécifique, ajoutez-le comme facette puis utilisez @
pour indiquer que vous faites une recherche à partir d’une facette.
Par exemple, si le nom de votre facette est url et que vous souhaitez filtrer les résultats en fonction de la valeur www.datadoghq.com, saisissez :
@url:www.datadoghq.com
Remarques :
Les recherches de facettes sont sensibles à la casse. Effectuez une recherche textuelle simple pour obtenir des résultats non sensibles à la casse. Vous pouvez aussi utiliser le filtre lowercase
avec votre parseur Grok lors du parsing pour obtenir des résultats non sensibles à la casse lorsque vous effectuez une recherche.
Lorsque vous recherchez une valeur de facette qui contient des caractères spéciaux, vous devez utiliser des caractères d’échappement ou des guillemets. Pour rechercher un caractère spécial ou une espace unique, utilisez le wildcard ?
. Par exemple, pour rechercher une facette my_facet
avec la valeur hello world
, utilisez : @my_facet:hello?world
.
Évitez d’utiliser des espaces dans les facettes de log. Si une facette de log contient malgré tout une espace, effectuez une recherche de facette en échappant l’espace : @user.first\ name:myvalue
ou utilisez le wildcard de caractère unique : @user.first?name:myvalue
.
Exemples :
Requête de recherche | Description |
---|---|
@http.url_details.path:"/api/v1/test" | Recherche tous les logs correspondants à /api/v1/test dans l’attribut http.url_details.path . |
@http.url:\/api\/v1\/* | Recherche tous les logs dont la valeur de l’attribut http.url commence par /api/v1/ |
@http.status_code:[200 TO 299] @http.url_details.path:\/api\/v1\/* | Recherche tous les logs dont la valeur http.status_code est comprise entre 200 et 299 et dont la valeur de l’attribut http.url_details.path commence par /api/v1/ |
Afin d’effectuer une recherche générique avec plusieurs caractères, utilisez le symbole *
comme illustré ci-dessous :
service:web*
renvoie tous les messages de log dont le service commence par web
.web*
renvoie tous les messages de log commençant par web
*web
renvoie tous les messages de log finissant par web
Les wildcards peuvent être utilisés au sein d’une facette avec cette syntaxe. La requête suivante renvoie tous les services se terminant par le texte mongo
:
service:*mongo
Les wildcards peuvent également être utilisés pour effectuer une recherche de texte brut dans un log qui ne fait pas partie d’une facette. La requête suivante renvoie tous les logs contenant le texte NETWORK
:
*NETWORK*
En revanche, les logs contenant le texte NETWORK
et faisant partie d’une facette mais pas du message de log ne seront pas renvoyés.
Utilisez les caractères <
, >
, <=
ou >=
pour effectuer une recherche avec des attributs numériques. Par exemple, pour récupérer tous les logs avec un délai de réponse supérieur à 100 ms :
@http.response_time:>100
Vous pouvez effectuer une recherche d’attribut numérique dans une plage spécifique. Par exemple, pour récupérer toutes les erreurs 4xx :
@http.status_code:[400 TO 499]
Vos logs héritent des tags des hosts et des intégrations qui les génèrent. Ils peuvent être utilisés dans une recherche ainsi que comme facettes :
test
recherche la chaîne « test ».("env:prod" OR test)
renvoie tous les logs avec le tag #env:prod
ou le tag #test
.(service:srvA OR service:srvB)
ou (service:(srvA OR srvB))
renvoie tous les logs qui contiennent les tags #service:srvA
ou #service:srvB
.("env:prod" AND -"version:beta")
renvoie tous les logs qui contiennent #env:prod
et qui ne contiennent pas #version:beta
Si vos tags ne respectent pas les recommandations relatives aux tags et n’utilisent pas la syntaxe key:value
, utilisez cette requête de recherche :
tags:<MON_TAG>
Vous pouvez ajouter des facettes à des tableaux de chaînes ou de nombres. Toutes les valeurs incluses dans le tableau sont énumérées dans la facette et peuvent être utilisées pour effectuer une recherche de logs.
Dans l’exemple ci-dessous, cliquer sur la valeur Peter
dans la facette renvoie tous les logs contenant un attribut users.names
dont la valeur est soit Peter
, soit un tableau qui contient Peter
:
Les vues enregistrées contiennent votre requête de recherche, les colonnes, l’horizon temporel et la facette.
Documentation, liens et articles supplémentaires utiles: