我有一个spring-boot应用程序,我使用Prometheus
来收集指标数据。普罗米修斯有Counter
这样的指标,可用于计算事件发生的次数,Gauge
也可以计算,但可以减少,等等。是否有一个指标可以让我跟踪请求持续时间的东西?例如,假设我想记录进行api调用和api返回响应之间所需的时间。如何跟踪通话和收到api响应之间的时间?然后,是否可以创建一个图形,在Y
坐标上,我可以列出响应所用的时间长度(以秒或毫秒为单位);然后在X
轴上显示时间戳(收集度量标准的时间)?
答案 0 :(得分:3)
对于计时事件大小,例如api延迟,您可能需要Summary
。
然后,您可以使用
计算aggregate average latency sum without (instance)(rate(my_summary_latency_seconds_sum[5m]))
/
sum without (instance)(rate(my_summary_latency_seconds_count[5m])
答案 1 :(得分:3)
当你提到spring-boot时,你应该真正关注Micrometer项目。它提供了供应商中立的度量API,支持Prometheus。千分尺具有针对定时器的特定仪表原语:
Timer
.builder("my.timer")
.tags("uri", "/api/endpoint")
.register(registry)
.record(() -> {
/* do something */
});
// or
registry.timer("my.timer", "uri", "api/endpoint").record(() -> {
/* do something */
});
对于Spring-Boot 1.5项目,您将使用micrometer-spring-legacy
依赖项。对于Spring-Boot 2(截至本文撰写时为2.0.0.M7),Micrometer支持包括OOTB和spring-boot-starter-actuator
。
当你提到计时API请求时,我假设你正在使用Spring MVC。这些时间有自动支持。 (每个URI都会获得count
,请求持续时间为sum
,额外的是max
,用于在时间窗口内跟踪滚动最大值。)
如果您还想计算服务器端请求延迟百分位数,您也可以启用直方图存储桶的生成。