我相信遵循了几乎所有的教程在互联网上,并阅读了许多如此的答案,但我仍然卡住了。
1.简单的运行状况检查
@Component
public class HealthCheck implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
2. Application.yaml配置为显示所有详细信息:
management.endpoints.web.exposure.include: "*"
management.endpoint.health.show-details: ALWAYS
3.Spring Boot致动器作为从属项包括在内:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
4.最新版本的Spring Boot :
id 'org.springframework.boot' version '2.2.0.RELEASE'
5.主应用程序类注解为@SpringBootApplication
(这会隐式引入@ComponentScan
)。
@SpringBootApplication
public class PaymentServiceApplication {
public static void main(String[] args) {
SpringApplication.run(PaymentServiceApplication.class, args);
}
}
我的自定义健康检查必须测试Kafka,但为了简洁起见,我省略了细节,但调用/actuator/health
端点时,我得到了相同的默认结果:
{
"status": "UP",
"components": {
"diskSpace": {
"status": "UP",
"details": {
"total": 250685575168,
"free": 99168997376,
"threshold": 10485760
}
},
"ping": {
"status": "UP"
}
}
}
有什么我可能错过了吗?
4条答案
按热度按时间wnvonmuf1#
我找到了解决方案,但不确定原因。这个类确实没有注册为bean,令人惊讶的是,显式添加base packages属性有帮助:
有趣的是,没有必要在不同的项目中做上述工作。
zzlelutf2#
有趣的是,HealthIndicator的基本包不能被应用程序容器识别,而不是将类声明为@component Stereotype。
修复了以下问题-在Main Sping Boot 应用程序类中声明HealthIndicator的基础包:@SpringBootApplication(scanBasePackages =“类运行状况检查的基础包”)公共类支付服务应用程序{
}
编辑:注意-基本包="”的上述声明不是主 Spring Boot 类是不必要的。
您必须停止SERVER,然后完全构建maven应用程序,然后重新启动服务器并重新运行应用程序
现在可以运行查找自定义健康终结点。
f45qwnt83#
我也遇到问题,我想念的是
a11xaf1n4#
这可以通过添加以下代码来解决:
然而,这也带来了另一个问题。当调用/actuator/health端点时,您会看到所有的细节,这对我来说是个问题。我想要实现的是只看到两个端点的状态。