parse - Amazon CloudWatch Logs

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

parse

使用 parse 從日誌欄位擷取資料,並建立一個您可在查詢中處理的擷取欄位。parse 支援使用萬用字元的 glob 模式和規則運算式。如需規則表達式語法的相關資訊,請參閱 支援的規則運算式 (regex) 語法

您可以使用規則運算式剖析巢狀JSON欄位。

範例:剖析巢狀JSON欄位

程式碼片段顯示如何剖析擷取期間已扁平化的JSON日誌事件。

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

程式碼片段會顯示一個具有規則運算式的查詢,其會擷取 fieldsAfieldsB 的值,以建立擷取欄位 fldarray

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

具名擷取群組

當您將 parse 與正規表達式搭配使用時,您可以使用具名擷取群組將模式擷取到欄位中。語法是 parse @message (?<Name>pattern).

下列範例使用VPC流程日誌上的擷取群組,將 擷取ENI至名為 的欄位NetworkInterface

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

JSON 日誌事件會在擷取期間扁平化。目前不支援剖析具有 glob 表達式的巢狀JSON欄位。您只能剖析包含不超過 200 個JSON日誌事件欄位的日誌事件。剖析巢狀JSON欄位時,您必須在查詢中格式化規則運算式,以符合JSON日誌事件的格式。

剖析命令的範例

使用 glob 運算式,從日誌欄位 @message 中擷取欄位 @user@method@latency,並傳回 @method@user 各種不重複組合的平均延遲。

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

使用規則運算式,從日誌欄位 @message 中擷取欄位 @user2@method2@latency2,並傳回 @method2@user2 各種不重複組合的平均延遲。

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

擷取欄位 loggingTimeloggingTypeloggingMessage,並篩選包含 ERRORINFO 字串的日誌事件,然後針對包含 ERROR 字串的事件,僅顯示 loggingMessageloggingType 欄位。

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