使用Timer
作为timer.record()
,得到如下结果
method_metrics_seconds_max{application="mydemo",class="com.demo.service.Impl.MetricsDemoService2Impl",method="getMethod1",} 0.21
method_metrics_seconds_count{application="mydemo",class="com.demo.service.Impl.MetricsDemoService2Impl",method="getMethod4",} 1.0
method_metrics_seconds_sum{application="mydemo",class="com.demo.service.Impl.MetricsDemoService2Impl",method="getMethod4",} 3.603
但是我想要得到真实的执行时间
我找了很多资料,但是没有找到
指标基本上是时间上的聚合数据点。我认为您要求的是原始数据(不是聚合数据)。尽管度量库不会向您提供原始数据(因为它们正在聚合数据),但是您有两个选项:
- 你可以使用百分位直方图(推荐),这样你就可以看到请求的数量,例如落在100到200ms之间,你也可以在后端计算百分位
- 您可以使用客户端百分位数(不推荐),以便您可以看到百分位数值
- 将数据推送到日志中(不推荐)
- 使用Spring Cloud Sleuth,这是我们的分布式跟踪解决方案,它可以记录单独HTTP请求的持续时间
- 您可以使用Micrometer的新观察API并记录数据,但您愿意(将推荐一旦发布:大约2022年底,Spring Boot 3也将支持此)