我们目前拥有一个框架,该框架可检查微服务,并检查URL以获取有关运行状况的信息和有关我们应用程序的信息。这里的限制是该框架只能检查1个URL。
我想做的是将/ health和/ info的信息合并为一个,并让/ health还显示/ info的信息,尤其是已部署应用程序的版本。可能是这样的事情吗?还是我应该创建自己的运行状况检查来显示此信息?
答案 0 :(得分:0)
您可以将以下代码段添加到application.yml文件中,以将/ health和/ info端点集成为/ info端点。
info:
build:
artifact: @project.artifactId@
version: @project.version@
status: UP
答案 1 :(得分:0)
我不认为您可以直接进行任何配置来实现此目标,但是您应该能够编写自己的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,该jar可自动配置此端点以替换执行器默认的运行状况检查。