2017-10-19 6 views
0

私はpython-prometheus libを使ってAPIヘルスを計測しようとしています。私はdocumentationの指示に従ってAPIの応答時間のためプロメテウスヒストグラムを使用して、私は私が事前設定のヒストグラムを期待していcodeにバケットロジックを経てメトリックprometheus_python instrumentation - ヒストグラムでバケット化

期待される動作

のHTTPエクスポートをしていました応答時間のバケツ。私は、1,330,10、Inf(1s/3s/5s以下)のバケットを定義しました。

リクエストが2秒かかる場合は、 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を取ったサンプル要求については

enter image description here

enter image description here

前と後の合計。

5秒、10秒、Infバケットも更新されています。私はバケット> = 3.1がどこでどのように更新されているのかを見つけようとしています。

その他の詳細:

のpython - プロメテウスが

バージョン情報マルチモードで使用されている: - 2.7

  • prometheus_client [Pythonの] - 0.0.21
    1. パイソン

    答えて

    0

    leはそれ以下であるため、t彼は期待される行動です。 histogram_quantile関数はこれを自動的に処理するので、この実装の詳細を心配する必要はありません。

    この理由は、ヒストグラムにバケットが多すぎると、摂取側にいくつかのバケットを安全に削除できるようにするためです。

    +0

    @ brian-brazilに感謝の意地をお寄せいただきありがとうございます。コードを少し深く見れば、各エントリは1回だけバケツに見えるように見えます。コードスニペットで質問を更新しようとしましょう。 –

    +0

    私はその動作が "le"であると理解しているので、期待どおりに動作しています。私はどのコードがその部分をしているのか不思議です。私が強調しているものは、1つのバケツだけを満たしています。 –

    +0

    展示コードを見てください。 –

    関連する問題