如何获得普罗米修斯平均值的第 95 个百分位数?
How to get the 95th percentile of an average in Prometheus?
所以我知道 PromQL 中的一些百分位函数,例如 histogram_quantile
,它用于这样的情况:
// Over the past 5 minutes, what's the maximum http response time experienced by 95% of our users
histogram_quantile(0.95, rate(http_request_duration_bucket[5m])
我们可以这样计算平均值:
// Over the past 5 mins, what the average http response time?
avg by (webId) (rate(http_request_duration_sum[5m])/rate(http_request_duration_count[5m])
是否可以将这两个函数结合起来得到如下含义的查询:
在过去 5 分钟内,我们 95% 的用户体验到的最长平均 HTTP 响应时间是多少?也就是平均值的 95 个百分点?
我试过类似的方法:
histogram_quantile(0.95, avg by (webId) (rate(http_request_duration_sum[5m])/rate(http_request_duration_count[5m]))
但是好像不行。我的理解有什么建议或差距吗?
尝试以下查询:
quantile(0.95, avg by (webId) (rate(http_request_duration_sum[5m])/rate(http_request_duration_count[5m])))
它使用 quantile() 聚合函数来计算每个 webId
计算的平均响应时间的给定分位数。
我发现上面的答案不适合我的情况,但是 quantile_over_time
允许我从 sum
:
中提取百分位数
quantile_over_time(0.95,
(sum by (component_name) (
node_memory_MemTotal_bytes
- node_memory_MemFree_bytes
- node_memory_Cached_bytes)[2w:]
)
)
所以我知道 PromQL 中的一些百分位函数,例如 histogram_quantile
,它用于这样的情况:
// Over the past 5 minutes, what's the maximum http response time experienced by 95% of our users
histogram_quantile(0.95, rate(http_request_duration_bucket[5m])
我们可以这样计算平均值:
// Over the past 5 mins, what the average http response time?
avg by (webId) (rate(http_request_duration_sum[5m])/rate(http_request_duration_count[5m])
是否可以将这两个函数结合起来得到如下含义的查询: 在过去 5 分钟内,我们 95% 的用户体验到的最长平均 HTTP 响应时间是多少?也就是平均值的 95 个百分点?
我试过类似的方法:
histogram_quantile(0.95, avg by (webId) (rate(http_request_duration_sum[5m])/rate(http_request_duration_count[5m]))
但是好像不行。我的理解有什么建议或差距吗?
尝试以下查询:
quantile(0.95, avg by (webId) (rate(http_request_duration_sum[5m])/rate(http_request_duration_count[5m])))
它使用 quantile() 聚合函数来计算每个 webId
计算的平均响应时间的给定分位数。
我发现上面的答案不适合我的情况,但是 quantile_over_time
允许我从 sum
:
quantile_over_time(0.95,
(sum by (component_name) (
node_memory_MemTotal_bytes
- node_memory_MemFree_bytes
- node_memory_Cached_bytes)[2w:]
)
)