Как избежать ошибки «вектор не может содержать метрики с одинаковым набором меток» при построении графика скорости() из нескольких метрик (один и тот же набор меток, разные имена)

#prometheus #grafana #promql

Вопрос:

В Prometheus иногда нам нужно построить несколько показателей одновременно (скажем, с именем, соответствующим одному и тому же регулярному выражению), как в этом запросе PromQL:

 {name=~"camel_proxy.*count"}
 

и это прекрасно работает, одни и те же строки набора меток отображаются с разными именами.

Когда мы хотим построить график их скорости (), мы сталкиваемся с ошибкой в названии:

 rate({name=~"camel_proxy.*count"}[5m])
 

Итак, способ здесь состоит в том, чтобы сделать набор меток не одинаковым и переместить __name__ его на какую-то метку, сделав каждый набор меток уникальным:

 rate(label_replace({name=~"camel_proxy.*count"},"name_label","$1","name", "(. )")[5m])
 

Но мы все еще получаем ошибку, как

 1:90: parse error: ranges only allowed for vector selectors"
 

Как этого избежать и правильно рассчитать ставки?

Комментарии:

1. Я обнаружил, что мне пришлось использовать __name__ вместо name в запросе, которым Илья поделился здесь — как в селекторе метрик в начале, так и в label_replace функции следующим образом: label_replace({__name__=~"camel_proxy.*count"},"name_label","$1","__name__", "(. )") (Я попытался обновить сам вопрос с помощью редактирования, но очередь редактирования при переполнении стека была заполнена))

Ответ №1:

Запрос PromQL здесь должен быть

 rate(label_replace({name=~"camel_proxy.*count"},"name_label","$1","name", "(. )")[5m:])
 

пожалуйста, обратите внимание на 5 м**:** вместо 5 м