Понимание histogram_quantile, основанного на норме в Прометее - PullRequest
3 голосов
/ 14 марта 2019

В соответствии с документацией Прометея, чтобы получить 95-й процентиль с использованием метрики гистограммы, я могу использовать следующий запрос:

histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

Источник: https://prometheus.io/docs/practices/histograms/#quantiles

Поскольку каждый сегмент гистограммы являетсяС помощью счетчика мы можем рассчитать скорость каждого из сегментов как:

средняя скорость увеличения временного ряда в векторе диапазона в секунду.

См .: https://prometheus.io/docs/prometheus/latest/querying/functions/#rate

Так, например, если значение корзины [t-5m] = 100 и значение корзины [t] = 200, то скорость корзины [t] =(200-100) / (10 * 60) = 0,167

И, наконец, самая запутанная часть заключается в том, как функция histogram_quantile может найти 95-й процентиль для данной метрики, зная все скорости сегмента?

Есть какой-нибудь код или алгоритм, который я могу посмотреть, чтобы лучше понять его?

1 Ответ

0 голосов
/ 15 марта 2019

Я полагаю, это - код для этого в Prometheus
Общая идея состоит в том, что вы используете данные в корзинах для экстраполяции / аппроксимации квантилей. Elasticsearch также делает что-то подобное (но отличается / намного проще) в своих способах накопления

...