#histogram #prometheus #grafana #promql
#гистограмма #prometheus #графана #promql
Вопрос:
Мне нужно рассчитать и построить график замедления задержки на prometheus по временным рядам гистограммы, но мне не удалось отобразить гистограмму в grafana. Примерной метрикой будет время запроса 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]))
Любая помощь здесь высоко ценится!
Ответ №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]))
должно сработать.
Комментарии:
1. Большое спасибо.. Ваше решение имеет смысл.. Если это решение, то что это за все, о чем они упоминали в документах prometheus. prometheus.io/docs/practices/histograms/#apdex-score