日誌異常偵測 - Amazon CloudWatch Logs

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

日誌異常偵測

您可以為每個日誌群組建立日誌異常偵測器。異常偵測器會掃描擷取至日誌群組的日誌事件,並在日誌資料中尋找異常。異常偵測使用機器學習和模式辨識來建立典型日誌內容的基準。

為日誌群組建立異常偵測器後,它會使用日誌群組中過去兩週的日誌事件進行訓練。訓練期間最多可能需要 15 分鐘。訓練完成後,它會開始分析傳入的日誌以識別異常,而異常會顯示在 CloudWatch Logs 主控台中供您檢查。

CloudWatch Logs 模式辨識透過識別日誌中的靜態和動態內容來擷取日誌模式。模式對於分析大型日誌集很有用,因為大量日誌事件通常可以壓縮成幾個模式。

例如,請參閱下列三個日誌事件的範例。

2023-01-01 19:00:01 [INFO] Calling DynamoDB to store for ResourceID: 12342342k124-12345 2023-01-01 19:00:02 [INFO] Calling DynamoDB to store for ResourceID: 324892398123-1234R 2023-01-01 19:00:03 [INFO] Calling DynamoDB to store for ResourceID: 3ff231242342-12345

在先前的範例中,所有三個日誌事件都遵循一個模式:

<Date-1> <Time-2> [INFO] Calling DynamoDB to store for resource id <ResourceID-3>

模式內的欄位稱為字符。在模式內不同的欄位,例如請求 ID 或時間戳記,稱為動態字符。針對動態字符找到的每個不同值稱為字符值

如果 CloudWatch Logs 可以推斷動態權杖代表的資料類型,則會將權杖顯示為 <string-number>字串是字符所代表資料類型的描述。數字顯示此字符與其他動態字符相比,在模式中的顯示位置。

CloudWatch Logs 會根據分析包含該名稱的日誌事件內容來指派名稱的字串部分。

如果 CloudWatch Logs 無法推斷動態字符所代表的資料類型,則會以 <Token-number> 顯示字符,而數字會指出此字符相較於其他動態字符,出現在模式中的位置。

動態字符的常見範例包括錯誤碼、IP 地址、時間戳記和請求 IDs。

記錄異常偵測使用這些模式來尋找異常。在異常偵測器模型訓練期間之後,會根據已知趨勢評估日誌。異常偵測器會將顯著波動標記為異常。

本章說明如何啟用異常偵測、檢視異常、為日誌異常偵測器建立警示,以及日誌異常偵測器發佈的指標。它也說明如何使用 加密異常偵測器及其結果 AWS Key Management Service。

建立日誌異常偵測器不會產生費用。

異常和模式的嚴重性和優先順序

日誌異常偵測器找到的每個異常都會指派一個優先順序。每個找到的模式都會指派一個嚴重性

  • 優先順序會自動計算,並且以模式的嚴重性層級和與預期值的偏差量為基礎。例如,如果某個字符值突然增加 500%,即使異常情況的嚴重性為 ,也可能被指定為HIGH優先順序NONE

  • 嚴重性僅基於在 FATALERROR和 等模式中找到的關鍵字WARN。如果找不到這些關鍵字,則模式的嚴重性會標記為 NONE

異常可見時間

當您建立異常偵測器時,您可以指定其異常可見性期間上限。這是異常顯示在主控台中,並由 ListAnomalies API 操作傳回的天數。經過這段時間之後,如果異常情況持續發生,則會自動將其視為一般行為,且異常偵測器模型會停止將其標記為異常情況。

如果您在建立異常偵測器時未調整可見性時間,則會使用 21 天做為預設值。

隱藏異常

發現異常之後,您可以選擇暫時或永久隱藏該異常。隱藏異常會導致異常偵測器在您指定的時間內停止將此發生標記為異常。當您抑制異常時,您可以選擇僅隱藏該特定異常,或抑制與發現異常的模式相關的所有異常。

您仍然可以在 主控台中檢視隱藏的異常。您也可以選擇停止隱藏它們。

常見問答集

是否 AWS 使用我的資料來訓練機器學習演算法,以供其他客戶 AWS 使用?

否。訓練建立的異常偵測模型是以日誌群組中的日誌事件為基礎,且只會在該日誌群組和該 AWS 帳戶中使用。

哪些類型的日誌事件適用於異常偵測?

日誌異常偵測非常適合:應用程式日誌和其他類型的日誌,其中大多數日誌項目符合典型模式。具有日誌層級或嚴重性關鍵字的事件日誌群組,例如 INFOR ERRORDEBUG,特別適合用於日誌異常偵測。

日誌異常偵測不適用於:具有極長 JSON 結構的日誌事件,例如 CloudTrail Logs。模式分析最多只會分析日誌行的前 1500 個字元,因此會略過超出該限制的任何字元。

稽核或存取日誌,例如 VPC 流程日誌,在異常偵測方面也會較不成功。異常偵測旨在尋找應用程式問題,因此可能不適合網路或存取異常。

為了協助您判斷異常偵測器是否適合特定日誌群組,請使用 CloudWatch Logs 模式分析來尋找群組中日誌事件中的模式數目。如果模式數量不超過約 300 個,異常偵測可能運作良好。如需模式分析的詳細資訊,請參閱模式分析

哪些項目被標記為異常?

下列發生可能會導致日誌事件標記為異常:

  • 具有先前在日誌群組中未看到模式的日誌事件。

  • 已知模式的重大變化。

  • 具有一組離散常用值的動態字符的新值。

  • 動態字符值的出現次數發生大幅變更。

雖然上述所有項目都可能標記為異常,但它們並不表示應用程式效能不佳。例如,可能會將higher-than-usual200的成功值數目標記為異常。在這種情況下,您可以考慮抑制這些不代表問題的異常。

正在遮罩的敏感資料會發生什麼情況?

不會掃描被遮罩為敏感資料的任何日誌事件部分是否有異常。如需有關遮罩敏感資料的詳細資訊,請參閱使用遮罩協助保護敏感日誌資料