You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并Prometheus中同一表达式的重复告警并每日汇总通知?

优化Prometheus分散告警为每日汇总告警

一、修改Prometheus告警规则

将原有分散告警规则调整为单条汇总告警,同时确保每日仅触发一次:

- alert: ProductOfferRateAlert
  # 筛选5分钟内报价增量低于100的实例,统计数量大于0时触发
  expr: count by () (sum(increase(product_offer_counter[5m])) by (type, country) < 100) > 0
  # 持续24小时符合条件才触发,避免频繁告警
  for: 24h
  labels:
    level: P2
    frequency: daily
  annotations:
    summary: "产品报价率过低汇总告警"
    description: "[{{- range query 'sum(increase(product_offer_counter[5m])) by (type, country) < 100' -}}{{ .Labels.type }}-{{ .Labels.country }}{{- if not last -}}, {{- end -}}{{- end -}}] offer rate was too low"

关键改动说明:

  • expr部分:通过count by ()聚合所有符合条件的实例,仅生成一条告警时间序列,彻底解决分散告警问题。
  • for字段:设置为24h,确保只有当问题持续存在24小时才触发告警,为每日一次的触发频率提供基础约束。
  • annotations描述:使用Prometheus模板的query函数,实时拉取所有符合条件的type-country组合,遍历拼接成要求的[A-A, B-B,...]格式。

二、配置Alertmanager严格控制发送频率

为确保每日仅发送一次告警通知,需调整Alertmanager的路由配置:

route:
  group_by: ['alertname']
  group_wait: 30s
  # 同一告警组的间隔发送时间设为24小时
  group_interval: 24h
  # 同一告警的重复通知间隔设为24小时
  repeat_interval: 24h

配置说明:

  • group_by: ['alertname']:将同一告警名称的所有实例归为一组,保证汇总逻辑生效。
  • group_interval: 24h:限制同一组告警的发送间隔,避免短时间内重复推送。
  • repeat_interval: 24h:控制同一告警的重复通知周期,确保每日仅推送一次。

内容的提问来源于stack exchange,提问作者Xiao Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:03:16