繁体   English   中英

如何通过普罗米修斯查询将二除以计算百分比

[英]How to divide two by prometheus queries to calculate a percentage

我有两个不同的指标,它们都有一个 label 的client_app

一个指标是一个直方图,它计算给定时间跨度内失败请求的数量(即在最后一分钟内有 10 个请求失败),另一个指标是一个计数器,每个请求都会递增。

我想划分这两个指标以获得每个 client_app 的失败请求百分比

到目前为止,这是我的尝试

avg by (client_app) (max(rate(ignored_events_sum[5m])) / sum(rate(total_app_events[5m])))

这只输出一个图,而我希望每个 client_app 一个

尝试这个:

max by (client_app) (rate(ignored_events_sum[5m])) / sum by (client_app) (rate(total_app_events[5m]))

默认情况下,Prometheus 根据这些文档/的左侧和右侧对具有相同标签集的时间序列对执行除法。 如果/左右两侧的时间序列包含不同的标签集,则on()group_left()修饰符可能会有所帮助:

  • on()修饰符限制标签,用于搜索匹配的时间序列对。 例如a / on(client_app) b将搜索ab中具有相同client_app label 的时间序列对。

  • group_left()修饰符允许将多个时间序列与/左侧的给定标签集与/右侧的单个时间序列进行匹配。

在这些文档中查看有关这些修饰符的更多详细信息。

所以原始问题的解决方案是以下 PromQL 查询:

rate(ignored_events_count[5m])
  / on (client_app) group_left()
rate(total_app_events[5m])

它将使用ignored_events_count名称的每个时间序列的每秒速率除以具有total_app_events名称且具有匹配的client_app label 值的时间序列的每秒速率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM