View a markdown version of this page

parse - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

parse

を使用してparseログフィールドからデータを抽出し、クエリで処理できる抽出フィールドを作成します。parse コマンドは、glob 式、正規表現、logfmt の 3 つのモードをサポートしています。

fieldName を省略すると、デフォルトで @message が使用されます。フィールド名を最初の引数として指定することで、任意の名前付きフィールドから解析できます。

ログイベントが指定されたパターンと一致しない場合、結果には表示されますが、抽出されたフィールドは表示されません。

Glob モード

抽出する値のプレースホルダーとしてワイルドカード (*) を使用し、 で名前付きフィールドに割り当てますas

[Syntax] (構文)

parse fieldName "pattern" as alias1, alias2

* ワイルドカードの数は、エイリアスの数と等しくなければなりません。

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
parse @logStream "*/*/*/*" as env, service, instance, shard | stats count(*) by env, service

連鎖解析

フィールドを抽出し、抽出したフィールドをさらに解析します。

parse @message "url=*" as url | parse url "/api/*/users/*" as apiVersion, userId | display apiVersion, userId

正規表現モード

フィールドを抽出するには、名前付きキャプチャグループで正規表現を使用します。正規表現の構文の詳細については、「サポートされている正規表現 (regex) 構文」を参照してください。

[Syntax] (構文)

parse fieldName /regex/

名前付きキャプチャグループ(?<name>...)を使用して、抽出されたフィールドを定義します。

名前付きキャプチャグループを使用してフィールドを抽出する

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

名前付きキャプチャグループを使用して VPC フローログから ENI を抽出する

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

Logfmt モード

を使用して parse logfmt logfmt 形式のログ行をキーと値のペアに解析します。Logfmt は、各行にスペース区切りのkey=valueペアが含まれる構造化ロギング形式です。

[Syntax] (構文)

parse fieldName logfmt as alias

その結果、ドット表記 (、 などlf.levellf.msg) でアクセスするマップが作成されます。

parse @message logfmt as lf | filter lf.level = "error" | display lf.msg, lf.duration
parse @message logfmt as lf | stats count(*) by lf.host