parse - 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.

parse

Utilisez la commande parse pour extraire les données d'un champ de journal et créer un champ extrait que vous pouvez traiter dans votre requête. parse prend en charge à la fois le mode glob utilisant des caractères génériques et des expressions régulières. Pour plus d'informations sur la syntaxe des expressions régulières, consultezSyntaxe des expressions régulières (regex) prise en charge.

Vous pouvez analyser les champs JSON imbriqués avec une expression régulière.

Exemple : Analyse d'un champ JSON imbriqué

L'extrait de code montre comment analyser un événement du journal au format JSON qui a été aplati lors de l'ingestion.

{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}

L'extrait de code montre une requête avec une expression régulière qui extrait les valeurs de fieldsA et fieldsB pour créer les champs extraits fld et array.

parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array

Groupes de capture nommés

Lorsque vous utilisez parse avec une expression régulière, vous pouvez utiliser des groupes de capture nommés pour capturer un modèle dans un champ. La syntaxe est parse @message (?<Name>pattern).

L'exemple suivant utilise un groupe de capture sur un journal de flux VPC pour extraire l'ENI dans un champ nommé NetworkInterface.

parse @message /(?<NetworkInterface>eni-.*?) / display @timestamp, NetworkInterface
Note

Les événements du journal au format JSON sont aplatis lors de l'ingestion. Actuellement, l'analyse de champs JSON imbriqués avec une expression globale n'est pas prise en charge. Vous ne pouvez analyser que les événements du journal au format JSON qui ne contiennent pas plus de 200 champs d'événements de journal. Lorsque vous analysez des champs JSON imbriqués, vous devez mettre en forme l'expression régulière de votre requête pour qu'elle corresponde à votre événement du journal JSON.

Exemples de la commande d'analyse.

Utilisez une expression glob pour extraire les champs @user, @method et @latency à partir du champ de journal @message et renvoyer la latence moyenne pour chaque combinaison unique de @method et @user.

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

Utilisez une expression régulière pour extraire les champs @user2, @method2 et @latency2 à partir du champ du journal @message et renvoyer la latence moyenne pour chaque combinaison unique de @method2 et @user2.

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

Extrait les champs loggingTime, loggingType et loggingMessage, filtre vers le bas pour journaliser les événements qui contiennent les chaînes ERROR ou INFO, puis affiche uniquement les champs loggingMessage et loggingType pour les événements qui contiennent une chaîne ERROR.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError