如何在Prometheus中忽略空的数据系列

9
计算所有数据序列的最大分位数对我来说是一个问题:
查询
http_response_time{job=~"^(x|y)$", quantile="0.95",...}

结果

http_response_time{job="x",...} 0.26
http_response_time{job="y",...} NaN

这是我尝试计算最大值的方法:
avg(http_response_time{job=~"^(x|y)$",...})

现在的结果将是“NaN”。我该如何忽略“NaN”结果(来自结果部分)?
更新0
该度量标准是自制的摘要度量标准。
更新1
使用prometheus 1.8版本。

你能分享更多关于所讨论指标的信息以及它的来源吗? - brian-brazil
http_response_time{job="x",...} 0.26 http_response_time{job="y",...} NaN 您的 node_exporter 返回了 http。 - Nikolay Baranenko
1个回答

23

我没有尝试过在NaN中使用这个,但是您可以通过二进制运算符按值进行简单的过滤。由于数学上 NaN 不等于 NaN ,因此您可以尝试这个技巧(因为响应时间应始终为正):

avg(http_response_time{job=~"^(x|y)$",...} >= 0)

1
不错的尝试。但是,“http_response_time{quantile="0.95"} != NaN”并没有过滤/删除“NaN”结果。 - eventhorizon
看起来不错。在将您的答案设置为“正确”之前,我会仔细检查它。谢谢! - eventhorizon
根据定义,NaN布尔运算是奇怪的。例如,JavaScript和几乎所有其他语言中,“NaN!= NaN”返回true。 - Bryan Larsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接