You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus中Histogram的buckets含义及代码示例疑问

Prometheus Histogram中buckets的含义及代码解析

什么是buckets?

Prometheus的Histogram是用来统计分布类指标(比如请求延迟、处理时长)的类型,buckets就是预先定义的一组阈值(单位和指标一致,这里是秒),用来把采集到的数值划分到不同区间,方便后续计算百分位数、分析数据分布规律。

注意:Histogram的桶是累积型的——每个桶的计数代表「数值≤该桶阈值」的样本总数,比如阈值0.0002的桶,会包含所有≤0.0002秒的请求,其中也包括那些≤0.0001秒的请求。

代码里的bucket值具体代表什么?

看你给出的代码:

LATENCY = Histogram('hello_world_latency_seconds',
    'Time for a request Hello World.',
    buckets=[0.0001, 0.0002, 0.0005, 0.001, 0.01, 0.1])

数组里的每个值都是延迟阈值(单位:秒):

  • 0.0001:代表统计**所有处理时长≤0.0001秒(即100微秒)**的请求数量
  • 0.0002:统计**所有处理时长≤0.0002秒(200微秒)**的请求数量(包含前面≤100微秒的请求)
  • 0.0005:统计≤500微秒的请求数量,以此类推
  • 0.1:统计≤100毫秒的请求数量

@LATENCY.time()的作用

这是Prometheus Python客户端提供的装饰器,用来自动统计被装饰函数的执行时间:

  • 当你把这个装饰器加在某个处理请求的函数上时,每次函数执行完毕,客户端会自动记录函数的运行时长,然后把这个时长值匹配到上面定义的buckets里,更新对应桶的计数。

举个实际例子:
如果某次请求处理花了80微秒(0.00008秒),它会被计入0.0001、0.0002、0.0005……直到0.1的所有桶中;如果某次请求花了0.00015秒,就只会被计入0.0002及更大的桶,不会计入0.0001的桶。

内容的提问来源于stack exchange,提问作者Irina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:49:58