共用方式為

适用于 Prometheus 的 Azure Monitor 托管服务规则组

Prometheus 中的规则在收集数据的过程中对数据进行处理,既可以预先计算并存储在时间序列数据库中的值,也可以针对收集的指标中预定义的条件发送警报。 适用于 Prometheus 的 Azure Monitor 托管服务提供了每种规则类型的预定义集,并允许使用 Azure 门户创建和管理自定义规则。

规则组类型

Prometheus 规则组是一个包含警报规则和记录规则的集合,这些规则会被共同评估。 每个规则都必须是单个规则组的成员。 规则组定义组中所有规则的范围及其评估频率。

有两种类型的 Prometheus 规则。

类型 Description
Alert 通过警报规则 ,可以根据 Prometheus 查询语言(PromQL)查询的结果创建 Azure Monitor 警报。 Azure 托管 Prometheus 警报规则触发的警报会以类似于其他 Azure Monitor 警报的方式处理和触发通知。
Recording 记录规则可预先计算经常需要的或计算量大的表达式,并将其结果存储为一组新时序。 通过记录规则创建的时序将作为新的 Prometheus 指标引入回 Azure Monitor 工作区。

Azure 托管 Prometheus 规则组遵循 开源 Prometheus 规则组的结构和术语。 Azure 支持规则名称、表达式、标签和批注。

不过,Azure 托管 Prometheus 规则组和开源 Prometheus 规则组之间存在一些差异。 Azure 托管 Prometheus 规则组作为 Azure 资源进行管理,并包括资源管理所需的信息,例如 Azure 规则组应驻留的订阅和资源组。 警报规则包括专用属性,例如警报严重性、作组关联和警报自动解决配置,允许像其他 Azure Monitor 警报一样处理警报。

规则组的范围

在 Azure 托管的 Prometheus 中,规则组的范围定义了该组中的规则所适用的资源。 单个规则不能直接应用于 Kubernetes 群集。 下表描述了不同的规则组范围。

Scope Description
工作区中的所有群集 组中启用的所有规则将应用于当前连接到 Azure Monitor 工作区的所有群集。
特定群集 - 群集名称 组中所有启用的规则将仅应用于所选群集。
特定群集 - 查询中的群集名称 组中启用的所有规则将配置在名称中包含指定文本的那些群集上。

查看 Prometheus 规则组

可以通过多种方式在 Azure 门户中查看 Prometheus 规则组及其规则。

Azure Monitor 工作区中的规则 从 Azure 门户中的 Azure Monitor 工作区中选择 规则组 ,以查看该工作区中的所有规则组。 可以展开任何规则组以查看该组中的规则列表。 选择任意组或规则以查看其详细信息。

Azure Monitor 工作区中的 Prometheus 规则组的屏幕截图。

所有规则 在门户中,搜索并选择 Prometheus 规则组 以查看你有权访问的订阅中的所有规则组。

此视图标识规则组所在的工作区、规则组是否已启用,以及当规则组限制为特定群集范围时所在的群集。 使用屏幕顶部的筛选器按各种属性缩小规则组列表的范围。 可以通过选择多个规则组并单击“ 删除”,从此视图中删除多个规则组。 例如,这可用于清理删除群集后不再需要的规则组。

所有 Prometheus 规则组的屏幕截图。

小窍门

还可以从 Kubernetes 群集的 “警报 ”页访问此相同视图。 这会将初始筛选器设置为限定为该群集的规则组。

创建 Prometheus 规则组和规则

打开上述描述的所有规则视图,然后选择+ 创建

显示创建新 Prometheus 规则组的选项的屏幕截图。

Scope

设置 Description
Azure Monitor 工作区 规则组将从中查询数据的 Azure Monitor 工作区。 无法更改现有规则组的值。
位置 所选 Azure Monitor 工作区的位置。
集群 指定规则组应用于工作区或特定群集中的所有群集的位置。 选择特定群集或输入与群集名称匹配的文本。

详细信息

设置 Description
Subscription 在该订阅中将创建规则组资源。 无法更改现有规则组的值。
资源组 将在其中创建规则组资源的资源组。 无法更改现有规则组的值。
Name 规则组资源的名称。 此名称在所选资源组中必须是唯一的。 无法更改现有规则组的值。
Description 规则组的说明。
评估每个 组内规则被评估的频率。 默认值为 1 分钟。
已启用 启用或禁用规则组。 仍会创建禁用的规则组,但仅当启用组时,才会运行规则。
标签 规则的可选标签键/值对。 这些标签将添加到规则创建的指标中。

规则 选择 “添加录制规则 ”或 “添加警报规则 ”,将规则添加到组。 每种类型的规则都有不同的设置,如下所示。

录制规则

设置 Description
Name 录制规则的名称。 此名称用于由规则创建的指标。
已启用 说明规则是启用还是禁用。 将创建禁用的规则,但在启用之前不会评估这些规则。
Expression 定义规则的 PromQL 表达式。 选择 “运行查询 ”以查看在预览图表中可视化的表达式查询的结果。 修改预览时间范围以放大或缩小表达式结果历史记录。

警报规则

设置 Description
Name 录制规则的名称。 此名称是规则触发的警报的名称。
Severity 此规则触发的警报的严重性值。
Expression 定义规则的 PromQL 表达式。 选择 “运行查询 ”以查看在预览图表中可视化的表达式查询的结果。 修改预览时间范围以放大或缩小表达式结果历史记录。
等待 警报表达式首次变为 true 到警报触发之间的时间段。
标签 规则的可选标签键/值对。 这些标签会被添加到由规则触发的警报中。
Annotations 规则的可选批注键/值对。 这些注释将添加到规则触发的警报中。
行动小组 定义响应已触发警报的动作组
已启用 指示规则是启用还是禁用。 将创建禁用的规则,但在启用之前不会评估这些规则。
自动解决警报 如果规则条件在 自动解析时间 期间不再为真,则自动解决警报。

配置规则组范围

“作用域 ”选项卡上:

  1. 从订阅中可用的工作区列表中选择 Azure Monitor 工作区。 本组规则会从工作区查询数据。

  2. 若要将规则组限制为群集范围,请选择 “特定群集 ”选项:

    • 从已连接到所选 Azure Monitor 工作区的群集列表中选择群集。
    • 系统会为你输入默认的“群集名称”值。 仅当使用 cluster_alias更改群集标签值时,才更改此值。
  3. 选择 “下一步 ”以配置规则组详细信息。

    显示 Prometheus 规则组范围的配置的屏幕截图。

将 Prometheus 规则文件转换为托管的 Prometheus 规则组

如果有 YAML 格式的 Prometheus 规则配置文件 ,则可以使用 az-prom-rules-converter 实用工具将其转换为 Azure 托管 Prometheus 规则组的 ARM 模板。 规则文件可以包含一个或多个规则组的定义。

除了规则文件,该实用工具还需要创建 Azure Prometheus 规则组所需的其他属性,包括订阅、资源组、位置、目标 Azure Monitor 工作区、目标群集 ID 和名称和作组。 该实用工具创建一个模板文件,可以使用任何标准方法来部署 ARM 模板。

将规则限制为特定群集

可以选择性地将规则组中的规则限制为通过向规则组添加群集范围或使用规则组 clusterName 属性来查询源自单个特定群集的数据。 如果 Azure Monitor 工作区包含来自多个群集的大量数据,请将规则限制为单个群集。 在这种情况下,担心对所有数据应用同一组规则可能会导致性能或限流问题。 通过使用群集范围,可以创建多个规则组,每个组使用同一规则进行配置,并将每个组限制为涵盖不同群集。

若要 使用 ARM 模板将规则组限制为群集范围,请将群集的 Azure 资源 ID 值添加到规则组 scopes[] 列表中。 范围列表仍必须包含 Azure Monitor 工作区资源 ID。 支持将以下群集资源类型作为群集范围:

  • Azure Kubernetes 服务群集 (Microsoft.ContainerService/managedClusters
  • 已启用 Azure Arc 的 Kubernetes 群集 (Microsoft.kubernetes/connectedClusters
  • Azure 连接设备(Microsoft.ResourceConnector/appliances

除了群集 ID,还可以配置 clusterName 规则组的属性。 该 clusterName 属性必须与从特定群集中擦除时添加到指标的 cluster 标签匹配。 默认情况下,此标签设置为群集 ID 的最后一部分(即资源名称)。 如果使用群集擦除 ConfigMap 中的 cluster_alias 设置更改了此标签,则必须在规则组 clusterName 属性中包含更新的值。 如果擦除使用默认 cluster 标签值,则 clusterName 属性是可选的。

以下示例展示了如何将规则组配置为限制查询特定群集:

{
    "name": "sampleRuleGroup",
    "type": "Microsoft.AlertsManagement/prometheusRuleGroups",
    "apiVersion": "2023-03-01",
    "location": "chinanorth2",
    "properties": {
         "description": "Sample Prometheus Rule Group limited to a specific cluster",
         "scopes": [
             "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.monitor/accounts/<azure-monitor-workspace-name>",
             "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.containerservice/managedclusters/<myClusterName>"
         ],
         "clusterName": "<myCLusterName>",
         "rules": [
             {
                ...
             }
         ]
    }
}        

如果未为规则组指定群集 ID 范围和 clusterName 属性,则组中的规则将从所有群集中的所有群集查询数据。

配置规则组详细信息

显示 Prometheus 规则组录制规则的配置的屏幕截图。

显示 Prometheus 规则组警报规则的配置的屏幕截图。

Note

对于警报规则,表达式查询通常仅返回满足表达式条件的时序。 如果未显示预览图表,并且收到消息“查询未返回结果”,则可能是在预览时间范围内未满足条件。

完成创建规则组

  1. 在“标记”选项卡上,设置要添加到规则组资源的任何所需的 Azure 资源标记。

    显示创建新警报规则时“标记”选项卡的屏幕截图。

  2. “审阅 + 创建”选项卡上,会对规则组进行验证,并告知你存在的任何问题。 在此选项卡上,还可以选择 “查看自动化模板 ”选项,并下载要创建的组的模板。

  3. 验证通过并查看设置后,选择“ 创建”。

    显示创建新警报规则时“查看 + 创建”选项卡的屏幕截图。

  4. 可以跟进规则组部署,以确保它成功完成或收到任何错误通知。

禁用和启用规则组

若要启用或禁用规则,请在 Azure 门户中选择规则组。 可选择“启用”或“禁用”来更改其状态。