按公制值过滤普罗米修斯结果,而不是按标签值过滤

时间:2017-10-11 21:20:49

标签: grafana prometheus

由于Prometheus topk returns more results than expected,并且因为https://github.com/prometheus/prometheus/issues/586需要通过https://github.com/grafana/grafana/issues/7664尚未提供的客户端处理,我试图寻求不同的近期工作 - 我的类似问题。

在我的特定情况下,我想要绘制的大多数指标值在大多数情况下都是零。只有当它们高于零时才有意思。

我可以根据标签的值找到编写prometheus查询以过滤数据点的方法,但我还没有找到一种方法告诉prometheus返回时间系列数据仅在指标的值满足特定条件时指向。在我的情况下,我想过滤一个大于零的值。

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

3 个答案:

答案 0 :(得分:6)

使用comparison operators进行过滤,例如x > 0

答案 1 :(得分:1)

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

min(flink_rocksdb_actual_delayed_write_rate > 0)

将显示最小值在0之上。

如果您实际上想要一个布尔值(或者说是0或1),请使用类似的

sum (flink_rocksdb_actual_delayed_write_rate >bool 0)

这将为您提供非零计数。

答案 2 :(得分:0)

这可以通过subqueries解决:

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

以上查询将返回最近5分钟内大于0的metric数据点的数量。方括号中的第二个arg必须小于metric的抓取间隔。