Prometheus - 计算增加的​​百分比

Prometheus - calculating the percentage increase

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

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

我可以使用此查询计算 topic/sub 上的当前死信:

count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"})

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

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

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

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

如果您现在使用以下查询来计算值:

count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"})

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

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

请注意,offset 修饰符必须紧跟在上述查询中的大括号结束之后。有关详细信息,请参阅 these docs

鉴于此,以下查询将显示该值在过去 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
  )
) / count by (topic) (
  kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"} offset 5m
) * 100

P.S。请注意,查询包含多个重复部分。这些部分可以从 VictoriaMetrics 简化为以下 MetricsQL query using with templates

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