本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
模式分析
CloudWatch Logs Insights 會在您查詢日誌時使用機器學習演算法來尋找模式。模式是在您的日誌欄位之間重複出現的共用文字結構。當您檢視查詢的結果時,您可以選擇模式索引標籤,以查看 CloudWatch Logs 根據結果範例找到的模式。或者,您可以將 pattern
命令附加至查詢,以分析整組相符日誌事件中的模式。
模式對於分析大型日誌集很有用,因為大量日誌事件通常可以壓縮成幾個模式。
請考慮以下三個日誌事件的範例。
2023-01-01 19:00:01 [INFO] Calling DynamoDB to store for resource id 12342342k124-12345 2023-01-01 19:00:02 [INFO] Calling DynamoDB to store for resource id 324892398123-12345 2023-01-01 19:00:03 [INFO] Calling DynamoDB to store for resource id 3ff231242342-12345
在先前的範例中,這三個日誌事件都遵循一個模式:
<Time-1> [INFO] Calling DynamoDB to store for resource id <ID-2>
模式內的欄位稱為字符。模式內不同的欄位,例如請求 ID 或時間戳記,都是動態字符。每個動態字符都由 表示<
。string
-number
>字串
是字符所代表資料類型的描述。相較於其他動態字符,數字
會顯示此字符在模式中的顯示位置。
動態字符的常見範例包括錯誤代碼、時間戳記和請求 IDs。權杖值代表動態權杖的特定值。例如,如果動態字符代表 HTTP 錯誤代碼,則字符值可以是 501
。
模式偵測也用於 CloudWatch Logs 異常偵測器並比較功能。如需詳細資訊,請參閱日誌異常偵測及比較 (差異) 與先前的時間範圍。
模式分析入門
模式偵測會在任何 CloudWatch Logs Insights 查詢中自動執行。不包含pattern
命令的查詢會在結果中同時取得日誌事件和模式。
如果您在查詢中包含 pattern
命令,則會對整組相符的日誌事件執行模式分析。這可提供更準確的模式結果,但當您使用 pattern
命令時,不會傳回原始日誌事件。當查詢不包含 時pattern
,模式結果會根據前 1000 個傳回的日誌事件,或是您在查詢中使用的限制值。如果您在查詢pattern
中包含 ,則模式索引標籤中顯示的結果衍生自查詢相符的所有日誌事件。
開始使用 CloudWatch Logs Insights 中的模式分析
透過 https://console.aws.amazon.com/cloudwatch/
開啟 CloudWatch 主控台。 -
在導覽窗格中,選擇日誌、日誌洞見。
在 Logs Insights (日誌洞察) 頁面上,查詢編輯器包含會傳回 20 筆最新日誌事件的預設查詢。
-
移除查詢方塊中的
| limit 20
行,讓查詢如下所示:fields @timestamp, @message, @logStream, @log | sort @timestamp desc
-
在選取日誌群組 (選取日誌群組) 下拉式清單中,選擇要查詢的一或多個日誌群組。
-
(選用) 使用時間間隔選擇器,選取您要查詢的時間段。
您可以選擇 5 分鐘到 30 分鐘間隔;1 小時、3 小時和 12 小時間隔;或自訂時間範圍。
-
選擇執行查詢以開始查詢。
當查詢完成執行時,日誌索引標籤會顯示查詢傳回的日誌事件資料表。表格上方是有關有多少筆記錄符合查詢的訊息,類似於顯示 71,101 筆中有 10,000 筆記錄符合。
-
選擇模式索引標籤。
-
資料表現在會顯示查詢中找到的模式。由於查詢不包含
pattern
命令,此標籤只會顯示 10,000 個日誌事件中探索到的模式,這些事件會顯示在日誌標籤的表格中。對於每個模式,會顯示下列資訊:
-
模式,每個動態字符都顯示為
<
。string
-number
>字串
是字符所代表資料類型的描述。相較於其他動態字符,數字
會顯示此字符在模式中的顯示位置。 -
事件計數,這是模式出現在查詢日誌事件中的次數。選擇事件計數資料欄標題,依頻率排序模式。
-
事件比率,即包含此模式的查詢日誌事件百分比。
-
嚴重性類型,將是下列其中一項:
-
如果模式包含錯誤一詞,則為錯誤。
-
如果模式包含警告一詞,但不包含錯誤,請警告 。
-
如果模式不包含警告或錯誤,則為 INFO。
選擇嚴重性資訊欄標題,依嚴重性排序模式。
-
-
-
現在變更查詢。將查詢中的
| sort @timestamp desc
行取代為| pattern @message
,以便完整查詢如下所示:fields @timestamp, @message, @logStream, @log | pattern @message
-
選擇 Run query (執行查詢)。
查詢完成時,日誌索引標籤中沒有結果。不過,根據查詢的日誌事件總數,模式索引標籤可能列出更多模式。
-
無論您是否包含在查詢
pattern
中,都可以進一步檢查查詢傳回的模式。若要這樣做,請在檢查欄中選擇其中一個模式的圖示。模式檢查窗格隨即出現,並顯示下列項目:
-
模式。在模式中選取權杖,以分析該權杖的值。
-
顯示查詢時間範圍內模式出現次數的長條圖。這可協助您識別有趣的趨勢,例如模式的出現突然增加。
-
日誌範例索引標籤會顯示一些符合所選模式的日誌事件。
-
如果您已選取動態權杖,權杖值索引標籤會顯示所選動態權杖的值。
注意
每個字符最多擷取 10 個字符值。字符計數可能不精確。CloudWatch Logs 使用機率計數器來產生字符計數,而不是絕對值。
-
相關模式索引標籤會顯示與您檢查的模式幾乎同時經常發生的其他模式。例如,如果
ERROR
訊息的模式通常伴隨著另一個標示為 的日誌事件INFO
和其他詳細資訊,則此模式會顯示在此處。
-
模式命令的詳細資訊
本節包含有關 pattern
命令及其用途的更多詳細資訊。
-
在先前的教學課程中,我們在新增 時移除
sort
命令,pattern
因為如果查詢在sort
命令之後包含pattern
命令,則查詢無效。在pattern
之前擁有 是有效的sort
。如需
pattern
語法的詳細資訊,請參閱 pattern。 -
當您在查詢
pattern
中使用 時,@message
必須是在pattern
命令中選取的其中一個欄位。 -
您可以在
filter
命令之前包含pattern
命令,只讓篩選過的日誌事件集做為模式分析的輸入。 -
若要查看特定欄位的模式結果,例如衍生自
parse
命令的欄位,請使用pattern @fieldname
。 -
具有非日誌輸出的查詢,例如使用
stats
命令的查詢,不會傳回模式結果。