Prometheus - 计算百分比增加

Posted

技术标签:

【中文标题】Prometheus - 计算百分比增加【英文标题】:Prometheus - calculating the percentage increase 【发布时间】:2021-11-01 02:31:31 【问题描述】:

我对使用 Prometheus 指标非常陌生,有人要求我根据值在过去五分钟内是否增加了 10% 来编写警报。

为了更简洁,当我的 Kafka 主题死信数在 5 分钟内增加 10% 时,我必须报告。

我可以使用这个查询来计算主题/子的当前死信:

count by(topic) (kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+")

我现在需要做的是从 5 分钟前得到相同的数字,然后计算从那时到现在的百分比增加:

Percentage Increase = [ (Final Value - Starting Value) / |Starting Value| ] × 100

谁能指导我如何计算百分比差异?

我见过这样的例子,但不能让它为我工作: (sum by(topic) (increase(kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+"[5m])) > 0)

【问题讨论】:

【参考方案1】:

如果您使用以下查询来计算此刻的值:

count by(topic) (kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+")

那么可以通过将offset 5m添加到查询中来计算5分钟前的值:

count by(topic) (kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+" offset 5m)

请注意,offset 修饰符必须紧跟在上述查询中的大括号后。请参阅these docs 了解更多详情。

鉴于此,以下查询将显示该值在过去 5 分钟内的百分比增长:

(
  count by (topic) (
    kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+"
  ) - count by (topic) (
    kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+" offset 5m
  )
) / count by (topic) (
  kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+" offset 5m
) * 100

附:请注意,查询包含多个重复部分。这些部分可以使用 VictoriaMetrics 的 with templates 简化为以下 MetricsQL 查询:

with (
  q = count by (topic) (
    kafka_burrow_topic_partition_offsettopic=~".+__deadletter__.+my-subscription-name.+"
  )
)
(q - q offset 5m) / (q offset 5m) * 100

【讨论】:

完美!我能够根据需要完成这项工作!谢谢@valyala 注意:“with”语句出现错误Error executing query: 3:6: parse error: unexpected "=" with 语法不适用于 Prometheus - 它适用于 VictoriaMetrics。

以上是关于Prometheus - 计算百分比增加的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 grafana singlestat 和 prometheus 计算正常运行时间百分比

如何在 Prometheus Grafana 中计算正常运行时间百分比或停机时间百分比

Prometheus 查询语言

prometheus部署

prometheus部署

初识 prometheus