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