Prometheus告警规则模板

如需统一管理分布在不同地域的多个Prometheus实例的告警规则,那么您可以使用Prometheus告警规则模板功能来实现。本文介绍如何创建和管理Prometheus告警规则模板,确保规则的一致性和效率。

背景信息

对于多个跨地域的Prometheus实例,当需要为这些Prometheus实例创建告警规则时,如果每个Prometheus实例都单独创建,工作量较大并且难以同步管理。为了解决这个问题,可观测监控 Prometheus 版提供了告警规则模板功能,可以帮助用户快速为多个Prometheus实例创建告警规则,并且可以统一管理,降低用户管理多个Prometheus实例告警规则的成本。

创建Prometheus告警规则模板

  1. 登录Prometheus控制台
  2. 在左侧导航栏中单击告警规则模板

  3. 在页面右上角单击创建Prometheus告警规则模板

  4. 创建Prometheus告警规则页面设置以下参数。

    您可以选择通过静态阈值或自定义PromQL创建Prometheus告警规则模板。

    • 静态阈值检查类型提供了系统预设的告警指标,通过选择已有的告警指标,您可以通过语义化的方式快速创建对应指标项的告警规则。

    • 如果需要对静态阈值中系统预设指标之外的指标进行监控,您可以使用自定义PromQL检测类型来创建告警规则。

    image

    表 1. 静态阈值检查类型

    参数

    说明

    示例

    告警规则模板名称

    告警规则模板的名称。

    生产集群-容器CPU使用率告警

    告警规则模板描述

    非必填。对模板进行描述,可以用于记录模板的含义、适用场景、备注等。

    检测类型

    选择静态阈值

    静态阈值

    告警分组

    选择告警分组。

    Kubernetes负载

    告警指标

    选择想要配置告警的指标,每个告警分组对应不同的指标。

    容器CPU使用率

    告警条件

    基于告警指标预置内容设置告警事件产生条件。

    当容器CPU使用率大于80%时,满足告警条件。

    筛选条件

    根据告警指标,设置当前配置的告警规则所适用的范围,即所有符合筛选条件的资源满足此条告警规则时,均会产生告警事件。

    可选筛选条件包括:

    • 遍历:告警规则适用于当前Prometheus实例下的所有资源。筛选条件默认为遍历。

    • 等于:选择该条件后,需继续输入具体资源名称。所创建的告警规则将仅适用于对应资源。不支持同时填写多个资源。

    • 不等于:选择该条件后,需继续输入具体资源名称。所创建的告警规则将适用于除该资源之外的其他资源。不支持同时填写多个资源。

    • 正则匹配:选择该条件后,按需输入正则表达式匹配相应的资源名称。所创建的告警规则将适用于符合该正则表达式的所有资源。

    • 正则不匹配:选择该条件后,按需输入正则表达式匹配相应的资源名称。所创建的告警规则将过滤符合该正则表达式的所有资源。

    实例IP:遍历

    持续时间

    • 当告警条件满足时,直接产生告警事件:任何一个数据点满足阈值,就会产生告警事件。

    • 当告警条件满足持续N分钟时,才产生告警事件:即只有当满足阈值的时间大于等于N分钟时,才产生告警事件。

    1

    告警等级

    自定义告警等级。默认告警等级为默认,告警严重程度从默认、P4、P3、P2、P1逐级上升。

    默认

    告警内容

    用户收到的告警信息。您可以使用Go template语法在告警内容中自定义告警参数变量。

    命名空间:{{$labels.namespace}} / Pod: {{$labels.pod_name}} / 容器:{{$labels.container}} CPU使用率{{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, 当前值{{ printf "%.2f" $value }}%

    高级设置

    标签

    设置告警标签,设置的标签可用作通知策略匹配规则的选项。

    注释

    设置告警的注释。

    表 2. 自定义PromQL检测类型

    参数

    说明

    示例

    告警规则模板名称

    Pod的CPU使用率大于80%

    告警规则模板描述

    非必填。对模板进行描述,可以用于记录模板的含义、适用场景、备注等。

    检测类型

    设置为自定义PromQL

    自定义PromQL

    自定义PromQL语句

    使用PromQL语句设置告警规则表达式。

    max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90

    持续时间

    • 当告警条件满足时,直接产生告警事件:任何一个数据点满足阈值,就会产生告警事件。

    • 当告警条件满足持续N分钟时,才产生告警事件:即只有当满足阈值的时间大于等于N分钟时,才产生告警事件。

    1

    告警等级

    自定义告警等级。默认告警等级为默认,告警严重程度从默认、P4、P3、P2、P1逐级上升。

    默认

    告警内容

    用户收到的告警信息。您可以使用Go template语法在告警内容中自定义告警参数变量。

    命名空间:{{$labels.namespace}}/Pod: {{$labels.pod_name}}/磁盘设备: {{$labels.device}} 使用率超过90%,当前值{{ printf "%.2f" $value }}%

    高级设置

    标签

    设置告警标签,设置的标签可用作通知策略匹配规则的选项。

    注释

    设置告警的注释。

应用模板

创建Prometheus告警模板后,您可以通过应用模板来为Prometheus实例创建告警规则,或者根据现有模板更新Prometheus实例的告警规则。

  1. 在控制台的Prometheus告警规则模板页面,单击需要应用的告警规则模板右侧的应用模板

  2. 应用模板页面的Prometheus实例选择模式页签,选择Prometheus实例,然后单击确定

    说明

    您可以通过Prometheus实例名称、地域和Prometheus实例类型筛选需要使用该告警模板的Prometheus实例。

  3. 在弹出的提示框中选择是否更新已创建的告警规则,然后单击确定

    ARMS将会使用当前告警规则模板在选中的Prometheus实例中创建告警规则。

    • 未选中更新已经创建的告警规则:如果选中的Prometheus实例已经存在通过当前告警模板创建的告警规则,那么在创建告警规则时将会提示已经使用此模板创建过告警规则,不进行更新,此时告警规则将不会被更新。

    • 选中更新已经创建的告警规则:如果选中的Prometheus实例已经存在通过当前告警模板创建的告警规则,那么此时会根据最新的告警模板内容更新Prometheus告警规则。

      重要

      如果对应的告警规则单独修改过,并且保留了告警规则与模板的联系,那么单独修改的内容会将被告警规则模板覆盖而丢失。

删除模板

Prometheus告警模板不需要使用时,可以删除Prometheus告警模板。删除模板时,您可以按需选择是否保留由此告警模板创建的告警规则。

  1. 在控制台的Prometheus告警规则模板页面,单击目标告警规则模板右侧的删除

  2. 在弹出的提示对话框中选择是否同时删除从模板创建的告警规则,然后单击确认

    • 选中同时删除从模板创建的告警规则:将会删除与模板相关联的Prometheus告警规则。如果通过模板创建的Prometheus告警规则被手动编辑过,并且保存时选择了不保留模板与规则的映射关系,则对应规则不会被删除。

    • 为选中同时删除从模板创建的告警规则:通过模板创建的Prometheus告警规则将会保留。

查看通过模板创建的告警规则

您可以查看并批量管理通过模板创建的告警规则。

  1. 在控制台的Prometheus告警规则模板页面,单击目标告警规则模板右侧的查看目标创建规则

  2. 从模板创建的告警规则页面批量管理告警规则。

    • 批量启动告警:选中需要启动的告警规则,然后单击批量启动告警

    • 批量停止告警:选中需要停止的告警规则,然后单击批量停止告警

    • 批量删除告警:选中需要删除的告警规则,然后单击批量删除告警

注意事项

编辑通过Prometheus告警规则模板创建的Prometheus告警规则后,在保存时需要选择是否保留模板与规则的映射关系。

  • 保留此告警规则与告警规则模板的映射关系:保留映射关系后,如果在应用对应告警规则模板时选择了当前规则对应的Prometheus实例,并且选择了强制更新时,本次编辑内容可能会丢失。

  • 解除此告警规则与告警规则模板的映射关系:解除映射关系后,此告警规则会被视为独立规则。建议修改告警规则名称,否则在使用对应的告警规则模板再次应用到该Prometheus实例时,会因为告警规则名称重复而导致创建失败。