模式分析 - Amazon CloudWatch Logs

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

模式分析

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 中開始使用模式分析
  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 在導覽窗格中,選擇日誌日誌洞見

    Logs Insights (日誌洞察) 頁面上,查詢編輯器包含會傳回 20 筆最新日誌事件的預設查詢。

  3. 移除查詢方塊中的| limit 20行,讓查詢如下所示:

    fields @timestamp, @message, @logStream, @log | sort @timestamp desc
  4. 選取日誌群組 (選取日誌群組) 下拉式清單中,選擇要查詢的一或多個日誌群組。

  5. (選用) 使用時間間隔選擇器,選取您要查詢的時間段。

    您可以選擇 5 分鐘和 30 分鐘間隔;1 小時、3 小時和 12 小時間隔;或自訂時間範圍。

  6. 選擇執行查詢以開始查詢。

    當查詢完成執行時,日誌索引標籤會顯示查詢傳回的日誌事件資料表。表格上方是有關有多少筆記錄符合查詢的訊息,類似於顯示 71,101 筆中有 10,000 筆記錄符合

  7. 選擇模式索引標籤。

  8. 資料表現在會顯示查詢中找到的模式。由於查詢不包含 pattern命令,此索引標籤只會顯示 10,000 個日誌事件中探索到的模式,這些事件會顯示在日誌索引標籤的表格中。

    對於每個模式,會顯示下列資訊:

    • 模式,每個動態字符都顯示為 <string-number>字串是字符所代表資料類型的描述。相較於其他動態字符,數字會顯示此字符在模式中的顯示位置。

    • 事件計數,這是模式出現在查詢日誌事件中的次數。選擇事件計數欄標題,依頻率排序模式。

    • 事件比率,即包含此模式的查詢日誌事件百分比。

    • 嚴重性類型,將是下列其中一項:

      • 如果模式包含錯誤一詞,則為錯誤

      • 如果模式包含警告一詞,但不包含錯誤,請警告

      • 如果模式不包含警告錯誤則為 INFO

      選擇嚴重性資訊欄標題,依嚴重性排序模式。

  9. 現在變更查詢。將查詢中的 | sort @timestamp desc行取代為 | pattern @message,讓完整的查詢如下所示:

    fields @timestamp, @message, @logStream, @log | pattern @message
  10. 選擇 Run query (執行查詢)。

    當查詢完成時,日誌索引標籤中沒有結果。不過,根據查詢的日誌事件總數,模式索引標籤可能列出較多的模式。

  11. 無論您是否包含在查詢pattern中,都可以進一步檢查查詢傳回的模式。若要這樣做,請在檢查欄中選擇其中一個模式的圖示。

    模式檢查窗格隨即出現,並顯示下列項目:

    • 模式。在模式中選取權杖,以分析該權杖的值。

    • 顯示查詢時間範圍內模式出現次數的長條圖。這可協助您識別有趣的趨勢,例如模式的出現突然增加。

    • 日誌範例索引標籤會顯示一些符合所選模式的日誌事件。

    • 如果您已選取動態權杖,權杖值索引標籤會顯示所選動態權杖的值。

      注意

      每個字符最多擷取 10 個字符值。字符計數可能不精確。CloudWatch Logs 使用機率計數器來產生字符計數,而不是絕對值。

    • 相關模式索引標籤會顯示與您檢查的模式幾乎同時經常發生的其他模式。例如,如果ERROR訊息的模式通常伴隨另一個標記為 的日誌事件INFO和其他詳細資訊,則此模式會顯示在此處。

模式命令的詳細資訊

本節包含有關 pattern命令及其用途的更多詳細資訊。

  • 在先前的教學課程中,我們在新增 時移除 sort命令,pattern因為如果查詢在sort命令之後包含pattern命令,則查詢無效。在 pattern之前擁有 是有效的sort

    如需pattern語法的詳細資訊,請參閱 pattern

  • 當您pattern在查詢中使用 時, @message 必須是 pattern命令中選取的其中一個欄位。

  • 您可以在filter命令之前包含 pattern命令,只讓篩選過的日誌事件集做為模式分析的輸入。

  • 若要查看特定欄位的模式結果,例如衍生自parse命令的欄位,請使用 pattern @fieldname

  • 使用非日誌輸出的查詢,例如使用 stats命令的查詢,不會傳回模式結果。