如何正确使用 java 客户端的 Prometheus 直方图来跟踪大小而不是延迟?
How to correctly use Prometheus Histogram from java client to track size rather than latency?
我有一个处理集合的 API。
这个API的执行时间和集合大小有关(集合越大,耗时越多)
我正在研究如何使用 prometheus 做到这一点,但不确定我是否正确地做事(这方面的文档有点缺乏)。
我做的第一件事是定义一个摘要指标来衡量 API 的执行时间。我正在使用规范率(总和)/率(计数),如 here.
所述
现在,因为我知道延迟可能会受到输入大小的影响,所以我还想在平均执行时间上叠加请求 size。因为我不想测量每个可能的尺寸,所以我想我会使用直方图。像这样:
Histogram histogram = Histogram.build().buckets(10, 30, 50)
.name("BULK_REQUEST_SIZE")
.help("histogram of bulk sizes to correlate with duration")
.labelNames("method", "entity")
.register();
注意:术语'size' 不与字节大小有关,但与有关需要处理的集合长度。 2 件、5 件、50 件...
在执行过程中我做了(简化):
@PUT
void process(Collection<Entity> entitiesToProcess, string entityName){
Timer t = summary.labels("PUT_BULK", entityName).startTimer()
// process...
t.observeDuration();
histogram.labels("PUT_BULK", entityName).observe(entitiesToProcess.size())
}
问题:
- 稍后,当我查看 Grafana 中的 BULK_REQUEST_SIZE_bucket 时,我发现所有存储桶都具有相同的值,很明显我做错了什么。
- 是否有更规范的方法来做到这一点?
您的代码是正确的(尽管 bulk_request_size_bytes
是更好的指标名称)。
问题可能是您的存储桶不是最理想的,因为 10、30 和 50 字节对于大多数请求大小来说都非常小。我会尝试覆盖更多典型值的更大存储桶大小。
我有一个处理集合的 API。 这个API的执行时间和集合大小有关(集合越大,耗时越多)
我正在研究如何使用 prometheus 做到这一点,但不确定我是否正确地做事(这方面的文档有点缺乏)。
我做的第一件事是定义一个摘要指标来衡量 API 的执行时间。我正在使用规范率(总和)/率(计数),如 here.
所述现在,因为我知道延迟可能会受到输入大小的影响,所以我还想在平均执行时间上叠加请求 size。因为我不想测量每个可能的尺寸,所以我想我会使用直方图。像这样:
Histogram histogram = Histogram.build().buckets(10, 30, 50)
.name("BULK_REQUEST_SIZE")
.help("histogram of bulk sizes to correlate with duration")
.labelNames("method", "entity")
.register();
注意:术语'size' 不与字节大小有关,但与有关需要处理的集合长度。 2 件、5 件、50 件...
在执行过程中我做了(简化):
@PUT
void process(Collection<Entity> entitiesToProcess, string entityName){
Timer t = summary.labels("PUT_BULK", entityName).startTimer()
// process...
t.observeDuration();
histogram.labels("PUT_BULK", entityName).observe(entitiesToProcess.size())
}
问题:
- 稍后,当我查看 Grafana 中的 BULK_REQUEST_SIZE_bucket 时,我发现所有存储桶都具有相同的值,很明显我做错了什么。
- 是否有更规范的方法来做到这一点?
您的代码是正确的(尽管 bulk_request_size_bytes
是更好的指标名称)。
问题可能是您的存储桶不是最理想的,因为 10、30 和 50 字节对于大多数请求大小来说都非常小。我会尝试覆盖更多典型值的更大存储桶大小。