有没有办法将 Micrometer @Timed 注释捕获到 Prometheus 指标存储/注册表中? [复制]

Posted

技术标签:

【中文标题】有没有办法将 Micrometer @Timed 注释捕获到 Prometheus 指标存储/注册表中? [复制]【英文标题】:Is there a way to capture the Micrometer @Timed annotation into the Prometheus metrics store/registry? [duplicate] 【发布时间】:2019-10-25 07:15:36 【问题描述】:

我想将 Micrometer 的 @Timed 注释中的数据捕获到 Prometheus 指标存储/注册表中。我在网上找不到任何关于如何做到这一点的解释。

这些是我正在使用的版本:

compile 'org.springframework.boot:spring-boot-starter-web:2.1.4.RELEASE' // This already includes micrometer I believe
compile "io.micrometer:micrometer-registry-prometheus:1.1.4'

我正在尝试为存储库调用计时:

interface HouseRepository  

@Timed
@Query(some long complicated query)
House deleteByAddressAndLastModifiedBefore(
    Address address,
    Instant instant
)


我该怎么做?我尝试在 @Timer 注释中添加一些不同的配置,例如:

  @Timed(description = 'this.is.my.metric', value = 'my.metric', extraTags = ['my.metric.name', 'test'])

但我在 Prometheus (/prometheus) 中看不到我的输出。

当然,这是可能的吗?

【问题讨论】:

这能回答你的问题吗? @Timed annotation in spring metrics 【参考方案1】:

根据micrometer docs:

Micrometer 的 Spring Boot 配置无法识别任意方法上的 @Timed。

要使@Timed 注释按您的意愿工作,您可能需要配置一个TimedAspect bean。

@Configuration
public class TimedConfiguration 
   @Bean
   public TimedAspect timedAspect(MeterRegistry registry) 
      return new TimedAspect(registry);
   

应用TimedAspect 使@Timed 可用于任意方法。

【讨论】:

以上是关于有没有办法将 Micrometer @Timed 注释捕获到 Prometheus 指标存储/注册表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在普罗米修斯中显示任意@Timed 指标

千分尺@Timed 注释

Spring Boot Actuator/Micrometer Metrics 禁用一些

Spring中注解处理的顺序(@Cacheable和@Timed)

Grafana 中的操作单元

使用 Micrometer 发布 Spring Batch 指标