本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
parse
使用 parse
從日誌欄位擷取資料,並建立一個您可在查詢中處理的擷取欄位。parse
支援使用萬用字元的 glob 模式和規則運算式。如需規則表達式語法的相關資訊,請參閱 支援的規則運算式 (regex) 語法。
您可以使用規則運算式剖析巢狀JSON欄位。
範例:剖析巢狀JSON欄位
程式碼片段顯示如何剖析擷取期間已扁平化的JSON日誌事件。
{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}
程式碼片段會顯示一個具有規則運算式的查詢,其會擷取 fieldsA
和 fieldsB
的值,以建立擷取欄位 fld
和 array
。
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
擷取欄位 loggingTime
、loggingType
和 loggingMessage
,並篩選包含 ERROR
或 INFO
字串的日誌事件,然後針對包含 ERROR
字串的事件,僅顯示 loggingMessage
和 loggingType
欄位。
FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError