#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 м