View a markdown version of this page

parse - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

parse

使用 從日誌欄位parse擷取資料,並建立您可以在查詢中處理的擷取欄位。parse 命令支援三種模式:glob 表達式、常規表達式和 logfmt。

如果省略 fieldName ,預設@message會使用 。您可以指定欄位名稱做為第一個引數,從任何具名欄位進行剖析。

如果日誌事件不符合指定的模式,您仍然會在結果中看到它,但沒有擷取的欄位。

Glob 模式

針對您要擷取的值使用萬用字元 (*) 做為預留位置,並使用 將其指派給具名欄位as

語法

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 模式

使用具有具名擷取群組的規則運算式來擷取欄位。如需規則表達式語法的資訊,請參閱 支援的規則運算式 (regex) 語法

語法

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配對。

語法

parse fieldName logfmt as alias

結果是您使用點表示法 (例如,、) lf.level存取的映射lf.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