【发布时间】:2017-10-19 10:33:20
【问题描述】:
我正在尝试使用 python-prometheus 库检测 API 运行状况。我按照documentation 中的指示使用普罗米修斯直方图获取 API 响应时间,并进行了 http 指标导出
预期行为
我查看了code 中的分桶逻辑,我期待一个预设响应时间桶的直方图。我为1,3,5,10,Inf(大于10s)定义了bucket(即小于等于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
我认为 break 确保对一个实例只进行一次分桶。
响应时间:
之前
之后
对于一个耗时 3.1 秒的示例请求,如果我们可以从前后减去延迟总和,
5s、10s 和 Inf 存储桶也在更新。我正在寻找 >= 3.1 的存储桶的更新位置和方式。
其他细节:
python - prometheus 用于多进程模式
版本信息:
- Python - 2.7
- prometheus_client [Python] - 0.0.21
【问题讨论】:
标签: python prometheus