首页/云/可观测性速查/keep_firing_for:减少抖动导致的漏看
Prometheus 与采集64 条

keep_firing_for:减少抖动导致的漏看

keep_firing_for 让告警在条件不再满足后继续维持 firing 一段时间,防止抖动场景下告警刚触发就恢复、值班人还没看到。

可观测性速查云更新于 2026-10-13

keep_firing_for 是什么

keep_firing_for 让告警在条件不再满足后继续维持触发状态一段时间,防止抖动场景下告警刚触发就恢复、值班人还没看到通知就消失了。Prometheus 2.42 起在告警规则中支持该字段。它与 for 的语义相反:for 决定告警何时开始,keep_firing_for 决定告警何时停止,两者配合能把抖动这类既不值得打扰、又需要留痕的情况处理得更稳。

基本信息

配置位置告警规则字段 keep_firing_for
引入版本Prometheus 2.42
语义条件消失后继续维持触发的时长
与 for 的关系for 控制开始,keep_firing_for 控制结束
校验方式promtool check rules 与 promtool test rules

典型使用场景

  • 抖动抑制:指标在阈值附近来回跳动时,避免通知与恢复反复刷屏
  • 短故障留痕:瞬时故障仍留下一条记录,便于事后统计发生频率
  • 恢复延后:让恢复通知稍晚发出,避免值班人刚点开就已经恢复
  • 联动稳定:上游规则状态稳定后,下游的抑制判断也更可靠
  • 演练观察:模拟短故障时用它观察告警与恢复的完整时间线

使用要点

  • 时长不宜过长,否则会推迟恢复通知,影响故障结束的确认节奏
  • 添加字段后先用 promtool 校验版本兼容性,别让规则加载失败
  • 与 for 一起设计:for 过长会漏掉短故障,keep_firing_for 过长会拖慢恢复
  • 该字段只影响告警状态维持,不改变表达式本身的评估结果
  • 变更后用测试用例固化预期行为,避免后续被误删

规则示例

规则示例
- alert: InstanceDown
  expr: up == 0
  for: 5m
  keep_firing_for: 10m
  labels:
    severity: critical
  annotations:
    summary: "{{ $labels.instance }} 失联"

# 校验:promtool check rules 与 promtool test rules 都会检查该字段
# 旧版本 Prometheus 不支持该字段,本地校验通过不代表线上可用

字段对照

字段作用设置过长的后果
for条件满足多久后开始告警短故障被完全忽略
keep_firing_for条件消失后维持多久恢复通知被推迟
interval规则评估间隔评估过密增加服务端负载
labels附加标签路由与抑制依赖它
annotations通知内容模板写不清楚会影响处置效率
旧版本 Prometheus 不支持该字段,升级前先用 promtool 校验规则文件,避免规则整组加载失败导致告警缺失。

易错点

  • 旧版本 Prometheus 不支持该字段,升级前先用 promtool 校验规则文件
  • keep_firing_for 设得过长会推迟恢复通知,影响故障结束的确认节奏
  • 把它当成 for 使用,会得到与预期相反的触发时机
  • 只加字段不补测试用例,后续维护者容易误删而没人发现行为变化

数据来源与参考

  • Prometheus 文档 · Alerting rules(keep_firing_for)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌