filtre - Amazon CloudWatch Logs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

filtre

Utilisez la commande filter pour obtenir des événements du journal qui répondent à une ou plusieurs conditions.

Exemple : Filtrage des événements du journal à l'aide d'une condition

L'extrait de code montre un exemple de requête qui renvoie tous les événements du journal où la valeur de range est supérieur à 3 000. La requête limite les résultats à 20 événements du journal et trie les événements du journal par @timestamp et par ordre décroissant.

fields @timestamp, @message | filter (range>3000) | sort @timestamp desc | limit 20

Exemple : Filtrage des événements du journal à l'aide de plusieurs conditions

Vous pouvez utiliser les mots-clés and et or pour combiner plusieurs conditions.

L'extrait de code montre un exemple de requête qui renvoie les événements du journal où la valeur de range est supérieure à 3 000 et la valeur de accountId est égale à 123 456 789 012. La requête limite les résultats à 20 événements du journal et trie les événements du journal par @timestamp et par ordre décroissant.

fields @timestamp, @message | filter (range>3000 and accountId=123456789012) | sort @timestamp desc | limit 20

Champs indexés et commande de filtrage

Si vous avez créé des index de champs pour un groupe de journaux, vous pouvez exploiter ces index de champs pour améliorer l'efficacité de vos filter requêtes et réduire le volume numérisé. Supposons, par exemple, que vous ayez créé un index de champ pourrequestId. Ensuite, toute requête CloudWatch Logs Insights sur ce groupe de journaux qui inclut filter requestId = value ou filter requestId IN [value, value, ...] tentera d'ignorer les événements du journal de traitement dont on sait qu'ils n'incluent pas le champ indexé. En essayant d'analyser uniquement les événements du journal connus pour contenir ce champ indexé, le volume de numérisation peut être réduit et la requête est plus rapide.

Pour plus d'informations sur les index de champs et sur la façon de les créer, consultezCréez des index de champs pour améliorer les performances des requêtes et réduire le volume de numérisation.

Important

Seules les requêtes avec filter fieldName =... et filter fieldName IN... bénéficieront des améliorations de l'index des champs. Les requêtes filter fieldName like n'utilisent pas d'index et analysent toujours tous les événements du journal dans les groupes de journaux sélectionnés.

Exemple : rechercher les événements du journal liés à un certain ID de demande, à l'aide d'index

Cet exemple suppose que vous avez créé un index de champ surrequestId. Pour les groupes de journaux qui utilisent cet index de champs, la requête utilisera les index de champs pour tenter de scanner le moins possible d'événements de journal afin de trouver des événements requestId ayant une valeur de 123456

fields @timestamp, @message | filter requestId = "1234656" | limit 20

Correspondances et expressions régulières dans la commande filter

La commande de filtre prend en charge l'utilisation d'expressions régulières. Vous pouvez utiliser les opérateurs de comparaison suivants (=, !=, <, <=, >, >=) et les opérateurs booléens (and, or et not).

Vous pouvez utiliser le mot-clé in pour tester des membres d'un ensemble et vérifier les éléments d'une matrice. Pour vérifier les éléments dans une matrice, insérez la matrice après in. Vous pouvez utiliser l'opérateur booléen not avec in. Vous pouvez créer des requêtes utilisant in pour renvoyer les événements du journal où les champs sont des correspondances de chaînes. Les champs doivent être des chaînes complètes. Par exemple, l'extrait de code suivant montre une requête qui utilise in pour renvoyer les événements du journal où le champ logGroup est le example_group de chaîne complète.

fields @timestamp, @message | filter logGroup in ["example_group"]

Vous pouvez utiliser les phrases avec des mots-clés like et not like pour faire correspondre des sous-chaînes. Vous pouvez utiliser l'opérateur d'expression régulière =~ pour faire correspondre des sous-chaînes. Pour faire correspondre une sous-chaîne avec like et not like, placez la sous-chaîne à faire correspondre entre guillemets simples ou doubles. Vous pouvez utiliser des modèles d'expression régulière avec like et not like. Pour faire correspondre une sous-chaîne avec l'opérateur d'expression régulière, placez la sous-chaîne que vous souhaitez faire correspondre entre des barres obliques. Les exemples suivants contiennent des extraits de code qui montrent comment faire correspondre des sous-chaînes à l'aide de la commande filter.

Exemples : faire correspondre des sous-chaînes

Les exemples suivants renvoient des événements du journal où f1 contient le mot Exception. Les trois exemples sont sensibles à la casse.

Le premier exemple fait correspondre une sous-chaîne avec like.

fields f1, f2, f3 | filter f1 like "Exception"

Le deuxième exemple fait correspondre une sous-chaîne avec like et un modèle d'expression régulière.

fields f1, f2, f3 | filter f1 like /Exception/

Le troisième exemple fait correspondre une sous-chaîne avec une expression régulière.

fields f1, f2, f3 | filter f1 =~ /Exception/

Exemple : faire correspondre des sous-chaînes avec des caractères de remplacement

Vous pouvez utiliser le point (.) comme caractère de remplacement dans les expressions régulières pour faire correspondre des sous-chaînes. Dans l'exemple suivant, la requête renvoie des correspondances lorsque la valeur de f1 commence par la chaîne ServiceLog.

fields f1, f2, f3 | filter f1 like /ServiceLog./

Vous pouvez placer l'astérisque après le point (.*) pour créer un quantificateur gourmand qui renvoie autant de correspondances que possible. Par exemple, la requête suivante renvoie les résultats où la valeur de f1 ne commence par la chaîne ServiceLog et inclut également la chaîne ServiceLog.

fields f1, f2, f3 | filter f1 like /ServiceLog.*/

Les correspondances possibles peuvent être mises en forme comme suit :

  • ServiceLogSampleApiLogGroup

  • SampleApiLogGroupServiceLog

Exemple : exclure des sous-chaines des correspondances

L'exemple suivant montre une requête qui renvoie des événements du journal où f1 ne contient pas le mot Exception. L'exemple est sensible au cas par cas.

fields f1, f2, f3 | filter f1 not like "Exception"

Exemple : faire correspondre des sous-chaînes avec des modèles insensibles à la casse

Vous pouvez faire correspondre des sous-chaînes insensibles à la casse avec like et des expressions régulières. Placez le paramètre suivant (?i) avant la sous-chaîne à faire correspondre. L'exemple suivant montre une requête qui renvoie des événements du journal où f1 contient pas le mot Exception ou exception.

fields f1, f2, f3 | filter f1 like /(?i)Exception/