繁体   English   中英

有没有一种方法可以使用Prometheus记录经过的时间

[英]Is there a way to record elapsed time using Prometheus

我有一个使用Prometheus进行检测的spring-boot应用程序,用于收集度量标准数据。 普罗米修斯有一些指标,例如“ Counter可以很好地计算发生某事的次数,“ Gauge可以保持计数,但可以减少,等等。是否有一个指标可以让我跟踪某事物的请求持续时间? 例如,假设我要记录一次api调用到api返回响应之间所花费的时间。 我如何跟踪从进行调用到收到api响应之间的时间? 然后,可以创建一个图形,在该图形上的Y坐标上,我可以列出响应所花费的时间(以秒或毫秒为单位); 然后在X轴上显示时间戳(收集度量标准的时间)吗?

对于计时事件大小(例如api延迟),您可能需要Summary

然后,您可以使用以下方法计算总平均延迟时间

  sum without (instance)(rate(my_summary_latency_seconds_sum[5m]))
/
  sum without (instance)(rate(my_summary_latency_seconds_count[5m])

正如您提到的 ,您应该真正看一下Micrometer项目。 它提供了支持Prometheus的供应商中立度量标准API。 千分尺具有用于计时器的特定仪表原语:

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),OOB包含对micrometer的支持以及spring-boot-starter-actuator

正如您提到的计时API请求一样,我假设您正在使用Spring MVC。 有自动定时这些功能。 (你得到一个count为每个URI,一个sum请求的持续时间和作为一个额外的,一个max的时间窗口期间跟踪滚动最大。)

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

看一下文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM