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

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

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

注意

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

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

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

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

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

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

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

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

    4. 從左窗格的 [說明] 底下,選取 [資源健康狀態]。

      記錄搜尋警示規則中 [資源健康情況] 區段的螢幕快照。

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

  2. 檢查記錄擷取延遲。

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

    記錄是半結構化數據,原本就比計量更潛伏。 如果您在引發的警示中遇到超過 4 分鐘的延遲,您應該考慮使用 計量警示。 您可以使用記錄的計量警示,將數據從記錄傳送至計量存放區。

    為了減輕延遲,系統會多次重試警示評估。 數據到達之後,就會引發警示,在大部分情況下不會等於記錄記錄時間。

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

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

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

    隱藏警示

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

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

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

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

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

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

    • 規則是透過 API 建立,而使用者略過驗證。
    • 查詢 會在多個資源上執行,並刪除或移動了一或多個資源。
    • 查詢 失敗 ,因為:
    • 查詢語言中的變更包含命令和函式的修訂格式,因此稍早提供的查詢不再有效。

    Azure Advisor 會警告您此行為。 它會新增受影響記錄搜尋警示規則的相關建議。 使用的類別是具有中等影響的「高可用性」,以及「修復記錄警示規則以確保監視」的描述。

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

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

  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. 如果您需要增加配額限制,請繼續開啟支援要求,並提供下列資訊:

    • 需要增加配額限制的訂用帳戶標識碼和資源標識碼
    • 增加配額的原因
    • 增加配額的資源類型,例如 Log AnalyticsApplication Insights
    • 要求的配額限制

下一步