我们随着时间的推移收集以下两个普罗米修斯指标: 第一个是:
# HELP was_sib_durableSubscription_messageWait_time_seconds_total Total amount of time (in seconds) spent on the bus by messages consumed from this subscription.
# TYPE was_sib_durableSubscription_messageWait_time_seconds_total gauge
第二个是:
# HELP was_sib_durableSubscription_messageWait_total The number of messages that waited on the bus.
# TYPE was_sib_durableSubscription_messageWait_total counter
我们尝试划分这两个指标,但结果似乎并不正确。
我们如何创建一个图表来显示在总线上等待的每条消息的平均等待时间?
以下 PromQL 查询返回过去 10 分钟的平均等待时间:
increase(was_sib_durableSubscription_messageWait_time_seconds_total[10m])
/
increase(was_sib_durableSubscription_messageWait_total[10m])
它使用increase函数来计算过去10分钟内等待时间总和和等待时间测量的增加(此类指标称为计数器)。
/
运算符 将过去 10 分钟的等待时间总和除以过去 10 分钟的等待时间测量次数。
如果您需要计算另一个后视窗口的平均等待时间,只需将上面查询中的
10m
替换为所需的持续时间即可。请参阅 PromQL 中支持的持续时间列表。
附注如果
was_sib_durableSubscription_messageWait_total
计数器随时间缓慢变化,则 Prometheus 中此计数器上的 increase()
可能会因外推而返回意外结果 - 有关详细信息,请参阅 此问题。解决方法是使用 VictoriaMetrics 的 increase()
函数 - 这是我正在开发的类似 Prometheus 的监控解决方案。它在 increase()
函数中不使用外推法。请参阅这些文档了解更多详细信息。