由于Prometheus topk returns more results than expected,并且因为https://github.com/prometheus/prometheus/issues/586需要通过https://github.com/grafana/grafana/issues/7664尚未提供的客户端处理,我试图寻求不同的近期工作 - 我的类似问题。
在我的特定情况下,我想要绘制的大多数指标值在大多数情况下都是零。只有当它们高于零时才有意思。
我可以根据标签的值找到编写prometheus查询以过滤数据点的方法,但我还没有找到一种方法告诉prometheus返回时间系列数据仅在指标的值满足特定条件时指向。在我的情况下,我想过滤一个大于零的值。
我可以在prometheus查询中添加条件,根据度量值过滤数据点吗?如果是这样,我在哪里可以找到这样做的语法示例?
答案 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
的抓取间隔。