共用方式為


針對 Azure 監視器中的記錄搜尋警示進行疑難排解

本文說明如何解決 Azure 監視器中記錄搜尋警示的常見問題。 也提供記錄警示功能與設定常見問題的解決方案。

您可以藉由 Log Analytics 查詢,使用記錄警示來評估每個設定頻率的資源記錄,並根據結果引發警示。 規則可使用動作群組觸發一或多個動作。 若要深入了解記錄搜尋警示的功能和術語,請參閱 Azure 監視器中的記錄警示

注意

本文不會討論您可以在 Azure 入口網站中看到觸發警示規則但未傳送通知的情況。 針對這類案例,請參閱疑難排解警示

記錄搜尋警示在應該引發時未引發

如果您的記錄搜尋警示在應該引發時未引發,請檢查下列項目:

  1. 警示規則是否處於降級或無法使用的健全狀態?

    檢視記錄搜尋警示規則的健全狀態:

    1. 在 [入口網站] 中,選取 [監視器],然後選取 [警示]

    2. 從頂端命令列,選取 [警示規則]。 此頁面會顯示所有訂用帳戶上所有警示規則。

    3. 選取您要監視的記錄搜尋警示規則。

    4. 在左窗格的 [說明] 之下,選取 [資源健康情況]

      記錄搜尋警示規則中 [資源健康狀態] 區段的螢幕擷取畫面。

    若要深入了解,請參閱監視記錄搜尋警示規則的健康情況

  2. 檢查記錄擷取延遲。

    Azure 監視器會處理來自世界各地的客戶記錄 TB,這可能會導致 記錄擷取延遲

    記錄檔是半結構化資料,原本就比計量還要延遲。 如果您在引發的警示時發生超過 4 分鐘的延遲,則應該考慮使用計量警示。 您可以使用記錄的計量警示,將資料從記錄傳送至計量存放區。

    為了減輕延遲,系統會多次重試警示評估。 資料送達之後,即會引發警示,而在大部分情況下不會等於記錄檔的記錄時間。

  3. 動作是否靜音,或警示規則是否設定為自動解決?

    常見的問題包括,您認為警示未引發,但已設定規則,使得警示不會引發。 請參閱記錄搜尋警示規則的進階選項,以驗證未選取下列兩者:

    • [靜音動作] 核取方塊:可讓您針對一組時間將引發的警示動作設為靜音。
    • 自動解決警示:將警示設定為只針對符合每個條件引發一次。

    隱藏警示

  4. 警示規則資源是否已移動或刪除?

    如果警示規則目標資源移動、重新命名或刪除,則參考該資源的所有記錄警示規則都會中斷。 若要修正此問題,必須使用範圍的有效目標資源重新建立警示規則。

  5. 警示規則是否使用系統指派的受控識別?

    當您使用系統指派的受控識別建立記錄警示規則時,不需任何權限即可建立身分識別。 建立規則之後,您必須將適當的角色指派給規則的身分識別,以便存取您要查詢的資料。 例如,您可能需要為它提供相關 Log Analytics 工作區的讀者角色,或是相關 ADX 叢集的讀者角色和資料庫檢視者角色。 如需在記錄警示中使用受控識別的詳細資訊,請參閱受控識別

  6. 記錄搜尋警示規則中使用的查詢是否有效?

    建立記錄警示規則時,系統會驗證查詢是否有正確的語法。 但有時候,記錄警示規則中提供的查詢可能會開始失敗。 一些常見的原因如下:

    • 規則是透過 API 建立,而使用者略過驗證。
    • 查詢會在多個資源上執行,且已刪除或移動一或多個資源。
    • 查詢失敗,因為:
      • 資料已停止流向查詢中的資料表超過 30 天。
      • 自訂記錄資料表尚未建立,因為資料流程尚未開始。
    • 查詢語言中的變更包含命令和函式的修訂格式,因此先前提供的查詢已不再有效。

    Azure 資源健康狀態 監視雲端資源的健康情況,包括記錄搜尋警示規則。 當記錄搜尋警示規則狀況良好時,規則便會執行且查詢執行順利。 您可以使用記錄搜尋警示規則的資源健康情況,以了解影響記錄搜尋警示規則的問題。

  7. 記錄搜尋警示規則是否已停用?

    如果記錄搜尋警示規則查詢無法評估持續一週,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 監視器中設定的記錄警示規則可能會意外觸發。 下列各節說明一些常見的原因。

  1. 警示是否因為延遲問題而觸發?

    Azure 監視器會處理來自全球數 TB 的客戶記錄,這可能會導致記錄擷取延遲。 提供內建功能來防止誤判警示,但仍可能會在非常延遲的資料 (超過 30 分鐘) 和具有延遲尖峰的資料上發生。

    記錄檔是半結構化資料,原本就比計量還要延遲。 如果您在引發的警示中遇到許多錯誤,請考慮使用計量警示。 您可以使用記錄的計量警示,將資料從記錄傳送至計量存放區。

    當您嘗試偵測記錄中的特定資料時,記錄搜尋警示運作效果最佳。 當您嘗試偵測記錄中缺少資料時,例如發出虛擬機器活動訊號的警示時,它們較不有效。

設定記錄搜尋警示規則時的錯誤訊息

如需特定錯誤訊息及其解決方式,請參閱下列各節。

因為您需要記錄的權限,因此無法驗證查詢

如果您在建立或編輯警示規則查詢時收到此錯誤訊息,請確定您有讀取目標資源記錄的權限。

  • 要在工作區內容存取模式中讀取記錄所需的權限:Microsoft.OperationalInsights/workspaces/query/read
  • 要在資源內容存取模式中讀取記錄所需的權限 (包括工作區型 Application Insights 資源):Microsoft.Insights/logs/tableName/read

若要深入了解權限,請參閱管理 Log Analytics 工作區的存取權

此查詢不支援一分鐘的頻率

使用一分鐘警示規則頻率有一些限制。 當您將警示規則頻率設定為一分鐘時,會執行內部操作來最佳化查詢。 如果查詢包含不支援的作業,這項操作可能會導致查詢失敗。

如需不支援的案例清單,請參閱此備註

無法解析名為 <> 的純量運算式

建立或編輯警示規則查詢時,如果發生下列情況,可能傳回此錯誤訊息:

  • 資料表結構描述中不存在您所參考的資料行。
  • 您參考的資料行未在查詢的前一個專案子句中使用。

若要解決此情況,您可以將資料行新增至上一個專案的子句,或使用 columnifexists 運算子。

唯讀 OMS 警示不支援 ScheduledQueryRules API

嘗試使用 Azure 入口網站更新或刪除使用舊版 API 版本建立的規則時,會傳回此錯誤訊息。

  1. 使用 Log Analytics REST API,透過程式設計方式編輯或刪除規則。
  2. 建議:將警示規則升級為使用排程查詢規則 API (舊版 API 即將淘汰)。

已達到警示規則服務限制

如需每個訂用帳戶的記錄搜尋警示規則數目和資源上限的詳細資訊,請參閱 Azure 監視器服務限制。 請參閱檢查使用中的記錄警示規則數目,以查看目前使用中的計量警示規則數目。 如果您已達到配額限制,下列步驟可能有助於解決此問題。

  1. 刪除或停用不再使用的記錄搜尋警示規則。

  2. 使用依維度分割以減少規則數目。 當您使用依維度分割時,一個規則可以監視許多資源。

  3. 如果您需要增加配額限制,請接續開啟支援要求,並提供下列資訊:

    • 必須增加配額限制的訂用帳戶識別碼和資源識別碼
    • 配額增加的原因
    • 要求的配額限制

ARG 和 ADX 查詢中的未完成時間篩選

在記錄搜尋警示中使用 Azure 數據總管 (ADX) 或 Azure Resource Graph (ARG) 查詢時,您可能會遇到「匯總粒度」設定未將時間篩選套用至查詢的問題。 這可能會導致非預期的結果和潛在的效能問題,因為查詢會傳回所有 30 天,而不是預期的時間範圍。

若要解決此問題,您必須在 ARG 和 ADX 查詢中明確套用時間篩選。 以下是確保的步驟:

  1. 適當的時間篩選:識別時間範圍:決定您想要查詢的特定時間範圍。 例如,如果您想要查詢過去 24 小時內的數據,則必須在查詢中指定這個時間範圍。

  2. 修改查詢:將時間篩選新增至 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)
  1. 測試查詢:執行修改過的查詢,以確保它會傳回指定時間範圍內的預期結果。
  2. 更新警示:更新記錄搜尋警示,以搭配明確時間篩選條件使用修改的查詢。 這可確保您的警示是以正確的數據為基礎,且不包含不必要的歷程記錄數據。 藉由在 ARG 和 ADX 查詢中套用明確的時間篩選,您可以避免擷取過多數據的問題,並確保記錄搜尋警示正確且有效率。

下一步