[英]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
将搜索a
和b
中具有相同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.