2017-10-19 43 views
0

我正在嘗試使用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

回答

0

le代表小於或等於,所以t他是預期的行爲。 histogram_quantile函數自動處理它,所以你不需要擔心這個實現細節。

這個原因是這樣的,所以如果一個柱狀圖有太多的桶,你可以放心地把它們放在攝取端。

+0

感謝評論@ brian-brazil。如果我們深入瞭解代碼,它看起來似乎是每個條目似乎只有一次。讓我試着用代碼片段來更新這個問題。 –

+0

我瞭解行爲是「樂」,所以它按預期工作。我很好奇哪一部分代碼。我強調的一個,只填充一個桶。 –

+0

看看博覽會的代碼。 –