Объедините Spring Boot Actuator / Health и / Info в одном - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время у нас есть структура, которая проверяет наши микросервисы и проверяет URL-адрес для получения информации о состоянии и информации о наших приложениях.Ограничение здесь состоит в том, что эта структура может проверять только 1 URL.

Что я хотел бы сделать, так это объединить информацию о / health и / info в один, и чтобы / health также показывал информацию о /информация, особенно версия развернутого приложения.Возможно ли что-то подобное из коробки, или я должен создать свою собственную проверку здоровья, которая отображает эту информацию?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я не верю, что есть какая-либо конфигурация, которую вы можете сделать из коробки для достижения этой цели, однако вы должны быть в состоянии написать свою собственную точку исцеления, которая достигает этого. Ниже работает для меня.

Пружина 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();
    }

}

Пружина 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-файл, который автоматически конфигурирует эту конечную точку для замены проверки работоспособности по умолчанию для исполнительных механизмов.

0 голосов
/ 13 ноября 2018

Вы можете добавить приведенный ниже фрагмент в файл application.yml для интеграции конечной точки / health и / info в качестве конечной точки / info.

info:
  build:
    artifact: @project.artifactId@
    version: @project.version@
    status: UP
...