当用户拥有多个跨地域的Prometheus实例,并且需要为其中多个Prometheus实例创建相同的Prometheus告警规则时,可以使用Prometheus告警模板功能。本文介绍如何创建并管理Prometheus告警规则模板。
背景信息
对于多个跨地域的Prometheus实例,当需要为这些Prometheus实例创建告警规则时,如果每个Prometheus实例都单独创建,工作量较大并且难以同步管理。为了解决这个问题,可观测监控 Prometheus 版提供了告警规则模板功能,可以帮助用户快速为多个Prometheus实例创建告警规则,并且可以统一管理,降低用户管理多个Prometheus实例告警规则的成本。
Prometheus告警规则模板的主要功能
- 创建Prometheus告警规则模板
- 编辑Prometheus告警规则模板
- 应用模板
- Prometheus实例选择模式
- 标签控制器模式
- 删除Prometheus告警规则模板
- 查看通过模板创建的告警规则
- 批量启动告警规则
- 批量停止告警规则
- 批量删除告警规则
- 批量应用模板
- 批量删除模板
创建Prometheus告警规则模板
- 登录ARMS控制台。
- 在左侧导航栏,选择 。
- 在页面右上角单击创建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 }}% 高级设置 告警检查周期 设置告警检查周期,系统默认是1分钟一次。由于有些告警不需要1分钟检查一次。,因此您可以自行设置告警检查周期以降低告警检查的频率。 1 标签 设置告警标签,设置的标签可用作通知策略匹配规则的选项。 无 注释 设置告警的注释。 无 表 2. 自定义PromQL检测类型 参数 说明 示例 告警规则模板名称 告警规则模板的名称。 Pod的CPU使用率大于8% 告警规则模板描述 非必填。对模板进行描述,可以用于记录模板的含义、适用场景、备注等。 无 检测类型 设置为自定义PromQL。 自定义PromQL 告警分组 选择告警分组。 Prometheus 参考告警指标 选择需要参考的告警指标。 无 自定义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 }}% 高级设置 告警检查周期 设置告警检查周期,系统默认是1分钟一次。由于有些告警不需要1分钟检查一次。,因此您可以自行设置告警检查周期以降低告警检查的频率。 1 标签 设置告警标签,设置的标签可用作通知策略匹配规则的选项。 无 注释 设置告警的注释。 无
应用模板
创建Prometheus告警模板后,您可以通过应用模板来为Prometheus实例创建告警规则,或者根据现有模板更新Prometheus实例的告警规则。
Prometheus告警模板目前提供两种模板应用模式。
Prometheus实例选择模式
- 在控制台的Prometheus告警规则模板页面,单击需要应用的告警规则模板右侧的应用模板。
- 在应用模板页面的Prometheus实例选择模式页签,选择Prometheus实例,然后单击确认。说明 您可以通过Prometheus实例名称、地域和Prometheus实例类型筛选需要使用该告警模板的Prometheus实例。
- 在弹出的提示框中选择是否更新已创建的告警规则,然后单击确认。ARMS将会使用当前告警规则模板在选中的Prometheus实例中创建告警规则。
- 未选中更新已经创建的告警规则:如果选中的Prometheus实例已经存在通过当前告警模板创建的告警规则,那么在创建告警规则时将会提示已经使用此模板创建过告警规则,不进行更新,此时告警规则将不会更新。
- 选中更新已经创建的告警规则:如果选中的Prometheus实例已经存在通过当前告警模板创建的告警规则,那么此时会根据最新的告警模板内容更新Prometheus告警规则。重要 如果对应的告警规则单独修改过,并且保留了告警规则与模板的联系,那么单独修改的内容会将被告警规则模板覆盖而丢失。
标签控制器模式
利用容器服务为集群添加的标签,在标签控制器模式页签通过标签匹配的方式筛选符合条件的集群,每个模板可以单独配置,配置后就会直接为符合标签匹配条件的Prometheus实例创建告警规则。
Prometheus告警规则模板会根据标签动态更新告警规则:
- 当模板发生变化时,满足标签匹配条件的集群对应的告警规则会根据模板自动更新。
- 修改通过标签控制器模式创建的告警规则时,如果保留了告警规则和模板之间的映射关系,告警规则会被自动覆盖。
- 当容器服务集群的标签发生变化时,与集群对应的Prometheus实例标签也会变化,Prometheus告警模板也会根据标签匹配条件动态删除或创建告警规则。
- 在容器服务管理控制台为集群添加标签。
- 在控制台的Prometheus告警规则模板页面,单击需要应用的告警规则模板右侧的应用模板。
- 在应用模板页面,单击标签控制器模式页签,设置匹配的标签和匹配表达式。
删除模板
当Prometheus告警模板不需要使用时,可以删除Prometheus告警模板。删除模板时,您可以根据需要,选择是否保留由此告警模板创建的告警规则。
- 在控制台的Prometheus告警规则模板页面,单击目标告警规则模板右侧的删除。
- 在弹出的提示对话框中选择是否同时删除从模板创建的告警规则,然后单击确认。
- 选中同时删除从模板创建的告警规则:将会删除与模板相关联的Prometheus告警规则。如果通过模板创建的Prometheus告警规则被手动编辑过,并且保存时选择了不保留模板与规则的映射关系,则对应规则不会被删除。
- 为选中同时删除从模板创建的告警规则:通过模板创建的Prometheus告警规则将会保留。
查看通过模板创建的告警规则
您可以查看并批量管理通过模板创建的告警规则。
- 在控制台的Prometheus告警规则模板页面,单击目标告警规则模板右侧的查看目标创建规则。
- 在从模板创建的告警规则页面批量管理告警规则。
- 批量启动告警:选中需要启动的告警规则,然后单击批量启动告警。
- 批量停止告警:选中需要停止的告警规则,然后单击批量停止告警。
- 批量删除告警:选中需要删除的告警规则,然后单击批量删除告警。
注意事项
编辑通过Prometheus告警规则模板创建的Prometheus告警规则后,在保存时需要选择是否保留模板与规则的映射关系。
- 保留此告警规则与告警规则模板的映射关系:保留映射关系后,如果在应用对应告警规则模板时选择了当前规则对应的Prometheus实例,并且选择了强制更新时,本次编辑内容可能会丢失。
- 解除此告警规则与告警规则模板的映射关系:解除映射关系后,此告警规则会被视为独立规则。建议修改告警规则名称,否则使用对应告警规则模板再次应用到该Prometheus实例时,会因为告警规则名称重复而导致创建失败。