在 Azure 監視器中使用 AIOps 和機器學習偵測並減輕潛在問題
「適用於 IT 作業的人工智慧 (AIOps)」可提供強大的方法來提高服務品質和可靠性,其方式是透過使用機器學習來處理您從應用程式、服務和 IT 資源中收集到 Azure 監視器的資料並自動對該資料進行處理。
Azure 監視器的內建 AIOps 功能可提供深入解析,並協助您排解問題及自動執行資料驅動的工作,例如預測容量使用情況和自動縮放、識別和分析應用程式效能問題以及偵測虛擬機器、容器和其他資源中的異常行為。 這些功能可提升您的 IT 監視功能和作業,無需機器學習知識和進一步的投資。
Azure 監視器也提供了一些工具,可讓您對 Azure 監視器記錄中的資料建立自己的機器學習管線,以引入新的分析和回應功能並進行處理。
本文敘述 Azure 監視器的內建 AIOps 功能,以及說明如何對 Azure 監視器記錄中的資料建立和執行自訂機器學習模型並建置自動化機器學習管線。
內建的 Azure 監視器 AIOps 和機器學習功能
監視案例 | 功能 | 描述 |
---|---|---|
記錄監視 | Log Analytics 工作區深入解析 | 為您的 Log Analytics 工作區提供統一的檢視,並使用機器學習來偵測擷取異常。 |
Kusto 查詢語言 (KQL) 時間序列分析與機器學習函式 | 容易使用的工具,用於直接在 Azure 監視器記錄中產生時間序列資料、偵測異常、預測和執行根本原因分析,無需深入了解資料科學和程式設計語言。 | |
Microsoft Azure Copilot | 協助您使用 Log Analytics 來分析資料並排解問題。 根據提示來產生範例 KQL 查詢,例如「容器記錄中是否有任何錯誤?」。 | |
應用程式效能監視 | 應用程式對應智慧型檢視 | 對應服務之間的相依性,並協助您找出分散式應用程式所有元件當中的效能瓶頸或失敗熱點。 |
智慧型偵測 | 分析應用程式傳送至 Application Insights 的遙測資料、針對效能問題和失敗異常發出警示,並識別應用程式效能問題的潛在根本原因。 | |
計量警示 \(部分機器翻譯\) | 計量警示的動態閾值 | 了解計量模式、根據歷史資料自動設定警示閾值,並識別可能指出服務問題的異常。 |
虛擬機器擴展集 | 預測性自動調整 | 根據歷史 CPU 使用率模式來預測虛擬機器擴展集的整體 CPU 需求,並自動相應地擴展以滿足這些需求。 |
Azure 監視器記錄中的機器學習
使用 Kusto 查詢語言的內建時間序列分析和機器學習函式、運算子和外掛程式來獲得有關服務健康情況、使用情況、容量和其他趨勢的深入解析,以及產生預測並偵測 Azure 監視器記錄中的異常。
為了獲得更大的彈性並擴充分析和處理資料的能力,您也可以對 Azure 監視器記錄中的資料實作自己的機器學習管線。
下表比較了使用 KQL 的內建機器學習功能和建立您自己的機器學習管線的優點和限制,以及示範如何實作每一項的教學課程連結:
內建的 KQL 機器學習功能 | 建立您自己的機器學習管線 | |
---|---|---|
案例 | ✅ 異常偵測、根本原因和時間序列分析 |
✅ 異常偵測、根本原因和時間序列分析 ✅進階分析和 AIOPs 案例 |
優點 | 🔹讓您很快開始。 🔹不需要資料科學知識和程式設計技能。 🔹 最佳效能和節省成本。 |
🔹支援更大的縮放調整。 🔹支援進階、更複雜的案例。 🔹靈活選擇程式庫、模型、參數。 |
服務限制數和資料量 | Azure 入口網站或 Query API 記錄查詢限制數 (取決於您是在入口網站中作業還是使用 API,例如從筆記本)。 | 🔹Query API 記錄查詢限制數 (如果您將 Azure 監視器記錄中的資料當作您的機器學習管線的一部分來查詢的話)。 否則,不會有 Azure 服務限制數。 🔹可以支援更大的資料量。 |
整合 | 無。 在 Azure 入口網站中使用 Log Analytics,或從整合式 Jupyter Notebook 執行。 | 需要與工具 (例如 Jupyter Notebook) 整合。 一般而言,您也會與其他 Azure 服務 (例如 Azure Synapse Analytics) 整合。 |
效能 | 最佳的效能 (使用 Azure 資料總管平台,以分散式方式大規模執行)。 | 查詢或匯出資料時會引入少量的延遲 (取決於您如何實作您的機器學習管線)。 |
模型類型 | 具有一組可設定參數的 KQL 時間序列函式所支援的線性迴歸模型和其他模型。 | 完全可自訂的機器學習模型或異常偵測方法。 |
成本 | 沒有額外成本。 | 視您如何實作您的機器學習管線而定,您可能會因匯出資料、將評分的資料擷取至 Azure 監視器記錄,以及使用其他 Azure 服務而產生費用。 |
教學課程 | 在 Azure 監視器中使用 KQL 機器學習功能來偵測和分析異常 | 使用筆記本分析 Azure 監視器記錄中的資料 |
對 Azure 監視器記錄中的資料建立您自己的機器學習管線
對 Azure 監視器記錄中的資料建置您自己的機器學習管線,以引進新的 AIOps 功能並支援進階的案例,例如:
- 使用比 KQL 更複雜的模型來尋找安全性攻擊。
- 偵測 Web 應用程式中的效能問題並排解其中的錯誤問題。
- 建立多步驟的流程,以及根據上一步的結果在每個步驟中執行程式碼。
- 自動分析 Azure 監視器記錄資料並提供對多個方面的深入解析,包括基礎結構健康情況和客戶行為。
- 將 Azure 監視器記錄中的資料與其他來源的資料相關聯。
有兩種方法可讓您的機器學習管線使用 Azure 監視器記錄中的資料:
查詢 Azure 監視器記錄中的資料 - 將筆記本與 Azure 監視器記錄整,或使用 Azure 監視器查詢用戶端程式庫或 MSTICPY 等程式庫對記錄資料執行指令碼或應用程式,以表格形式從 Azure 監視器記錄中擷取資料;例如,擷取成 Pandas DataFrame。 您查詢的資料會擷取到您伺服器上的記憶體內物件中,而不需要將資料從您的 Log Analytics 工作區匯出。
注意
您可能需要轉換資料格式,作為您的管線的一部分。 若要使用基於 Apache Spark 建置的程式庫 (例如 SynapseML),您可能需要將 Pandas 轉換為 PySpark DataFrame。
從 Azure 監視器記錄中匯出資料 - 將資料從您的 Log Analytics 工作區中匯出 (通常匯出到 Blob 儲存體帳戶),並使用機器學習程式庫來實作您的機器學習管線。
下表比較為您的機器學習管線擷取資料的方法的優點和限制:
查詢 Azure 監視器記錄中的資料 | 匯出資料 | |
---|---|---|
優點 | 🔹讓您快速開始。 🔹只需要基本的資料科學和程式設計技能。 🔹最小延遲並節省成本。 |
🔹支援更大的縮放調整。 🔹沒有查詢限制數。 |
匯出資料? | No | Yes |
服務限制 | Query API 記錄查詢限制數和使用者查詢節流。 您可以透過將較大的查詢拆成區塊,在特定的程度上克服 Query API 限制數。 | 無 (來自 Azure 監視器)。 |
資料量 | 每小時分析幾個 GB 的資料或數百萬筆記錄。 | 支援大量的資料。 |
機器學習程式庫 | 適用於中小型的資料集 (您通常會使用單一節點的機器學習程式庫,例如 Scikit Learn)。 | 適用於大型的資料集 (您通常會使用巨量資料機器學習程式庫,例如 SynapseML)。 |
延遲 | 最少。 | 匯出資料時會引入少量的延遲。 |
成本 | 在 Azure 監視器中不收取額外的費用。 Azure Synapse Analytics、Azure Machine Learning 或其他服務的成本 (如果使用的話)。 |
資料匯出的成本和外部儲存體的成本。 Azure Synapse Analytics、Azure Machine Learning 或其他服務的成本 (如果使用的話)。 |
提示
為了充分利用這兩種實作方法的優點,請建立混合式管線。 常見的混合式方法是匯出資料來進行模型訓練 (這涉及大量資料),並使用「查詢 Azure 監視器記錄中的資料」方法來探索資料並對新資料進行評分以減少延遲和成本。
在 Azure 監視器記錄中實作機器學習生命週期的步驟
設定機器學習管線通常涉及到下面所述的全部或部分步驟。
您可以使用各種 Azure 和開放原始碼機器學習程式庫來實作您的機器學習管線,包括 Scikit Learn、PyTorch、Tensorflow、Spark MLlib,以及 SynapseML。
下表說明了每個步驟,並提供如何根據「對 Azure 監視器記錄中的資料建立您自己的機器學習管線」中所述的實作方法來實作這些步驟的高階指引和一些範例:
步驟 | 描述 | 查詢 Azure 監視器記錄中的資料 | 匯出資料 |
---|---|---|---|
探索資料 | 檢視並了解您所收集的資料。 | 探索您的資料最簡單的方法是使用 Log Analytics (它提供一組豐富的工具可用於探索和視覺化 Azure 入口網站中的資料)。 您也可以使用筆記本來分析 Azure 監視器記錄中的資料。 | 若要分析 Azure 監視器外部的記錄,請將資料從您的 Log Analytics 工作區中匯出,並在您選擇的服務中設定環境。 如需如何探索 Azure 監視器外部的記錄的範例,請參閱使用 Synapse 來分析從 Log Analytics 中匯出的資料。 |
建置和訓練機器學習模型 | 模型訓練是一個反覆的程序。 研究人員或資料科學家透過擷取和清理訓練資料、工程特徵、嘗試各種模型和調整參數來開發模型,並重複此循環,直到模型準確且穩健為止。 | 適用於中小型的資料集 (您通常會使用單一節點的機器學習程式庫,例如 Scikit Learn)。 如需如何使用 Scikit Learn 程式庫來對 Azure 監視器記錄中的資料訓練機器學習模型的範例,請參閱此範例筆記本:使用機器學習技術來偵測 Azure 監視器記錄中的異常。 |
適用於大型的資料集 (您通常會使用巨量資料機器學習程式庫,例如 SynapseML)。 |
部署和評分模型 | 評分是對新資料套用機器學習模型以取得預測的程序。 評分通常需要以最小的延遲大規模完成。 | 若要查詢 Azure 監視器記錄中的新資料,請使用 Azure 監視器查詢用戶端程式庫。 如需如何使用開放原始碼工具來為資料評分的範例,請參閱此範例筆記本:使用機器學習技術來偵測 Azure 監視器記錄中的異常。 |
|
依排程執行您的管線 | 將您的管線自動化,以定期對目前的資料重新訓練您的模型。 | 使用 Azure Synapse Analytics 或 Azure Machine Learning 來排定時間執行您的機器學習管線。 | 請參閱「查詢 Azure 監視器記錄中的資料」資料行中的範例。 |
透過將評分的結果擷取到 Log Analytics 工作區中,可讓您使用資料來取得進階的深入解析,以及建立警示和儀表板。 如需如何使用 Azure 監視器擷取用戶端程式庫來擷取評分結果的範例,請參閱將異常擷取到 Log Analytics 工作區中的自訂資料表中。
下一步
深入了解: