按指标值而不是标签值过滤普罗米修斯结果
Filter prometheus results by metric value, not by label value
因为 Prometheus topk returns more results than expected, and because https://github.com/prometheus/prometheus/issues/586 requires client-side processing that has not yet been made available via https://github.com/grafana/grafana/issues/7664,我正在尝试针对我的类似问题寻求不同的近期解决方法。
在我的特定情况下,我想要绘制的大多数指标值在大多数情况下都是零。只有当它们大于零时,它们才有趣。
我可以找到方法编写 prometheus 查询来根据 label 的值过滤数据点,但我还没有找到告诉 prometheus 的方法仅当 metric 的值满足特定条件时,才为 return 时间序列数据点。在我的例子中,我想过滤一个大于零的值。
我可以向基于指标值过滤数据点的 prometheus 查询添加条件吗?如果是这样,我在哪里可以找到执行此操作的语法示例?
使用 comparison operators 进行过滤,例如 x > 0
。
如果您对brian感到困惑:使用比较运算符过滤的结果不是布尔值,而是过滤后的系列。例如
min(flink_rocksdb_actual_delayed_write_rate > 0)
将显示大于 0 的最小值。
如果您真的想要一个布尔值(或者更确切地说是 0 或 1),请使用类似
sum (flink_rocksdb_actual_delayed_write_rate >bool 0)
这会给你 non-zero 个计数。
这可以用subqueries解决:
count_over_time((metric > 0)[5m:10s])
上面的查询将 return 过去 5 分钟内大于 0 的 metric
个数据点的数量。方括号中的第二个 arg 必须小于 metric
.
的抓取间隔
因为 Prometheus topk returns more results than expected, and because https://github.com/prometheus/prometheus/issues/586 requires client-side processing that has not yet been made available via https://github.com/grafana/grafana/issues/7664,我正在尝试针对我的类似问题寻求不同的近期解决方法。
在我的特定情况下,我想要绘制的大多数指标值在大多数情况下都是零。只有当它们大于零时,它们才有趣。
我可以找到方法编写 prometheus 查询来根据 label 的值过滤数据点,但我还没有找到告诉 prometheus 的方法仅当 metric 的值满足特定条件时,才为 return 时间序列数据点。在我的例子中,我想过滤一个大于零的值。
我可以向基于指标值过滤数据点的 prometheus 查询添加条件吗?如果是这样,我在哪里可以找到执行此操作的语法示例?
使用 comparison operators 进行过滤,例如 x > 0
。
如果您对brian
min(flink_rocksdb_actual_delayed_write_rate > 0)
将显示大于 0 的最小值。
如果您真的想要一个布尔值(或者更确切地说是 0 或 1),请使用类似
sum (flink_rocksdb_actual_delayed_write_rate >bool 0)
这会给你 non-zero 个计数。
这可以用subqueries解决:
count_over_time((metric > 0)[5m:10s])
上面的查询将 return 过去 5 分钟内大于 0 的 metric
个数据点的数量。方括号中的第二个 arg 必须小于 metric
.