如何在PromQL求和时排除value=3的标签?
解决PromQL聚合时忽略特定标签值的问题
你要忽略的是value=3这个标签值对应的指标序列,不是要移除value标签本身,所以用without肯定不对——without是用来指定聚合时不需要保留的标签,和过滤特定标签值完全是两码事。
正确的做法是先过滤掉value=3的时间序列,再做聚合:
sum(example_query{value!="3"}[1m]) by (name, value)
简单拆解下逻辑:
{value!="3"}会直接排除所有value等于3的指标序列,只留下value=1和2的有效数据- 之后再对筛选后的序列按
name和value做1分钟窗口的sum聚合,最终结果就是不含value=3的汇总数据
如果之后你有聚合时去掉value标签(不管值是什么)的需求,才需要用到without,比如:
sum(example_query{value!="3"}[1m]) without (value)
这会把相同name的结果合并成一条,自动移除value标签,但这是另一种场景的用法了。
内容的提问来源于stack exchange,提问作者Danila
相关产品推荐
相关产品推荐

