有没有办法使用普罗米修斯记录经过的时间

时间:2017-12-18 22:10:30

标签: java monitoring grafana prometheus

我有一个spring-boot应用程序,我使用Prometheus来收集指标数据。普罗米修斯有Counter这样的指标,可用于计算事件发生的次数,Gauge也可以计算,但可以减少,等等。是否有一个指标可以让我跟踪请求持续时间的东西?例如,假设我想记录进行api调用和api返回响应之间所需的时间。如何跟踪通话和收到api响应之间的时间?然后,是否可以创建一个图形,在Y坐标上,我可以列出响应所用的时间长度(以秒或毫秒为单位);然后在X轴上显示时间戳(收集度量标准的时间)?

2 个答案:

答案 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)

当你提到时,你应该真正关注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,用于在时间窗口内跟踪滚动最大值。)

如果您还想计算服务器端请求延迟百分位数,您也可以启用直方图存储桶的生成。

查看documentation