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
相关产品推荐
相关产品推荐

