PromQL 中的 histogram_quantile(0.9,rate(http_request_duration_seconds_bucket[10m])) 背后的数学是什么

zyx*_*xue 5 prometheus promql

我试图弄清楚背后的计算

histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m]))
Run Code Online (Sandbox Code Playgroud)

基于https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile,上述表达式计算过去 10m 内请求持续时间的第 90 个百分位。

据我了解,http_request_duration_seconds_bucket是一个带有 和 计数的桶数组lele指定存储桶边界。

那后面的计算是什么呢rate(http_request_duration_seconds_bucket[10m]),是不是计算每个桶每秒增加的计数?

根据上面的表达式,histogram_quantile(0.9, rate(...)),该rate(...)部分类似于累积密度分布 (CDF)。

我理解正确吗?

aar*_*uja 0

那么rate(http_request_duration_seconds_bucket[10m])背后的计算是什么呢,它是否计算每秒每个桶中计数的增加?

正如这篇文章所解释的,rate应用于此处的存储桶会计算rate of increment过去 10 分钟内所有存储桶上发生的一组 s。因此,要回答您的问题,它是cumulative density distribution在给定时间范围内计算的变化率。

然后该histogram_quantile函数使用该数据来计算分位数/百分位数。