基于Prometheus中的速率了解histogram_quantile

时间:2019-03-14 12:03:47

标签: histogram prometheus percentile rate

根据Prometheus文档,为了使用直方图指标获得第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

最后,最令人困惑的部分是,对于已知度量标准的所有存储桶速率,直方图量化函数如何找到给定度量的第95个百分位数?

有什么代码或算法可以让我更好地理解吗?

3 个答案:

答案 0 :(得分:0)

我相信this是普罗米修斯的代码
一般的想法是,您可以使用存储桶中的数据来推断/近似分位数 Elasticsearch的汇总功能也does something similar(但有所不同/简单得多)

答案 1 :(得分:0)

您必须使用reset,因为可以重置计数器,rate会自动考虑重置并为您提供正确的计数。请记住,在使用计数器之前始终使用速率。

答案 2 :(得分:0)

你可以参考我的回复here

实际上rate()函数只是用来指定时间窗口的,分母对百分位数的计算没有影响。