針對 Azure 監視器中的記錄搜尋警示進行疑難排解
本文說明如何解決 Azure 監視器中記錄搜尋警示的常見問題。 也提供記錄警示功能與設定常見問題的解決方案。
您可以藉由 Log Analytics 查詢,使用記錄警示來評估每個設定頻率的資源記錄,並根據結果引發警示。 規則可使用動作群組觸發一或多個動作。 若要深入了解記錄搜尋警示的功能和術語,請參閱 Azure 監視器中的記錄警示。
注意
本文不會討論您可以在 Azure 入口網站中看到觸發警示規則但未傳送通知的情況。 針對這類案例,請參閱疑難排解警示。
記錄搜尋警示在應該引發時未引發
如果您的記錄搜尋警示在應該引發時未引發,請檢查下列項目:
警示規則是否處於降級或無法使用的健全狀態?
檢視記錄搜尋警示規則的健全狀態:
從頂端命令列,選取 [警示規則]。 此頁面會顯示所有訂用帳戶上所有警示規則。
選取您要監視的記錄搜尋警示規則。
在左窗格的 [說明] 之下,選取 [資源健康情況]。
若要深入了解,請參閱監視記錄搜尋警示規則的健康情況。
檢查記錄擷取延遲。
Azure 監視器會處理來自世界各地的客戶記錄 TB,這可能會導致 記錄擷取延遲。
記錄檔是半結構化資料,原本就比計量還要延遲。 如果您在引發的警示時發生超過 4 分鐘的延遲,則應該考慮使用計量警示。 您可以使用記錄的計量警示,將資料從記錄傳送至計量存放區。
為了減輕延遲,系統會多次重試警示評估。 資料送達之後,即會引發警示,而在大部分情況下不會等於記錄檔的記錄時間。
動作是否靜音,或警示規則是否設定為自動解決?
常見的問題包括,您認為警示未引發,但已設定規則,使得警示不會引發。 請參閱記錄搜尋警示規則的進階選項,以驗證未選取下列兩者:
- [靜音動作] 核取方塊:可讓您針對一組時間將引發的警示動作設為靜音。
- 自動解決警示:將警示設定為只針對符合每個條件引發一次。
警示規則資源是否已移動或刪除?
如果警示規則目標資源移動、重新命名或刪除,則參考該資源的所有記錄警示規則都會中斷。 若要修正此問題,必須使用範圍的有效目標資源重新建立警示規則。
警示規則是否使用系統指派的受控識別?
當您使用系統指派的受控識別建立記錄警示規則時,不需任何權限即可建立身分識別。 建立規則之後,您必須將適當的角色指派給規則的身分識別,以便存取您要查詢的資料。 例如,您可能需要為它提供相關 Log Analytics 工作區的讀者角色,或是相關 ADX 叢集的讀者角色和資料庫檢視者角色。 如需在記錄警示中使用受控識別的詳細資訊,請參閱受控識別。
記錄搜尋警示規則中使用的查詢是否有效?
建立記錄警示規則時,系統會驗證查詢是否有正確的語法。 但有時候,記錄警示規則中提供的查詢可能會開始失敗。 一些常見的原因如下:
- 規則是透過 API 建立,而使用者略過驗證。
- 查詢會在多個資源上執行,且已刪除或移動一或多個資源。
- 查詢失敗,因為:
- 資料已停止流向查詢中的資料表超過 30 天。
- 自訂記錄資料表尚未建立,因為資料流程尚未開始。
- 查詢語言中的變更包含命令和函式的修訂格式,因此先前提供的查詢已不再有效。
Azure 資源健康狀態 監視雲端資源的健康情況,包括記錄搜尋警示規則。 當記錄搜尋警示規則狀況良好時,規則便會執行且查詢執行順利。 您可以使用記錄搜尋警示規則的資源健康情況,以了解影響記錄搜尋警示規則的問題。
記錄搜尋警示規則是否已停用?
如果記錄搜尋警示規則查詢無法評估持續一週,Azure 監視器會自動停用它。
此外,還有停用規則時所提交活動記錄事件的範例。
停用規則時的活動記錄範例
{
"caller": "Microsoft.Insights/ScheduledQueryRules",
"channels": "Operation",
"claims": {
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/spn": "Microsoft.Insights/ScheduledQueryRules"
},
"correlationId": "abcdefg-4d12-1234-4256-21233554aff",
"description": "Alert: test-bad-alerts is disabled by the System due to : Alert has been failing consistently with the same exception for the past week",
"eventDataId": "f123e07-bf45-1234-4565-123a123455b",
"eventName": {
"value": "",
"localizedValue": ""
},
"category": {
"value": "Administrative",
"localizedValue": "Administrative"
},
"eventTimestamp": "2019-03-22T04:18:22.8569543Z",
"id": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/<ResourceGroup>/PROVIDERS/MICROSOFT.INSIGHTS/SCHEDULEDQUERYRULES/TEST-BAD-ALERTS",
"level": "Informational",
"operationId": "",
"operationName": {
"value": "Microsoft.Insights/ScheduledQueryRules/disable/action",
"localizedValue": "Microsoft.Insights/ScheduledQueryRules/disable/action"
},
"resourceGroupName": "<Resource Group>",
"resourceProviderName": {
"value": "MICROSOFT.INSIGHTS",
"localizedValue": "Microsoft Insights"
},
"resourceType": {
"value": "MICROSOFT.INSIGHTS/scheduledqueryrules",
"localizedValue": "MICROSOFT.INSIGHTS/scheduledqueryrules"
},
"resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/<ResourceGroup>/PROVIDERS/MICROSOFT.INSIGHTS/SCHEDULEDQUERYRULES/TEST-BAD-ALERTS",
"status": {
"value": "Succeeded",
"localizedValue": "Succeeded"
},
"subStatus": {
"value": "",
"localizedValue": ""
},
"submissionTimestamp": "2019-03-22T04:18:22.8569543Z",
"subscriptionId": "<SubscriptionId>",
"properties": {
"resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/<ResourceGroup>/PROVIDERS/MICROSOFT.INSIGHTS/SCHEDULEDQUERYRULES/TEST-BAD-ALERTS",
"subscriptionId": "<SubscriptionId>",
"resourceGroup": "<ResourceGroup>",
"eventDataId": "12e12345-12dd-1234-8e3e-12345b7a1234",
"eventTimeStamp": "03/22/2019 04:18:22",
"issueStartTime": "03/22/2019 04:18:22",
"operationName": "Microsoft.Insights/ScheduledQueryRules/disable/action",
"status": "Succeeded",
"reason": "Alert has been failing consistently with the same exception for the past week"
},
"relatedEvents": []
}
記錄搜尋警示在不應該引發時引發
Azure 監視器中設定的記錄警示規則可能會意外觸發。 下列各節說明一些常見的原因。
警示是否因為延遲問題而觸發?
Azure 監視器會處理來自全球數 TB 的客戶記錄,這可能會導致記錄擷取延遲。 提供內建功能來防止誤判警示,但仍可能會在非常延遲的資料 (超過 30 分鐘) 和具有延遲尖峰的資料上發生。
記錄檔是半結構化資料,原本就比計量還要延遲。 如果您在引發的警示中遇到許多錯誤,請考慮使用計量警示。 您可以使用記錄的計量警示,將資料從記錄傳送至計量存放區。
當您嘗試偵測記錄中的特定資料時,記錄搜尋警示運作效果最佳。 當您嘗試偵測記錄中缺少資料時,例如發出虛擬機器活動訊號的警示時,它們較不有效。
設定記錄搜尋警示規則時的錯誤訊息
如需特定錯誤訊息及其解決方式,請參閱下列各節。
因為您需要記錄的權限,因此無法驗證查詢
如果您在建立或編輯警示規則查詢時收到此錯誤訊息,請確定您有讀取目標資源記錄的權限。
- 要在工作區內容存取模式中讀取記錄所需的權限:
Microsoft.OperationalInsights/workspaces/query/read
。 - 要在資源內容存取模式中讀取記錄所需的權限 (包括工作區型 Application Insights 資源):
Microsoft.Insights/logs/tableName/read
。
若要深入了解權限,請參閱管理 Log Analytics 工作區的存取權。
此查詢不支援一分鐘的頻率
使用一分鐘警示規則頻率有一些限制。 當您將警示規則頻率設定為一分鐘時,會執行內部操作來最佳化查詢。 如果查詢包含不支援的作業,這項操作可能會導致查詢失敗。
如需不支援的案例清單,請參閱此備註。
無法解析名為 <> 的純量運算式
建立或編輯警示規則查詢時,如果發生下列情況,可能傳回此錯誤訊息:
- 資料表結構描述中不存在您所參考的資料行。
- 您參考的資料行未在查詢的前一個專案子句中使用。
若要解決此情況,您可以將資料行新增至上一個專案的子句,或使用 columnifexists 運算子。
唯讀 OMS 警示不支援 ScheduledQueryRules API
嘗試使用 Azure 入口網站更新或刪除使用舊版 API 版本建立的規則時,會傳回此錯誤訊息。
- 使用 Log Analytics REST API,透過程式設計方式編輯或刪除規則。
- 建議:將警示規則升級為使用排程查詢規則 API (舊版 API 即將淘汰)。
已達到警示規則服務限制
如需每個訂用帳戶的記錄搜尋警示規則數目和資源上限的詳細資訊,請參閱 Azure 監視器服務限制。 請參閱檢查使用中的記錄警示規則數目,以查看目前使用中的計量警示規則數目。 如果您已達到配額限制,下列步驟可能有助於解決此問題。
刪除或停用不再使用的記錄搜尋警示規則。
使用依維度分割以減少規則數目。 當您使用依維度分割時,一個規則可以監視許多資源。
如果您需要增加配額限制,請接續開啟支援要求,並提供下列資訊:
- 必須增加配額限制的訂用帳戶識別碼和資源識別碼
- 配額增加的原因
- 要求的配額限制
ARG 和 ADX 查詢中的未完成時間篩選
在記錄搜尋警示中使用 Azure 數據總管 (ADX) 或 Azure Resource Graph (ARG) 查詢時,您可能會遇到「匯總粒度」設定未將時間篩選套用至查詢的問題。 這可能會導致非預期的結果和潛在的效能問題,因為查詢會傳回所有 30 天,而不是預期的時間範圍。
若要解決此問題,您必須在 ARG 和 ADX 查詢中明確套用時間篩選。 以下是確保的步驟:
適當的時間篩選:識別時間範圍:決定您想要查詢的特定時間範圍。 例如,如果您想要查詢過去 24 小時內的數據,則必須在查詢中指定這個時間範圍。
修改查詢:將時間篩選新增至 ARG 或 ADX 查詢,以限制傳回至所需時間範圍的數據。 以下是如何修改查詢的範例:
// Original query without time filter
resources
| where type == "microsoft.compute/virtualmachines"
// Modified query with time filter
resources
| where type == "microsoft.compute/virtualmachines"
| where timestamp >= ago(24h)
- 測試查詢:執行修改過的查詢,以確保它會傳回指定時間範圍內的預期結果。
- 更新警示:更新記錄搜尋警示,以搭配明確時間篩選條件使用修改的查詢。 這可確保您的警示是以正確的數據為基礎,且不包含不必要的歷程記錄數據。 藉由在 ARG 和 ADX 查詢中套用明確的時間篩選,您可以避免擷取過多數據的問題,並確保記錄搜尋警示正確且有效率。
下一步
- 了解 Azure 中的記錄警示。
- 深入了解如何設定警示。
- 深入了解記錄查詢。