模式分析 - Amazon CloudWatch Logs

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

模式分析

CloudWatch Logs Insights 使用機器學習演算法來尋找您查詢日誌時的模式。模式是在您的日誌欄位之間重複的共用文字結構。當您檢視查詢的結果時,您可以選擇模式索引標籤,以查看根據結果範例所找到的 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 Logs 顯示<*>時,每個動態權杖都會由 表示。

動態權杖的常見範例包括錯誤碼、時間戳記和請求 IDs。權杖值代表動態權杖的特定值。例如,如果動態權杖代表HTTP錯誤碼,則權杖值可以是 501

模式偵測也用於 CloudWatch Logs 異常偵測器並比較功能。如需詳細資訊,請參閱 記錄異常偵測比較 (差異) 與先前的時間範圍

模式分析入門

模式偵測會在任何 CloudWatch Logs Insights 查詢中自動執行。未包含pattern命令的查詢會在結果中同時取得日誌事件和模式。

如果您在查詢中包含 pattern命令,則會對整組相符的日誌事件執行模式分析。這可為您提供更準確的模式結果,但當您使用 pattern命令時,不會傳回原始日誌事件。當查詢不包含 時pattern,模式結果會根據前 1000 個傳回的日誌事件,或您在查詢中使用的限制值。如果您在查詢pattern中包含 ,則模式索引標籤中顯示的結果會衍生自查詢相符的所有日誌事件。

若要在 CloudWatch Logs Insights 中開始使用模式分析
  1. 在 開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 Logs Logs Insights

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

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

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

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

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

  6. 選擇執行查詢以啟動查詢。

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

  7. 選擇模式索引標籤。

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

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

    • 模式 ,每個動態字符顯示為 <*>

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

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

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

      • ERROR 如果模式包含錯誤 一詞。

      • WARN 如果模式包含警告文字,但不包含錯誤

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

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

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

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

    查詢完成時,Logs 索引標籤中沒有結果。不過,模式索引標籤可能會列出更多列出的模式,取決於查詢的日誌事件總數。

  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命令的查詢,請勿傳回模式結果。