gpt4 book ai didi

java - 将 Spring Boot Actuator/health 和/info 合二为一

转载 作者:行者123 更新时间:2023-12-05 07:28:38 31 4
gpt4 key购买 nike

我们目前有一个框架来检查我们的微服务,并检查 URL 以获取有关我们应用程序的健康信息和信息。这里的限制是这个框架只能检查 1 个 URL。

我想做的是将/health 和/info 的信息合并为一个,让/health 也显示/info 的信息,最显着的是已部署应用程序的版本。是否可以开箱即用,或者我应该创建自己的健康检查来显示此信息?

最佳答案

我不认为您可以通过开箱即用的任何配置来实现此目的,但是您应该能够编写自己的 healthendpoint 来实现此目的。以下对我有用。

Spring 1.5.x

@Component
public class InfoHealthEndpoint extends HealthEndpoint {

@Autowired
private InfoEndpoint infoEndpoint;

public InfoHealthEndpoint(HealthAggregator healthAggregator, Map<String, HealthIndicator> healthIndicators) {
super(healthAggregator, healthIndicators);
}

@Override
public Health invoke() {
Health health = super.invoke();
return new Health.Builder(health.getStatus(), health.getDetails())
.withDetail("info", infoEndpoint.invoke())
.build();
}

}

Spring 2.x

public class InfoHealthEndpoint extends HealthEndpoint {

private InfoEndpoint infoEndpoint;

public InfoHealthEndpoint(HealthIndicator healthIndicator, InfoEndpoint infoEndpoint) {
super(healthIndicator);
this.infoEndpoint = infoEndpoint;
}

@Override
@ReadOperation
public Health health() {
Health health = super.health();
return new Health.Builder(health.getStatus(), health.getDetails())
.withDetail("info", this.infoEndpoint.info())
.build();
}

}

@Configuration
class HealthEndpointConfiguration {

@Bean
@ConditionalOnEnabledEndpoint
public HealthEndpoint healthEndpoint(HealthAggregator healthAggregator,
HealthIndicatorRegistry registry, InfoEndpoint infoEndpoint) {
return new InfoHealthEndpoint(
new CompositeHealthIndicator(healthAggregator, registry), infoEndpoint);
}

}

然后,如果您需要将它添加到多个微服务,您应该能够创建自己的 jar 来自动配置此端点以替换执行器默认的健康检查。

关于java - 将 Spring Boot Actuator/health 和/info 合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53275885/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com