我对使用Prometheus指标非常陌生,有人要求我根据过去五分钟内某个值是否增加了10%来编写警报。
简而言之,当我的Kafka主题死信数在5分钟内增加了10%时,我必须报告。
我可以使用以下查询来计算主题/子主题的当前死信数:
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)
发布于 2021-09-02 16:11:18
如果您当前使用以下查询来计算该值:
count by(topic) (kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"})
然后,可以通过将offset 5m
添加到查询来计算5分钟前的值:
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
附注:请注意,查询包含多个重复部分。使用VictoriaMetrics中的with templates可以将这些部分简化为以下MetricsQL查询:
with (
q = count by (topic) (
kafka_burrow_topic_partition_offset{topic=~".+__deadletter__.+my-subscription-name.+"}
)
)
(q - q offset 5m) / (q offset 5m) * 100
https://stackoverflow.com/questions/69033232
复制相似问题