模式分析 - Amazon CloudWatch 日誌

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

模式分析

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 日誌深入解析中的模式分析
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/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 條記錄中的 1000 條匹配。

  7. 選擇「樣式」標籤。

  8. 資料表現在會顯示查詢中找到的模式。由於查詢不包含pattern命令,因此此索引標籤只會顯示在「記錄檔」索引標籤表格中顯示的 1000 個記錄事件中發現的病毒碼。

    針對每個樣式,會顯示下列資訊:

    • 模式,每個動態令牌顯示為<*>

    • 事件計數,也就是模式出現在查詢的記錄事件中的次數。選擇「事件計數」欄標題,依頻率排序模式。

    • 事件比率,即包含此模式之查詢記錄事件的百分比。

    • 嚴重性」類型,這將是下列其中一種:

      • 錯誤,如果模式包含「錯誤」一詞。

      • 如果模式包含「警告」一詞,但不包含「錯誤」,則會出警告。

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

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

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

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

    查詢完成後,[記錄] 索引標籤中沒有任何結果。不過,[模式] 索引標籤可能會列出更多的模式,視查詢的記錄事件總數而定。

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

    樣式檢查窗格隨即出現,並顯示下列內容:

    • 。在模式中選擇一個令牌以分析該令牌的值。

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

    • [記錄範例] 索引標籤會顯示一些符合所選模式的記錄事件。

    • 如果您已選取動態權杖,則「記號值」標籤會顯示所選動態權杖的值。

      注意

      每個記號最多可擷取 10 個記號值。令牌計數可能不精確。 CloudWatch 日誌使用概率計數器來生成令牌計數,而不是絕對值。

    • 「相關陣列」標籤會顯示經常發生的其他陣列,與您正在檢查的陣列相同的時間。例如,如果ERROR郵件的模式通常伴隨另一個標記為其他詳細資料INFO的記錄事件,則會在此處顯示該模式。

有關模式命令的詳細信息

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

  • 在上一個教程中,我們在添加時刪除了該sort命令,pattern因為如果查詢在pattern命令後包含命令,則該命sort令無效。有一個pattern之前是有效的sort

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

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

  • 您可以在filter指令之前包括該pattern指令,以便僅將篩選的記錄事件集用作陣列分析的輸入。

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

  • 具有非記錄輸出的查詢 (例如使用stats命令的查詢) 不會傳回模式結果。