PromQL 中 histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m])) 背后的数学是啥
Posted
技术标签:
【中文标题】PromQL 中 histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m])) 背后的数学是啥【英文标题】:what's the math behind histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m])) in PromQLPromQL 中 histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m])) 背后的数学是什么 【发布时间】:2021-02-18 18:01:06 【问题描述】:我正在试图弄清楚背后的计算方式
histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m]))
基于https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile,上述表达式计算了过去 10m 中请求持续时间的第 90 个百分位。
据我了解,http_request_duration_seconds_bucket
是一个带有le
和计数的桶数组。 le
指定存储桶边界。
那么rate(http_request_duration_seconds_bucket[10m])
后面的计算是什么,是不是计算每秒每个bucket中counts的增加量?
根据上面的表达式,histogram_quantile(0.9, rate(...))
,rate(...)
部分类似于累积密度分布 (CDF)。
我理解正确吗?
【问题讨论】:
请参考我的anwser here 【参考方案1】:rate(http_request_duration_seconds_bucket[10m]) 后面的计算是什么,它是计算每秒每个bucket中计数的增加吗?
正如post 所解释的,此处应用于存储桶的rate
计算了过去 10 分钟内所有存储桶上发生的一组rate of increment
s。因此,要回答您的问题,请使用cumulative density distribution
在给定时间范围内计算的变化率。
histogram_quantile
函数然后使用此数据计算分位数/百分位数。
【讨论】:
以上是关于PromQL 中 histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m])) 背后的数学是啥的主要内容,如果未能解决你的问题,请参考以下文章