弹簧执行器的活跃度和就绪度正在恢复 404

问题描述 投票:0回答:3

这是我在 application.yaml 中的配置:

management:
  endpoint:
    health:
      show-details: "ALWAYS"
      probes:
        enabled: true
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: metrics, health, caches, restart

根据文档,这应该足以为 Spring 应用程序启用活性和就绪性探测。但是端点(

/actuator/health/liveness
/actuator/health/readiness
)仍然返回404。我在配置中尝试了很多组合,但没有任何效果。你能告诉我该怎么办吗?

java spring spring-boot kubernetes spring-boot-actuator
3个回答
10
投票

我对这个问题进行了更深入的研究,因为我发现它是

spring-boot-actuator
的一个有趣的功能。 根据我的研究,我发现
liveness
readiness
的此功能已在
spring-boot:2.3.0
中引入,因此,如果您使用的是旧版本,这可能是您在执行以下操作时未收到预期结果的原因:
GET /actuator/health/readiness

如果您将

spring-boot
版本升级到 >= 2.3.0,您可以通过添加以下内容来启用活性和就绪探针:

management:
  health:
    probes:
      enabled: true

到您的 application.yaml 文件。 这样做之后你应该能够

GET /actuator/health

{
    "status": "UP",
    "groups": [
        "liveness",
        "readiness"
    ]
}

但是,对于 spring-boot 版本 >= 2.3.2,建议通过在 application.yaml 中使用以下内容来启用探测器

management:
  endpoint:
    health:
      probes:
        enabled: true 

这样做的原因是一个错误,您可以在此处阅读更多信息

额外提示:如果您的

spring-boot
版本 >= 2.3.0,您已经相应地配置了 application.yaml 文件,并且当您 GET /actuator/health/liveness 您的应用程序有很小的机会时,您仍然会收到
404
。 Spring 上下文没有获取 yaml 文件。您可以通过更改应用程序的端口来检查是否是这种情况

server:
  port: 8081

如果您的应用程序没有在不同的端口上启动,则可以肯定地说您的任何配置都没有发生。 我的 IDE 遇到过一两次这个问题。


6
投票

如果您使用 spring 2.3.2 或更高版本,请添加以下属性:

management.endpoint.health.probes.enabled=true
management.health.livenessState.enabled=true
management.health.readinessState.enabled=true

0
投票

由于 build.gradle 文件中缺少执行器依赖项,我返回了 404。如果其他一切看起来都很好,如上面的修复中所述,请在 gradle build 的依赖项下添加以下行。

实现“org.springframework.boot:spring-boot-starter-actuator”

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