如需统一管理分布在不同地域的多个Prometheus实例的告警规则,那么您可以使用Prometheus告警规则模板功能来实现。本文介绍如何创建和管理Prometheus告警规则模板,确保规则的一致性和效率。
背景信息
对于多个跨地域的Prometheus实例,当需要为这些Prometheus实例创建告警规则时,如果每个Prometheus实例都单独创建,工作量较大并且难以同步管理。为了解决这个问题,可观测监控 Prometheus 版提供了告警规则模板功能,可以帮助用户快速为多个Prometheus实例创建告警规则,并且可以统一管理,降低用户管理多个Prometheus实例告警规则的成本。
创建Prometheus告警规则模板
- 登录Prometheus控制台。
在左侧导航栏中单击告警规则模板。
在页面右上角单击创建Prometheus告警规则模板。
在创建Prometheus告警规则页面设置以下参数。
您可以选择通过静态阈值或自定义PromQL创建Prometheus告警规则模板。
静态阈值检查类型提供了系统预设的告警指标,通过选择已有的告警指标,您可以通过语义化的方式快速创建对应指标项的告警规则。
如果需要对静态阈值中系统预设指标之外的指标进行监控,您可以使用自定义PromQL检测类型来创建告警规则。
表 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实例的告警规则。
在控制台的Prometheus告警规则模板页面,单击需要应用的告警规则模板右侧的应用模板。
在应用模板页面的Prometheus实例选择模式页签,选择Prometheus实例,然后单击确定。
说明您可以通过Prometheus实例名称、地域和Prometheus实例类型筛选需要使用该告警模板的Prometheus实例。
在弹出的提示框中选择是否更新已创建的告警规则,然后单击确定。
未选中更新已经创建的告警规则:如果选中的Prometheus实例已经存在通过当前告警模板创建的告警规则,那么在创建告警规则时将会提示已经使用此模板创建过告警规则,不进行更新,此时告警规则将不会被更新。
选中更新已经创建的告警规则:如果选中的Prometheus实例已经存在通过当前告警模板创建的告警规则,那么此时会根据最新的告警模板内容更新Prometheus告警规则。
重要如果对应的告警规则单独修改过,并且保留了告警规则与模板的联系,那么单独修改的内容会将被告警规则模板覆盖而丢失。
删除模板
当Prometheus告警模板不需要使用时,可以删除Prometheus告警模板。删除模板时,您可以按需选择是否保留由此告警模板创建的告警规则。
在控制台的Prometheus告警规则模板页面,单击目标告警规则模板右侧的删除。
在弹出的提示对话框中选择是否同时删除从模板创建的告警规则,然后单击确认。
选中同时删除从模板创建的告警规则:将会删除与模板相关联的Prometheus告警规则。如果通过模板创建的Prometheus告警规则被手动编辑过,并且保存时选择了不保留模板与规则的映射关系,则对应规则不会被删除。
为选中同时删除从模板创建的告警规则:通过模板创建的Prometheus告警规则将会保留。
查看通过模板创建的告警规则
您可以查看并批量管理通过模板创建的告警规则。
在控制台的Prometheus告警规则模板页面,单击目标告警规则模板右侧的查看目标创建规则。
在从模板创建的告警规则页面批量管理告警规则。
批量启动告警:选中需要启动的告警规则,然后单击批量启动告警。
批量停止告警:选中需要停止的告警规则,然后单击批量停止告警。
批量删除告警:选中需要删除的告警规则,然后单击批量删除告警。
注意事项
编辑通过Prometheus告警规则模板创建的Prometheus告警规则后,在保存时需要选择是否保留模板与规则的映射关系。
保留此告警规则与告警规则模板的映射关系:保留映射关系后,如果在应用对应告警规则模板时选择了当前规则对应的Prometheus实例,并且选择了强制更新时,本次编辑内容可能会丢失。
解除此告警规则与告警规则模板的映射关系:解除映射关系后,此告警规则会被视为独立规则。建议修改告警规则名称,否则在使用对应的告警规则模板再次应用到该Prometheus实例时,会因为告警规则名称重复而导致创建失败。