У меня есть вопрос о расчете времени отклика с помощью сводных метрик Прометея.
Я создал сводную метрику, которая содержит не только имя службы, но также полный путь и http-метод.
Теперь я пытаюсь рассчитать среднее время отклика для всего сервиса.
Я прочитал статью о «ставка, затем сумма», и либо я не понимаю, как выполняется расчет, либо расчет ИМХО неверен.
Насколько я понимаю, это должен быть правильный способ расчета времени отклика в секунду:
sum by(service_id) (
rate(request_duration_sum{status_code=~"2.*"}[5m])
/
rate(request_duration_count{status_code=~"2.*"}[5m])
)
Здесь я понимаю, что создайте значение «длительность в секунду» (сумма ставки / счет скорости) для каждого поднабора, а затем создайте сумму для идентификатора службы.
Это выглядит абсолютно неправильно для меня - но я думаю, что это не работает так, как я понимаю.
Еще один способ получить одинаково выглядящий результат - это:
sum without (path,host) (
rate(request_duration_sum{status_code=~"2.*"}[5m])
/
rate(request_duration_count{status_code=~"2.*"}[5m])
)
- Но в чем разница?
- Что на самом деле здесь происходит?
- И почему я честно получаю измеримые значения только в том случае, если я использую «max» вместо «sum»?
Если бы я игнорировал все прочитанное, я бы попробовал это следующим образом:
rate(sum by(service_id) request_duration_sum{status_code=~"2.*"}[5m])
/
rate(sum by(service_id) request_duration_count{status_code=~"2.*"}[5m])
Но это не будет работать вообще ... (мгновенный вектор против вектора диапазона и т. Д.).
Есть идеи?
THX заранее !!!