您可以在 Prometheus 計量或儲存在 Azure 監視器工作區中的自訂 (OTel) 計量上建立計量警示規則,並使用 PromQL 使用查詢型計量警示條件。
本文提供 Azure 監視器中查詢型計量警示的概觀,著重於如何使用 PromQL 在 Prometheus 或儲存在 Azure 監視器工作區中的自訂 (OTel) 計量上建立警示規則。
什麼是 PromQL?
PromQL 是一種基於開源的指標查詢語言,具有:
- 一組用於資料選取、彙總和轉換的度量函數和運算子。
- 原生多維度操作、評估和警示,包括維度篩選、彙總和重新標記。
- 複合條件 (包含條件巢狀項目)。
- 多個指標的聯結和比較
- 可重複使用來自社群或現有以 Prometheus 為基礎之監視系統的 PromQL 警示運算式。
能力
- 以資源為中心和以工作區為中心的規則範圍。
- 以資源為中心的規則會將查詢套用至來自特定 Azure 資源 (例如 Azure Kubernetes Services (AKS) 或 VM) 的計量,並具有 RBAC 細微性,只需要存取受監視的資源。
- 以工作區為中心的規則可讓授權使用者查詢任何資源發出至工作區的任何度量,包括跨資源查詢。
- 受控識別型授權。 您可以使用 Azure 受控識別授權存取工作區。 受控識別提供安全的 Azure 受控資源存取,藉由區隔使用者和規則存取權限來增強 RBAC 細微性。 計量警示支援使用者指派和系統指派的身分識別。
-
已觸發警示自訂。 您可以自訂查詢型指標警示,以包含更多內容相關、案例特定的資訊。
- 自訂電子郵件主旨: 使用案例特定資訊設定警示通知電子郵件主旨。 使用 通用警示結構描述 來識別承載中的欄位。
- 自訂屬性:將案例特定的文字、連結或中繼資料新增至警示承載。
備註
自訂電子郵件主旨和自訂屬性都支援從警示負載中動態插入屬性。
與 Prometheus 規則群組相比的查詢型指標警示
查詢型度量警示是 Prometheus 規則群組中警示的替代方案。
使用查詢型度量警示的優點:
- 警示規則會設定並管理為個別 Azure 資源。 您不需要在個別規則之上建立和管理規則群組。
- 支援以資源為中心的查詢和 RBAC - 您的使用者不需要工作區的存取權限。
- 支援使用 Azure 受控識別進行驗證和授權。
- 支援電子郵件主題自訂。
使用以查詢為基礎的指標警示規則與 Prometheus 規則群組的差異
-
範圍限制。 在 Prometheus 規則群組中,您可以使用屬性
clusterName,將規則的範圍限制為單一 AKS 或 ARC 叢集。 使用查詢型指標警示規則時,將規則scope設定為特定資源,即可將範圍限制為單一叢集 (或任何其他資源)。 -
規則條件。 度量警示規則
query內容完全等同於 Prometheus 規則群組expression內容,並會產生相同的結果。 該for屬性在這兩種服務中的工作方式相同。 -
處理度量標籤。 查詢型指標警示完全支援根據 PromQL 標準處理和操作 Prometheus 和 OTel 指標上的標籤。 不過,引發警示時,其餘計量標籤及其值會在承載中顯示為
dimensions,遵循其他 Azure 警示和 Azure 監視器體驗中使用的術語。 - 自訂中繼資料和資訊。 您可以定義自訂標籤和註解,將動態元資料、資訊文字、作業手冊連結等新增至 Prometheus 規則群組的警告規則中的這些警告有效載荷中。 在查詢型度量警示中,類似的功能是透過 自訂屬性提供。
查詢型警示的受管理的身分識別
您必須使用 Azure 受控識別來取得查詢型計量警示規則。
受控識別必須在指定範圍的資源或 AMW 上具有 監視讀取者 角色(或具有對等許可權的自訂角色)。
支援使用者指派和系統指派的 MI 類型。
架構和屬性
下表提供查詢型計量警示規則的結構描述和屬性說明。
| 名稱 | 為必填項目 | 類型 | Description | 註釋 |
|---|---|---|---|---|
| 名稱 | 對 | 字串 | 警示規則名稱 | |
| 位置 | 對 | 字串 | 資源位置 | 來自預覽版支援的區域 |
| identity.type | 對 | 字串 | 受控識別類型 | UserAssigned 或 SystemAssigned |
| identity.userAssignedIdentities | 對 | 字串 | 使用者指派的受控識別資源識別碼 | 如果類型為 UserAssignd,則需要 |
| properties.enabled | 否 | boolean | 規則啟用/停用 | 預設值 = true |
| properties.description | 否 | 字串 | 警示規則描述 | |
| properties.severity | 否 | 整數 | 警報嚴重性 | 0-4,預設值為 3 (參考資料) |
| properties.targetResourceType | 否 | 字串 | 警示目標資源類型 | |
| 屬性.scopes | 對 | 字串[] | Azure 資源識別碼 | AMW 資源識別碼 (適用於以工作區為中心的規則) 或其他 Azure 資源識別碼/資源群組識別碼/訂用帳戶識別碼 (適用於以資源為中心的規則)。 目前僅支援一個範圍項目。 |
| properties.evaluationFrequency | 對 | 字串 | 規則評估間隔 | 相當於普羅米修斯區間。 |
| properties.criteria.allOf[].name | 對 | 字串 | 條件名稱 | |
| properties.criteria.allOf[].查詢 | 對 | 字串 | 警示規則查詢 | PromQL 查詢,相當於 Prometheus 警報規則運算式 |
| properties.criteria.allOf[].criterionType | 否 | 字串 | 條件類型 | 預設值為 StaticThresholdCriterion (預覽版不支援動態臨界值) |
| properties.criteria.failingPeriods.for | 否 | 字串 | 觸發警示之前條件保持為 true 的持續時間 | 對等於 Prometheus 警示規則 ‘for’。 值 - 'PT1M'、'PT5M' 等。預設值為 0 (立即觸發) |
| 屬性.解析配置.自動解析 | 否 | boolean | 已啟用警示自動解決 | 預設值 = true |
| properties.resolveConfigurations.timeToResolve | 否 | 字串 | 警示自動解決逾時 | 預設值 = “PT5M” |
| 屬性.動作[].操作群組Id | 假的 | 字串 | 動作群組ID清單 | 引發或解決警示時執行的動作群組陣列 |
| properties.actionProperties.EmailSubject | 假的 | 字串 | 自訂電子郵件主旨範本 | |
| properties.customProperties | 假的 | 字串 | 適用於警示自訂屬性的索引鍵/值組 |
支援的區域
- 美國東部
- 西歐
- 美國東部 2
- 北歐
- Central US
- 美國西部 2
- 英國南部
- 東南亞
- 印度中部
- 美國西部
- 德國中西部
- 日本東部
- 加拿大中部
- 美國中南部
- 東亞
- Australia East
- 瑞典中部
- 瑞士北部
- 法國中部
- 阿拉伯聯合大公國北部
- 挪威東部
- 南韓中部
- 巴西南部
- 美國西部 3
- Australia Southeast
- 南非北部
後續步驟
- 使用受控 Prometheus 建立 AKS 叢集 - Azure 監視器工作區建立也是此工作流程的一部分。
- 建立查詢型警示