假设我有两个不同的指标,具有不同的标签名称,但具有相同的一组值:
metric1{label1="some_values_the_same_as_in_metric2"} val examples: val1 val2 val3
metric2{label2="some_values_the_same_as_in_metric1"} val examples: val2 val3
现在我想用 label1 查询 metric1 但过滤掉与 metric2 label2 中具有相同值的所有指标
我知道我可以metric1{label1!=~"val2|val3"}
但是,如果我在 metric1 中有 300 个值,在 metric2 中有 200 个值,并且这些值会随着时间的推移而改变,该怎么办?如何动态过滤掉它?
尝试了很多这样的事情:
metric_name1 unless metric_name2 on(common_label) group_left
但没有成功
你的尝试方向是正确的。只是该
on()
子句需要两个指标通用的标签,但根据您的示例,它们不是。但这不是问题:
label_replace
可以在这里帮助我们。在这里,我将 label 复制
label2
到 中label1
,然后使用它unless
来排除所有与 匹配的指标label1
。您不需要
group_left
,因为unless
withon
子句不会更改左操作数的标签集(与and
withon
子句不同)。