你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
可以在 Azure Monitor 工作区中存储的 Prometheus 指标或自定义(OTel)指标上创建指标警报规则,并使用 PromQL 基于查询的指标警报条件。
本文概述了 Azure Monitor 中基于查询的指标警报,重点介绍如何使用 PromQL 在 Prometheus 或 Azure Monitor 工作区中存储的自定义(OTel)指标上创建警报规则。
什么是 PromQL?
PromQL 是一种基于开源的指标查询语言,其中包含:
- 用于数据选择、聚合和转换的一组指标函数和运算符。
- 原生多维操作、评估和报警,包括维度筛选、重新标记和聚合。
- 复合条件,包括条件嵌套。
- 联接和比较多个指标
- 重用来自社区或现有基于 Prometheus 的监控系统的 PromQL 警报表达式。
Capabilities
-
以资源为中心的规则范围和以工作区为中心的规则范围。
- 以资源为中心的规则将查询应用于来自特定 Azure 资源(例如 Azure Kubernetes 服务(AKS)或 VM)的指标。由于具有 RBAC 细粒度控制,这些规则仅需访问受监视的资源。
- 以工作区为中心的规则允许授权用户查询任何资源向工作区发出的指标,包括跨资源查询。
- 基于托管标识的授权。 可以使用 Azure 托管标识授权访问工作区。 托管标识在分离用户和规则访问权限的同时,提供安全的、由 Azure 托管的资源访问,从而增强 RBAC 的粒度精细化。 指标警报支持用户分配的身份和系统分配的身份。
-
触发警报自定义。 可以自定义基于查询的指标警报,以包含更多特定于场景的上下文信息。
- 自定义电子邮件主题:使用特定于方案的信息配置警报通知电子邮件主题。 使用 通用警报架构 标识有效负载中的字段。
- 自定义属性:向警报有效负载添加特定于方案的文本、链接或元数据。
注释
自定义电子邮件主题和自定义属性都支持从警报信息中动态地插入属性。
基于查询的指标警报(与 Prometheus 规则组相比)
基于查询的指标警报是 Prometheus 规则组中警报的替代方法。
使用基于查询的指标警报的优点:
- 警报规则配置为并作为单个 Azure 资源进行管理。 无需在单个规则的基础上创建和管理规则组。
- 支持以资源为中心的查询和 RBAC - 用户不需要对工作区的访问权限。
- 支持使用 Azure 托管标识进行身份验证和授权。
- 支持电子邮件主题自定义。
使用基于查询的指标警报规则与 Prometheus 规则组的差异
-
范围限制。 在 Prometheus 规则组中,可以使用属性将规则的范围限制为单个 AKS 或 ARC 群集
clusterName。 使用基于查询的指标警报规则,通过将规则scope设置为特定资源,将范围限制为单个群集(或任何其他资源)。 -
规则条件。 指标警报规则属性完全等效于 Prometheus 规则
query组expression属性,并生成相同的结果。 该for属性在两个服务中的工作方式相同。 -
处理指标标签。 基于查询的指标警报完全支持根据 PromQL 标准处理和操作 Prometheus 和 OTel 指标上的标签。 但是,触发警报时,剩余的指标标签及其值会以
dimensions的形式出现在有效负载中,这与其他 Azure 警报和 Azure Monitor 体验中使用的术语一致。 - 自定义元数据和信息。 可以定义自定义标签和注释,以将动态元数据、信息文本、Runbook 链接等添加到 Prometheus 规则组警报规则中的警报有效负载。 在基于查询的指标警报中,通过 自定义属性提供类似的功能。
基于查询的警报的托管标识
必须将 Azure 托管标识用于基于查询的指标预警规则。
托管标识必须在作用域资源或 AMW 上拥有“监视读取者”角色(或具有等效权限的自定义角色)。
用户分配的 MI 类型和系统分配的 MI 类型均受支持。
架构和属性
下表提供了基于查询的指标警报规则的架构和属性的说明。
| Name | 必选 | 类型 | Description | 注释 |
|---|---|---|---|---|
| 姓名 | True | 字符串 | 警报规则名称 | |
| 位置 | True | 字符串 | 资源位置 | 预览版支持的区域 |
| 身份.类型 | True | 字符串 | 托管标识类型 | UserAssigned 或 SystemAssigned |
| identity.userAssignedIdentities | True | 字符串 | 用户分配的托管标识资源 ID | 如果类型为 UserAssigned,则需要 |
| properties.enabled | 假 | 布尔 | 规则启用/禁用 | 默认值 = true |
| properties.description | 假 | 字符串 | 警报规则说明 | |
| properties.severity | 假 | 整数 | 警报严重性 | 0-4,默认值为 3(信息性) |
| properties.targetResourceType | 假 | 字符串 | 警报目标资源类型 | |
| properties.scopes | True | 字符串[] | Azure 资源 ID | AMW 资源 ID(用于工作区中心规则)或其他 Azure 资源 ID、资源组 ID、订阅 ID(用于资源中心规则)。 目前仅支持一个范围项。 |
| properties.evaluationFrequency | True | 字符串 | 规则评估间隔 | 等效于 Prometheus 间隔。 |
| properties.criteria.allOf[].name | True | 字符串 | 条件名称 | |
| properties.criteria.allOf[].query | True | 字符串 | 警报规则查询 | PromQL 查询,等效于 Prometheus 警报规则表达式 |
| properties.criteria.allOf[].criterionType | 假 | 字符串 | 条件类型 | 默认值为 StaticThresholdCriterion(预览中不支持动态阈值) |
| properties.criteria.failingPeriods.for | 假 | 字符串 | 触发警报之前条件保持为 true 的持续时间 | 等效于 Prometheus 警报规则“for”。 值 - “PT1M”、“PT5M”等。默认值为 0(立即触发) |
| properties.resolveConfigurations.autoResolved | 假 | 布尔 | 警报自动解析已启用 | 默认值 = true |
| properties.resolveConfigurations.timeToResolve | 假 | 字符串 | 警报自动解决超时 | 默认值 = “PT5M” |
| properties.actions[].actionGroupId | false | 字符串 | 动作组 ID 列表 | 在触发或解决警报时执行的操作组数组 |
| properties.actionProperties.EmailSubject | false | 字符串 | 自定义电子邮件主题的模板 | |
| properties.customProperties | false | 字符串 | 警报自定义属性的键/值对 |
支持的区域
- 美国东部
- 西欧
- 美国东部 2
- 北欧
- 美国中部
- 美国西部 2
- 英国南部
- 东南亚
- 印度中部
- 美国西部
- 德国中西部
- 日本东部
- 加拿大中部
- 美国中南部
- 东亚
- Australia East
- 瑞典中部
- 瑞士北部
- 法国中部
- 阿拉伯联合酋长国北部
- 挪威东部
- 韩国中部
- Brazil South
- 美国西部 3
- 澳大利亚东南部
- 南非北部
后续步骤
- 使用托管 Prometheus 创建 AKS 群集 - Azure Monitor 工作区创建也是此工作流的一部分。
- 创建基于查询的警报