如何查询大于值的普罗米修斯数据,但将所有数据包括在序列向量中?

问题描述

我认为这张图片说明了一切

enter image description here

我想用大于.5的值在Prometheus中查询序列,但在序列中包括较低的值,以便图表完整。 这些是量表指标,范围是0-1(小数百分比/比率) 我希望图表中的所有线条都完整。 当前查询

avg_over_time((failure_percentage > .5)[10m:])

我尝试了自我加入和分组,但是没有成功。

解决方法

据我所知,使用PromQL无法返回超过给定值的时间序列的所有数据点。

但这对于MetricsQL是可能的:

with (q = failure_percentage) q if ((q > 0.5) default 0)

可以创建WITH template function来返回时间序列中超过给定阈值的所有点:

with (
  f(q,threshold) = q if ((q > threshold) default 0)
)
f(failure_percentage,0.5)
,

在某些人的帮助下,我能够使用某种加入技巧来解决普罗米修斯松弛问题

avg_over_time(failure_percentage[10m]) * ( (failure_percentage > 0.5) ^0 )

用户viq的原始评论(有关完整内容和说明)

我不知道。...想到的一个骗术就像

 metric * ( (metric > 0.5) ^ 0)

由于要进行乘法运算,双方都需要完全匹配 标签,因此您只会得到与右侧内容匹配的结果, 正确(我认为)应该只给您符合条件的结果, 并且^ 0应该使该值始终为1,因此您开始生效 公制* 1 maaaaybe,未经测试