Разница между PromQL «по» и «без» неясна - PullRequest
0 голосов
/ 27 июня 2018

У меня есть вопрос о расчете времени отклика с помощью сводных метрик Прометея.

Я создал сводную метрику, которая содержит не только имя службы, но также полный путь и 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 заранее !!!

1 Ответ

0 голосов
/ 27 июня 2018

Все эти примеры агрегируют неправильно, поскольку вы усредняете среднее значение. Вы хотите:

  sum without (path,host) (
    rate(request_duration_sum{status_code=~"2.*"}[5m])
  )
/
  sum without (path,host) (
    rate(request_duration_count{status_code=~"2.*"}[5m])
  )

Что будет возвращать среднюю задержку на status_code плюс любые другие оставшиеся метки.

...