Supondo que eu tenha duas métricas diferentes com nomes de rótulos diferentes, mas o mesmo grupo de valores:
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
Agora quero consultar metric1 com label1, mas filtrar todas as métricas com o mesmo valor de metric2 label2
Eu sei que possometric1{label1!=~"val2|val3"}
mas e se eu tiver 300 valores em metric1 e 200 em metric2 e estes puderem mudar com o tempo? como filtrá-lo dinamicamente?
tentei muitas coisas assim:
metric_name1 unless metric_name2 on(common_label) group_left
mas sem sucesso
Sua tentativa está na direção correta. Acontece que
on()
a cláusula precisa de um rótulo comum para ambas as métricas, mas com base no seu exemplo, elas não são.Porém, isso não é um problema:
label_replace
pode nos ajudar aqui.Aqui, copio o rótulo
label2
para elabel1
, em seguida, uso-ounless
para excluir todas as métricas correspondenteslabel1
.Você não precisa
group_left
, pois a cláusulaunless
withon
não altera o conjunto de rótulos do operando esquerdo (ao contrário da cláusulaand
withon
).