本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
篩選條件
使用 filter
來取得與一個或多個條件相符的日誌事件。
範例:使用一個條件篩選日誌事件
程式碼片段會顯示一個查詢範例,其會傳回 range
的值大於 3000 的所有日誌事件。該查詢將結果限制為 20 筆日誌事件,並按照 @timestamp
依遞減順序對日誌事件進行排序。
fields @timestamp, @message | filter (range>3000) | sort @timestamp desc | limit 20
範例:使用多個條件篩選日誌事件
您可以使用關鍵字 and
和 or
以結合多個條件。
程式碼片段會顯示一個查詢範例,其會傳回 range
的值大於 3000 且 accountId
的值等於 123456789012 的日誌事件。該查詢將結果限制為 20 筆日誌事件,並按照 @timestamp
依遞減順序對日誌事件進行排序。
fields @timestamp, @message | filter (range>3000 and accountId=123456789012) | sort @timestamp desc | limit 20
索引欄位和 filter 命令
如果您已為日誌群組建立欄位索引,您可以利用這些欄位索引,讓您的filter
查詢更有效率並減少掃描的磁碟區。例如,假設您已建立 的欄位索引requestId
。然後,該日誌群組上包含filter requestId =
或value
filter requestId IN [
將嘗試略過處理已知不包含索引欄位的日誌事件的任何 CloudWatch Logs Insights 查詢。透過嘗試僅掃描已知包含該索引欄位的日誌事件,可以減少掃描磁碟區,查詢速度更快。value
, value
, ...]
如需欄位索引以及如何建立它們的詳細資訊,請參閱 建立欄位索引以改善查詢效能並減少掃描磁碟區。
重要
只有具有 filter
和 的查詢fieldName
=...filter
將受益於欄位索引改進。使用 的查詢fieldName
IN...filter
不使用索引,並一律掃描所選日誌群組中的所有日誌事件。fieldName
like
範例:使用索引尋找與特定請求 ID 相關的日誌事件
此範例假設您已在 上建立欄位索引requestId
。對於使用此欄位索引的日誌群組,查詢會利用欄位索引嘗試掃描最少數量的日誌事件,以尋找值requestId
為 的事件 123456
fields @timestamp, @message | filter requestId = "1234656" | limit 20
filter 命令中的比對和規則表達式
篩選命令支援使用規則表達式。您可以使用下列比較運算子 (=
、!=
、<
、<=
、>
、>=
) 和布林值運算子 (and
、or
以及 not
)。
您可以使用關鍵字 in
來測試設定的成員資格並檢查陣列中的元素。若要檢查陣列中的元素,將陣列放在 in
之後。您可以搭配 in
使用布林運算子 not
。您可以建立查詢来使用 in
傳回欄位為字串相符的日誌事件。欄位必須是完整的字串。例如,下列程式碼片段會顯示查詢使用 in
来傳回欄位 logGroup
是完整的字串 example_group
的日誌事件。
fields @timestamp, @message | filter logGroup in ["example_group"]
您可以使用關鍵字詞 like
和 not
like
來比對子字串。您可以使用規則表達式運算子 =~
來比對子字串。若要比對帶有 like
和 not like
的子字串,請將要比對的子字串放在單引號或雙引號中。您可以搭配 like
和 not
like
使用規則表達式模式。若要使用規則表達式運算子來比對子字串,請以斜線括住想要比對的子字串。下列範例包含程式碼片段,示範如何使用 filter
命令來比對子字串。
範例:比對子字串
以下範例會傳回 f1
含有單字 Exception 的日誌事件。所有三個範例都會區分大小寫。
第一個範例比對帶有 like
的子字符。
fields f1, f2, f3 | filter f1 like "Exception"
第二個範例比對帶有 like
和規則表達式模式的子字串。
fields f1, f2, f3 | filter f1 like /Exception/
第三個範例會比對子字串與規則表達式。
fields f1, f2, f3 | filter f1 =~ /Exception/
範例:比對子字串與萬用字元
您可以使用句點符號 (.
) 作為規則表達式中的萬用字元來比對子字串。在下列範例中,查詢會傳回與以字串 ServiceLog
開始的 f1
的值相符項目。
fields f1, f2, f3 | filter f1 like /ServiceLog./
您可以在句點符號 (.*
) 後面放置一個星號符號,來建立窮盡數量詞,窮盡數量詞會傳回儘可能多的相符項目。例如,以下查詢會傳回與以字串 ServiceLog
開始而且還包含字串 ServiceLog
的 f1
的值相符項目。
fields f1, f2, f3 | filter f1 like /ServiceLog.*/
可能的相符項目格式如下所示:
-
ServiceLogSampleApiLogGroup
-
SampleApiLogGroupServiceLog
範例:從相符項目中排除子字串
以下範例會顯示會傳回日誌事件的查詢,傳回的日誌事件中 f1
不會含有單字 Exception。這個範例區分大小寫。
fields f1, f2, f3 | filter f1 not like "Exception"
範例:比對區分大小寫的子字串
您可以比對帶有 like
和規則表達式且區分大小寫的子字串。請將下列參數 (?i) 放置在想要比對的子字串之前。下列範例會顯示會傳回日誌事件的查詢,傳回的日誌事件中 f1
會含有單字 Exception 或 exception。
fields f1, f2, f3 | filter f1 like /(?i)Exception/