【问题标题】:Springboot: micrometer metrics not showing upSpring Boot:千分尺指标未显示
【发布时间】:2022-02-03 17:00:34
【问题描述】:

我正在编写我的第一个 spring boot (2.6.3) 应用程序。

这里是我正在使用的相关依赖项:

<dependencyManagement>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.6.3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>        

我暴露了actuator的所有功能:

management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: '*'
  info:
    env:
      enabled: true

所以我可以看到 url /actuator 列出的所有端点。

现在,我在一些方法中添加了一些注释,例如 @Counted@Timed,我调用了它们,但它们没有出现在 /actuator/metrics中。

我该如何解决这个问题?

非常感谢您!

【问题讨论】:

标签: java spring-boot metrics spring-boot-actuator


【解决方案1】:

您是否知道 @Timed 注释仅在 @Controller 类和 @RequestMapping 方法上受支持?

https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.metrics.supported.spring-mvc

我不确定@Counted是否默认支持。

编辑: @Counted 注解默认不起作用。 要使其正常工作,您需要将 CountedAspect 添加到您的上下文中。

见:https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/aop/CountedAspect.java

另外,@Counter 自动配置还有一个未解决的问题:https://github.com/spring-projects/spring-boot/issues/17260

【讨论】:

  • 我使用委托模式通过 Maven OpenAPI 生成器插件生成了所有的东西。它生成 API 接口,由 Controller 实现,后者使用我的委托,我在其中放置了仪表注释。他们可以在这里工作吗?
【解决方案2】:

通过添加以下内容解决:

@Bean
CountedAspect countedAspect(MeterRegistry registry) {
    return new CountedAspect(registry);
}
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.13</version>
</dependency>

它也适用于 OpenAPI 委托。

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 2020-03-15
    • 2019-02-22
    • 1970-01-01
    • 2022-12-22
    • 2021-02-28
    • 2022-06-22
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多