通过设定Prometheus告警规则,您可以为特定的监控指标设定条件触发告警。满足这些条件时,系统会生成相应的告警事件。为了接收这些告警通知,您需要配置告警通知策略,它可以将告警通过短信、电子邮件、电话、钉钉群机器人、企业微信机器人或Webhook等多种方式发送给您。
前提条件
已接入Prometheus,具体操作,请参见:
功能入口
-
在左侧导航栏,单击告警规则列表。
-
在Prometheus告警规则页面,单击创建Prometheus告警规则。
通过静态阈值创建Prometheus告警规则
静态阈值检查类型为您提供了一系列系统预定义的告警指标。通过选择这些现有指标,您可以通过直观的方式迅速建立相应指标的告警规则。
-
在创建Prometheus告警规则页面设置以下告警参数。
参数
说明
示例
告警名称
告警的名称。
生产集群-容器CPU使用率告警
检测类型
选择静态阈值。
静态阈值
Prometheus实例
选择需要创建告警的Prometheus实例。
生产集群
告警分组
选择告警分组。
不同Prometheus类型支持的告警分组不同,告警分组备选项会随着选择的Prometheus实例类型的不同产生变化。
Kubernetes负载
告警指标
选择想要配置告警的指标,每个告警分组对应不同的指标。
容器CPU使用率
告警条件
基于告警指标预置内容设置告警事件产生条件。
当容器CPU使用率
大于80%时,满足告警条件。筛选条件
根据告警指标,设置当前配置的告警规则适用的范围,即所有符合筛选条件的资源满足此条告警规则时,均会产生告警事件。
可选筛选条件包括:
-
遍历:告警规则适用于当前Prometheus实例下的所有资源。筛选条件默认为遍历。
-
等于:选择该条件后,需要继续输入具体资源名称。所创建的告警规则将仅适用于对应资源。不支持同时填写多个资源。
-
不等于:选择该条件后,需要继续输入具体资源名称。所创建的告警规则将适用于除该资源之外的其他资源。不支持同时填写多个资源。
-
正则匹配:选择该条件后,按需输入正则表达式匹配相应的资源名称。所创建的告警规则将适用于符合该正则表达式的所有资源。
-
正则不匹配:选择该条件后,按需输入正则表达式匹配相应的资源名称。所创建的告警规则将过滤符合该正则表达式的所有资源。
说明-
完成筛选条件设置后,会弹出数据预览区域。
-
请将筛选条件字符限制在300个字符以内。
遍历
数据预览
数据预览区域展示告警条件对应的PromQL语句,并以时序曲线的形式展示当前告警规则配置的监控指标的值。
默认仅展示一个资源的实时值,您可以在该区域的筛选框中选择目标资源以及时间区间来查看不同时间区间和不同资源的值。
说明-
告警阈值将会以一条红色直线的形式显示在时序曲线中,满足告警阈值的时序曲线显示为深红色,不满足告警阈值的时序曲线显示为蓝色。
-
将鼠标悬浮于时序曲线上,可以查看对应时间点的资源详情。
-
在时序曲线上选中一段时间,可以查看对应时间段的时序曲线。
无
持续时间
-
当告警条件满足时,直接产生告警事件:任何一个数据点满足阈值,就会产生告警事件。
-
当告警条件满足持续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 }}%
告警通知
-
极简模式:可以设置通知对象、通知时段和重复策略。
-
普通模式:
-
不指定通知策略:若选择此选项,当完成创建告警规则后,您可以在通知策略页面新建通知策略并指定匹配规则和匹配条件(如告警规则名称等)来匹配该告警规则。当该告警规则被触发产生告警事件后,告警信息会被发送给通知策略中指定的联系人或联系人组。更多信息,请参见通知策略。
-
指定某个通知策略:若选择此项,ARMS会自动在对应的通知策略添加一条匹配规则,匹配规则内容为告警规则ID(以告警规则名称的方式呈现),以确保当前告警规则产生的告警事件一定可以被选择的通知策略匹配到。
重要快速指定通知策略只能保证当前告警规则产生的告警事件一定能够被所选的通知策略匹配到并且产生对应的告警。但是,当前告警规则产生的事件同时也可能被其它设置了模糊匹配的通知策略匹配到并且产生告警。告警规则产生的告警事件和通知策略之间是多对多的匹配关系。
-
不指定通知规则
高级设置
告警检查周期
指告警规则每隔N分钟进行一次检查,判断数据是否满足告警条件。默认1分钟,最少设置1分钟。即使界面填写小于1分钟的值(如15秒),系统仍按1分钟执行检测,此为产品底层机制限制,非异常行为。
1
数据完整后再检查
-
是
-
否
是
标签
设置告警标签,设置的标签可用作通知策略匹配规则的选项。
无
注释
设置告警的注释。
无
-
-
设置完成后单击保存。在Prometheus告警规则列表页面,您可以查看当前告警规则的状态。
如果该告警规则的状态为自动中断,请您根据提示的中断原因,对该告警规则进行重新编辑,并单击启动,然后在弹出的对话框中单击确认。如果您遇到无法解决的规则中断问题,请联系ARMS告警服务钉钉号(d9j_rg9e4062f)协助解决。
可能导致告警规则状态自动中断的原因有以下几种:
-
规则查询结果的数量超过1500。
-
告警管理中未配置任何通知对象。
-
Prometheus实例处于已卸载或不可用状态。
-
通过自定义PromQL创建Prometheus告警规则
如果需要对静态阈值中系统预设指标之外的指标进行监控,您可以使用自定义PromQL检测类型来创建告警规则。
-
在创建Prometheus告警规则页面设置以下告警参数。
参数
说明
示例
告警名称
告警的名称。
Pod的CPU使用率大于8%
检测类型
设置为自定义PromQL。
自定义PromQL
Prometheus实例
选择需要创建告警的Prometheus实例。
无
参考告警分组
选择告警分组。
不同Prometheus类型支持的告警分组不同,告警分组备选项会随着选择的Prometheus实例类型的不同产生变化。
Kubernetes负载
参考告警指标
可选。参考指标中包括了常见指标的自定义PromQL配置方法,您可以选择已有的类似指标来进行填充,然后参考对应指标的配置方式进行修改以完成告警配置。
参考指标参数会根据选择的Prometheus实例类型自动过滤支持的告警指标。
Pod磁盘使用率告警
自定义PromQL语句
使用PromQL语句设置告警规则表达式。
命名空间:{{$labels.namespace}}/Pod: {{$labels.pod_name}}/磁盘设备:{{$labels.device}} 使用率超过90%,当前值{{ printf "%.2f" $value }}%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
数据预览
数据预览区域展示告警条件对应的PromQL语句,并以时序曲线的形式展示当前告警规则配置的监控指标的值。
默认仅展示一个资源的实时值,您可以在该区域的筛选框中选择目标资源以及时间区间来查看不同时间区间和不同资源的值。
说明-
将鼠标悬浮于时序曲线上,可以查看对应时间点的资源详情。
-
在时序曲线上选中一段时间,可以查看对应时间段的时序曲线。
无
持续时间
-
当告警条件满足时,直接产生告警事件:任何一个数据点满足阈值,就会产生告警事件。
-
当告警条件满足持续N分钟时,才产生告警事件:即只有当满足阈值的时间大于等于N分钟时,才产生告警事件。
持续时间不支持秒级配置,此为产品底层机制限制,非异常行为。
1
告警等级
自定义告警等级。默认告警等级为默认,告警严重程度从默认、P4、P3、P2、P1逐级上升。
默认
告警内容
用户收到的告警信息。您可以使用 Go template 语法在告警内容中自定义告警参数变量。
以下为 Pod 重启告警模板写法示例,帮助您快速配置可读性强的告警通知内容:
命名空间: {{$labels.namespace}}/Pod: {{$labels.pod_name}} {{$labels.metrics_params_time}}分钟内重启超过{{ $labels.metrics_params_value}}次,当前重启 {{ $value }}次
命名空间:{{$labels.namespace}}/Pod: {{$labels.pod_name}}/磁盘设备:{{$labels.device}} 使用率超过90%,当前值{{ printf "%.2f" $value }}%
告警通知
-
极简模式:可以设置通知对象、通知时段和重复策略。
-
普通模式:
-
不指定通知策略:若选择此选项,当完成创建告警规则后,您可以在通知策略页面新建通知策略并指定匹配规则和匹配条件(如告警规则名称等)来匹配该告警规则。当该告警规则被触发产生告警事件后,告警信息会被发送给通知策略中指定的联系人或联系人组。更多信息,请参见通知策略。
-
指定某个通知策略:若选择此项,ARMS会自动在对应的通知策略添加一条匹配规则,匹配规则内容为告警规则ID(以告警规则名称的方式呈现),以确保当前告警规则产生的告警事件一定可以被选择的通知策略匹配到。
重要快速指定通知策略只能保证当前告警规则产生的告警事件一定能够被所选的通知策略匹配到并且产生对应的告警。但是,当前告警规则产生的事件同时也可能被其它设置了模糊匹配的通知策略匹配到并且产生告警。告警规则产生的告警事件和通知策略之间是多对多的匹配关系。
-
不指定通知规则
高级设置
告警检查周期
指告警规则每隔N分钟进行一次检查,判断数据是否满足告警条件。最少设置1分钟。即使界面填写小于1分钟的值(如15秒),系统仍按1分钟执行检测,此为产品底层机制限制,非异常行为。
1
数据完整后再检查
-
是
-
否
是
标签
设置告警标签,设置的标签可用作通知策略匹配规则的选项。
无
注释
设置告警的注释。
无
-
-
设置完成后单击保存。在Prometheus告警规则列表页面,您可以查看当前告警规则的状态。
如果该告警规则的状态为自动中断,请您根据提示的中断原因,对该告警规则进行重新编辑,并单击启动,然后在弹出的对话框中单击确认。如果您遇到无法解决的规则中断问题,请联系ARMS告警服务号(d9j_rg9e4062f)协助解决。
可能导致告警规则状态自动中断的原因有以下几种:
-
规则查询结果的数量超过1500。
-
告警管理中未配置任何通知对象。
-
Prometheus实例已经卸载或不可用状态。
-
管理告警规则
-
对于在可观测监控 Prometheus 版控制台的告警规则页面创建的告警,包括静态阈值、自定义PromQL告警,您可以进行编辑、启动(告警状态为已停止)、停止(告警状态为运行中)、删除、复制、查看告警事件历史的操作。
-
对于在阿里云其他云产品控制台生成的告警,您可以查看告警事件历史、跳回云产品告警列表。
修改告警规则后,已产生的未恢复告警事件仍按旧规则配置持续触发。在告警发送历史页面认领并解决对应未恢复事件后,新规则在后续告警触发时自动生效。
常见问题
为什么告警恢复通知有延迟?
系统设计了最大容忍延迟机制,为防止 Agent 上报延迟导致漏报,告警引擎每次检查会回溯最近 10 分钟数据。即使指标已不满足条件,仍需等待窗口期结束才确认恢复。
-
恢复时效:实际恢复通知时间约为数据停止触发后的 10 分钟左右。
-
机制说明:Prometheus 本身无自动恢复逻辑,依赖 ARMS 检测机制。
应用告警规则模板后通知策略丢失怎么办?
原因:模板本身不含通知策略配置,重新应用模板可能导致规则 ID 变化,使原通知策略中基于 _aliyun_arms_alert_rule_id 的匹配失效。
解决方法:进入,找到对应策略,在分派条件中使用更稳定的标签(如 alertname 或集群名 cluster)替代规则 ID 进行关联匹配。
修改告警表达式为 increase 后仍收到重复告警怎么办?
原因:若通知策略配置了"每隔 N 分钟重复通知"且结合"手动恢复",只要指标持续满足新表达式条件,系统会不断生成新告警事件。
解决方法:检查并修改通知策略,将重复通知改为"仅首次通知"或调整为"自动恢复"模式;同时确认新表达式已正确保存生效。
Prometheus 告警规则配置后无数据或未触发如何排查?
按以下步骤逐项检查:
-
检查组件:确认 ACK 集群是否安装 kube-state-metrics 组件,若未安装需补装;检查 Prometheus 组件状态,必要时重装 ack-arms-prometheus 组件。
-
验证触发记录:单击规则旁告警历史查看是否有记录。若无记录,说明规则未真正满足条件(如指标名错误、数据为空或查询时间范围不对);若有记录但未推送,检查通知策略的分派规则(标签、集群名等)是否匹配。
-
推荐做法:建议使用新版经阿里云验证的告警模板,避免旧版模板误报或不触发。
-
语法检查:若页面报错,检查 PromQL 中正则匹配是否合法,例如
{pvc=~}为空会导致报错,应改为{pvc=~".*"}或具体值。
ACS 集群 Prometheus 监控 Pod 内存告警是否收费?
ACS 集群支持 Pod 内存指标监控及告警。短信和语音告警会产生费用,但钉钉机器人和 Webhook 告警免费。