Spring Boot 2 - 执行器指标端点不起作用

问题描述 投票:17回答:8

在我设置的Spring Boot App(2.0.0.M7)application.properties中

management.endpoint.metrics.enabled=true

但是,当我击中时

localhost:8080/actuator/metrics 

我得到404。

什么是解决方案?

spring-boot spring-boot-actuator
8个回答
44
投票

我想用更多的信息来增强OP的答案,因为我在最终绊倒这个解决方案之前有点挣扎,并且似乎有很多关于使用Spring Boot 2改变执行器行为的困惑

没有改变的是什么

您需要在spring-boot-starter-actuator中包含依赖项

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

如果要通过HTTP访问执行器端点,还需要向spring-boot-starter-web添加依赖项

所以你的pom依赖关系将如下所示

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

Spring Boot 2中引入的更改

  1. /health/metrics等端点在默认的根上下文中不再可用。它们从现在开始在http://{host}:{port}/actuator上市。此外,您的应用程序的所有其他端点是否以某些其他上下文开头并不重要,例如/hello - 执行器可在/actuator而不是/hello/actuator获得。
  2. /actuator端点的响应默认启用HATEOAS。在Spring Boot 2之前,if HATEOAS is on the classpath and explicitly enabled只有application.yml
  3. 要通过HTTP提供执行器端点,需要同时启用和公开。 默认情况下: 无论在您的应用程序中存在和配置Spring Security,都只暴露/health/info端点。 所有端点,但/shutdown启用(虽然只暴露/health/info
  4. 如果你想暴露所有的端点(并不总是一个好主意),你可以通过将management.endpoints.web.exposure.include=*添加到application.properties来实现。如果您使用的是yml-configurations,请不要忘记引用通配符。
  5. endpoints.xyz开头的旧属性不推荐使用以management.xyz开头的属性

有关完整文档,请参阅official doc以及migration guide


7
投票

将以下行添加到application.properties文件中:

management.endpoints.web.exposure.include=metrics

就这样。


6
投票

对我有用的是以下(以YAML格式)使用spring boot 2版本:

management:
  endpoints:
    web:
      exposure:
        include: info, health, metrics
  metrics:
    export:
      atlas:
        enabled: false

也可以找到具体的文件here


3
投票

您需要在application.properties文件中添加以下道具。在我添加以下道具之前,我遇到了同样的问题。

management.endpoints.beans.enabled=false
management.endpoints.web.exposure.include=*

3
投票

“*”在YAML中具有特殊含义,因此如果要包含(或排除)所有端点,请务必添加引号,如以下示例所示:

management:
  endpoints:
    web:
      exposure:
        include: "*"

2
投票

好的,我找到了解决方案。我在application.properties中添加了另一行

management.endpoints.web.expose=*

但是,确保执行器端点很重要

在这里阅读:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html


1
投票

根据micrometer docs .Spring Boot 2.0.x通过Spring Boot Actuator开箱即用。 默认情况下,端点度量标准处于禁用状态,与Spring Boot 2的试金石一致,默认情况下应禁用任何可能暴露应用程序敏感数据的端点。可以通过设置启用它:

management.endpoints.web.exposure.include:metrics

导航到/actuator/metrics会显示可用的仪表名称列表。

要访问它们,请使用以下内容:http://localhost:8080/actuator/metrics/jvm.memory.used


1
投票

有同样的问题从Spring Boot 1.5.15升级到2.1.4

需要修改我的pom.xml中Spring Boot执行器的原始依赖关系:

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

至:

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

注意在starter中添加了artifactId这个词。

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