Расчет Latency SLO запросов

Мне нужно рассчитать и построить график SLO задержки на Prometheus по временному ряду гистограммы, но мне не удалось отобразить гистограмму в графане. Образцом метрики будет время запроса nginx.

предположим, если у меня есть такая корзина гистограммы,

nginx_request_time_bucket(le=1) 1,
nginx_request_time_bucket(le=10) 2,
nginx_request_time_bucket(le=60) 2,
nginx_request_time_bucket(le=+inf) 5

Я использую это выражение ниже для проверки SLO задержки. Это выражение возвращает процент запросов в течение 10 секунд:

sum(rate(nginx_request_time_bucket{le="10"}[$__range])) / sum(rate(nginx_request_time_count[$__range]))

Как теперь узнать процент запросов в пределах от 10 до 60 секунд? Как я могу его рассчитать?

Правильно ли приведенное ниже выражение ??

(
  sum(rate(nginx_request_time_bucket{le="10"}[$__range]))
+
  sum(rate(nginx_request_time_bucket{le="60"}[$__range]))
) / 2 / sum(rate(nginx_request_time_count[$__range])) 

Любая помощь здесь приветствуется!


person td4u    schedule 05.11.2020    source источник


Ответы (1)


Все запросы {le="10"} также включены в {le="60"} (и во все большие сегменты), поэтому, чтобы узнать количество запросов между ними, вам просто нужно вычесть ставки, например:

(
  sum(rate(nginx_request_time_bucket{le="60"}[$__range]))
   - 
  sum(rate(nginx_request_time_bucket{le="10"}[$__range]))
)
/ sum(rate(nginx_request_time_count[$__range]))

должно сработать.

person bjakubski    schedule 05.11.2020
comment
Большое спасибо .. Ваше решение имеет смысл .. Если это решение, то что это все, о чем они упомянули в документации Prometheus. prometheus.io/docs/practices/histograms/#apdex-score - person td4u; 05.11.2020