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 

我想休息,确保桶装只发生一次的一个实例。

响应时间:

之前

enter image description here

enter image description here

对于花3.1s,如果我们能减去后期的样本请求后从前后的总和,

5s,10s和Inf桶正在更新。我正在寻找哪里以及如何桶> = 3.1s正在更新。

其他信息:

蟒蛇 - 普罗米修斯的多进程模式下使用

版本信息:

  1. 的Python - 2.7
  2. prometheus_client [Python的 - 0.0.21

le代表小于或等于,所以t他是预期的行为。 histogram_quantile函数自动处理它,所以你不需要担心这个实现细节。

这个原因是这样的,所以如果一个柱状图有太多的桶,你可以放心地把它们放在摄取端。

+0

感谢评论@ brian-brazil。如果我们深入了解代码,它看起来似乎是每个条目似乎只有一次。让我试着用代码片段来更新这个问题。 –

+0

我了解行为是“乐”,所以它按预期工作。我很好奇哪一部分代码。我强调的一个,只填充一个桶。 –

+0

看看博览会的代码。 –