根据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
最后,最令人困惑的部分是histogram_quantile函数如何在知道所有桶速率的情况下找到给定度量的第95百分位数?
是否有任何代码或算法可以让我们更好地理解它?
我相信this是普罗米修斯的代码 一般的想法是你使用桶中的数据推断/近似分位数Elasticsearch和does something similar(但不同/更简单)的汇总功能