如何用PromQL绘制主题中单条消息平均等待时间图表?
解决Prometheus计算单条消息平均等待时间的问题
首先明确两个指标的特性:
was_sib_durableSubscription_messageWait_time_seconds_total:gauge类型,代表已消费消息的总等待时长(秒),为累计值was_sib_durableSubscription_messageWait_total:counter类型,代表已消费消息的总数量,单调递增(实例重启时会重置为0)
直接将两个指标当前值相除不符合预期的核心原因:counter指标在实例重启后会重置,而gauge类型的总等待时长若未同步重置,会导致计算结果失真;另外直接用累计值相除仅能得到从指标开始收集到当前的平均等待时间,无法反映近期实际情况。
正确做法是计算一段时间内的增量比值,PromQL查询语句如下:
increase(was_sib_durableSubscription_messageWait_time_seconds_total[5m]) / increase(was_sib_durableSubscription_messageWait_total[5m])
说明:
increase()函数用于计算指标在指定时间范围内的增量,既适配counter的单调递增特性,也能处理持续累加的gauge类型累计值[5m]表示统计过去5分钟内的增量,可根据监控需求调整为[1m]、[10m]等时间范围- 该查询返回指定时间段内每条消息的平均等待时间,能准确反映近期的消息等待情况
内容的提问来源于stack exchange,提问作者trikelef
相关产品推荐
相关产品推荐

