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 计算正常运行时间百分比