将Spring Boot Actuator / health和/ info合并为一个

时间:2018-11-13 07:27:46

标签: java spring-boot spring-boot-actuator

我们目前拥有一个框架,该框架可检查微服务,并检查URL以获取有关运行状况的信息和有关我们应用程序的信息。这里的限制是该框架只能检查1个URL。

我想做的是将/ health和/ info的信息合并为一个,并让/ health还显示/ info的信息,尤其是已部署应用程序的版本。可能是这样的事情吗?还是我应该创建自己的运行状况检查来显示此信息?

2 个答案:

答案 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可自动配置此端点以替换执行器默认的运行状况检查。