翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
parse
を使用してparseログフィールドからデータを抽出し、クエリで処理できる抽出フィールドを作成します。parse コマンドは、glob 式、正規表現、logfmt の 3 つのモードをサポートしています。
fieldName を省略すると、デフォルトで @message が使用されます。フィールド名を最初の引数として指定することで、任意の名前付きフィールドから解析できます。
ログイベントが指定されたパターンと一致しない場合、結果には表示されますが、抽出されたフィールドは表示されません。
Glob モード
抽出する値のプレースホルダーとしてワイルドカード (*) を使用し、 で名前付きフィールドに割り当てますas。
[Syntax] (構文)
parsefieldName"pattern" asalias1,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] (構文)
parsefieldName/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] (構文)
parsefieldNamelogfmt asalias
その結果、ドット表記 (、 など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