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

Prometheus如何计算Kafka死信队列5分钟内10%增长率的告警规则

正确PromQL写法及说明

核心查询语句

按照你给出的涨幅公式,直接使用offset修饰符获取5分钟前的历史值计算即可,写法如下:

(
  count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}) 
  - 
  count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}) offset 5m
) 
/ 
abs(count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}) offset 5m > 0) 
* 100 
>= 10

说明

  • 你之前使用的increase函数是针对Counter类型指标设计的,会自动做增量修正,不适用于你当前这种统计分区offset总数的Gauge类场景,且原写法没有匹配你指定的订阅名称,所以无法得到正确结果
  • 语句中加入> 0是为了过滤5分钟前死信数量为0的情况,避免出现除零错误
  • 最后的>= 10对应涨幅达到10%的触发条件

完整告警规则示例

可以直接放到你的Prometheus告警规则配置中:

groups:
- name: kafka_deadletter_alerts
  rules:
  - alert: KafkaDeadletterIncreaseOver10Percent
    expr: |
      (
        count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}) 
        - 
        count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}) offset 5m
      ) 
      / 
      abs(count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}) offset 5m > 0) 
      * 100 
      >= 10
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "死信主题 {{ $labels.topic }} 5分钟涨幅超过10%"
      description: "当前涨幅为 {{ $value | printf \"%.2f\" }}%,请及时排查消费异常问题"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:27:02