提问者:小点点

按公制值过滤prometheus结果,而不是按标签值


因为普罗米修斯topk返回的结果比预期的要多,而且因为https://github.com/prometheus/prometheus/issues/586需要客户端处理,而这些处理尚未通过https://github.com/grafana/grafana/issues/7664提供,所以我正在尝试对我的类似问题进行不同的近期解决方案。

在我的特殊情况下,我想要绘制的大多数度量值在大多数情况下都是零。只有当它们高于零时,它们才有趣。

我可以找到编写普罗米修斯查询的方法来根据标签的值过滤数据点,但是我还没有找到一种方法来告诉普罗米修斯只有当度量值满足某个条件时才返回时间序列数据点。在我的例子中,我想筛选大于零的值。

是否可以在prometheus查询中添加条件,根据度量值筛选数据点?如果是这样,我在哪里可以找到这样做的语法示例?


共3个答案

匿名用户

如果您对brian的回答感到困惑:使用比较运算符进行过滤的结果不是布尔值,而是经过过滤的序列。例如。

min(flink_rocksdb_actual_delayed_write_rate > 0)

将显示高于0的最小值。

如果您真的想要一个布尔值(或者更确切地说是0或1),请使用类似

sum (flink_rocksdb_actual_delayed_write_rate >bool 0)

这将为您提供非零计数。

匿名用户

使用比较运算符进行过滤,例如x

匿名用户

这可以通过子查询解决:

count_over_time((metric > 0)[5m:10s])

上面的查询将返回过去5分钟内大于0的度量数据点的数量。方括号中的第二个参数必须小于度量值的刮取间隔。