PromQL:查找低于平均水平的向量元素

Posted

技术标签:

【中文标题】PromQL:查找低于平均水平的向量元素【英文标题】:PromQL: Find below-average vector elements 【发布时间】:2020-02-11 14:46:21 【问题描述】:

我有一个带有标签 (instance) 的 Prometheus 向量度量 (etcd_network_client_grpc_received_bytes_total)。该指标对一组标签值中的每一个都有不同的值(即每个instance 一个值)。我想找出所有instances 的值小于所有实例平均值的70%。

例如,如果向量具有以下值:

etcd_network_client_grpc_received_bytes_totalinstance="192.168.0.18:2399" 19021275139
etcd_network_client_grpc_received_bytes_totalinstance="192.168.0.22:2399" 390020
etcd_network_client_grpc_received_bytes_totalinstance="192.168.0.30:2399" 19021275254
etcd_network_client_grpc_received_bytes_totalinstance="192.168.0.48:2399" 38992
etcd_network_client_grpc_received_bytes_totalinstance="192.168.0.49:2399" 1992

...那么查询应该返回第 2、第 4 和第 5 个元素。

什么不起作用:

etcd_network_client_grpc_received_bytes_total < (0.7 * avg (etcd_network_client_grpc_received_bytes_total))

(我猜是因为对每个标签值都进行了评估)

这可能吗?

(我实际上应该比较费率,而不是总数,但现在让我们保持简单)

【问题讨论】:

顺便说一句。我认为可能有用的一件事是平均记录规则,但这似乎过分了。 【参考方案1】:
etcd_network_client_grpc_received_bytes_total
< ignoring(instance) group_left
0.7 * avg without(instance)(etcd_network_client_grpc_received_bytes_total)

见How do I compare select all values larger than their average?

【讨论】:

以上是关于PromQL:查找低于平均水平的向量元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 分析函数选择工资低于部门平均水平的员工?

在球员计分计划中显示低于平均分

查找导致在 Google Chrome 中显示水平滚动条的元素

计算 8 个 AVX 单精度浮点向量的 8 个水平和

薪酬体系建设

给孤傲的程序员们:软件开发是一项团体运动