【问题标题】:Spring Boot Actuator paths not enabled by default?默认情况下未启用 Spring Boot Actuator 路径?
【发布时间】:2017-09-18 15:53:13
【问题描述】:

在将我的 Spring Boot 应用程序更新到最新的构建快照时,我看到默认情况下没有启用任何执行器端点。如果我在application.properties 中指定启用它们,它们就会显示出来。

1) 这种行为是有意的吗?我试图寻找一个问题来解释它,但找不到。有人可以将我链接到问题/文档吗?

2) 有没有办法启用所有执行器端点?我经常发现自己在开发过程中使用它们,并且不想在我的属性文件中维护它们的列表。

【问题讨论】:

    标签: spring-boot spring-boot-actuator


    【解决方案1】:

    这个答案的两个部分:

    “有没有办法启用所有执行器端点?”

    添加此属性endpoints.enabled=true,而不是使用endpoints.info.enabled=trueendpoints.beans.enabled=true 等单独启用它们

    更新:对于 Spring Boot 2.x,相关属性是:

    endpoints.default.web.enabled=true
    

    “这种行为是有意的吗?”

    可能不会。听起来您可能已经发现了最新里程碑的问题。如果您对 Spring Boot 里程碑有可重现的问题,那么 Spring's advice 是 ...

    报告问题

    Spring Boot 使用 GitHub 的集成问题跟踪系统来记录错误和功能请求。如果您想提出问题,请遵循以下建议:

    在您记录错误之前,请search the issue tracker 看看是否有人已经报告了该问题。

    如果问题不存在,create a new issue

    【讨论】:

    • 我想的也差不多。我创建了这个问题:github.com/spring-projects/spring-boot/issues/1033.
    • 似乎我有一些过时的版本,在默认启用 /info/status 之前。更新后一切正常。尽管您应该更新您的答案以包含正确的属性endpoints.default.web.enabled,但我会接受它。
    • @Adam 我已经更新了答案:“更新:对于 Spring Boot 2.x,相关属性是:endpoints.default.web.enabled=true”。
    • 如何在 intellij 中设置?
    【解决方案2】:

    有没有办法启用所有执行器端点?

    使用 Spring Boot 2.2.2 Release,这对我有用:

    在文件 src/main/resources/application.properties 中添加:

    management.endpoints.web.exposure.include=*
    

    要检查启用的端点,请转到http://localhost:8080/actuator

    来源:docs.spring.io

    【讨论】:

      【解决方案3】:

      即使我们启用所有执行器端点如下 management.endpoints.web.exposure.include=*(在 YAML 的情况下,星号应该用双引号括起来作为“*”,因为星号是 YAML 语法中的特殊字符之一)

      默认情况下,httptrace 执行器端点仍不会在 Web 中启用。需要实现HttpTraceRepository接口来启用httptrace(见Actuator default endpointsActuator endpointsActuator httptrace)。

      @Component
      public class CustomHttpTraceRepository implements HttpTraceRepository {
      
          AtomicReference<HttpTrace> lastTrace = new AtomicReference<>();
      
          @Override
          public List<HttpTrace> findAll() {
              return Collections.singletonList(lastTrace.get());
          }
      
          @Override
          public void add(HttpTrace trace) {
              if ("GET".equals(trace.getRequest().getMethod())) {
                  lastTrace.set(trace);
              }
          }
      }
      

      现在可以使用 url 访问端点,

      http://localhost:port/actuator/respective-actuator-endpoint 
      

      (例如 http://localhost:8081/actuator/httptrace)

      如果属性文件中存在 management.servlet.context-path 值,则 URL 将为,

      http://localhost:port/<servlet-context-path>/respective-actuator-endpoint 
      

      (例如 http://localhost:8081/management-servlet-context-path-value/httptrace)

      【讨论】:

        猜你喜欢
        • 2021-08-10
        • 2014-12-17
        • 2017-12-05
        • 2020-02-07
        • 2021-04-30
        • 2016-10-26
        • 2016-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多