这是我在 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。我在配置中尝试了很多组合,但没有任何效果。你能告诉我该怎么办吗?
我对这个问题进行了更深入的研究,因为我发现它是
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 遇到过一两次这个问题。
如果您使用 spring 2.3.2 或更高版本,请添加以下属性:
management.endpoint.health.probes.enabled=true
management.health.livenessState.enabled=true
management.health.readinessState.enabled=true
由于 build.gradle 文件中缺少执行器依赖项,我返回了 404。如果其他一切看起来都很好,如上面的修复中所述,请在 gradle build 的依赖项下添加以下行。
实现“org.springframework.boot:spring-boot-starter-actuator”