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

问题描述 投票:2回答:2

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

java monitoring grafana prometheus
2个回答
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])

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

© www.soinside.com 2019 - 2024. All rights reserved.