prometheus_python仪器 - 直方图中的Bucketing
问题描述:
我正在尝试使用python-prometheus lib来检测API健康状况。我使用的指示在documentation的API响应时间普罗米修斯直方图和做指标prometheus_python仪器 - 直方图中的Bucketing
预期的行为
的HTTP导出我经历了桶装逻辑就在code我期待预先设定的直方图响应时间的桶。我定义了1,3,5,10,Inf(大于10s)的桶(即小于或等于1s/3s/5s)
所以如果我只有一个请求花费2s, 3s桶的频率为1,其他桶为零。
代码片段在瓢泼大雨
def observe(self, amount):
'''Observe the given amount.'''
self._sum.inc(amount)
for i, bound in enumerate(self._upper_bounds):
if amount <= bound:
self._buckets[i].inc(1)
break
我想休息,确保桶装只发生一次的一个实例。
响应时间:
之前
对于花3.1s,如果我们能减去后期的样本请求后从前后的总和,
5s,10s和Inf桶正在更新。我正在寻找哪里以及如何桶> = 3.1s正在更新。
其他信息:
蟒蛇 - 普罗米修斯的多进程模式下使用
版本信息:
- 的Python - 2.7
- prometheus_client [Python的 - 0.0.21
答
le
代表小于或等于,所以t他是预期的行为。 histogram_quantile
函数自动处理它,所以你不需要担心这个实现细节。
这个原因是这样的,所以如果一个柱状图有太多的桶,你可以放心地把它们放在摄取端。
感谢评论@ brian-brazil。如果我们深入了解代码,它看起来似乎是每个条目似乎只有一次。让我试着用代码片段来更新这个问题。 –
我了解行为是“乐”,所以它按预期工作。我很好奇哪一部分代码。我强调的一个,只填充一个桶。 –
看看博览会的代码。 –