[JAVA] [Spring Boot Actuator] Comment enregistrer manuellement votre propre processus de vérification de l'état

Spring Boot Actuator est un point de terminaison (/ actuator / health) qui fournit l'état de fonctionnement (résultats du contrôle de santé) de l'instance elle-même et des ressources externes (disque, base de données, service de messagerie, service de cache, etc.) qui dépendent de l'instance. , / Actuator / health / {name}), qui peut également fournir son propre état de vérification de l'état.

Comment enregistrer automatiquement votre propre processus de vérification de l'état

Il est introduit dans la référence Spring Boot avec un exemple de code, mais si vous enregistrez une classe qui implémente l'interface HealthIndicator dans le conteneur DI, Spring Boot Actuator la détectera automatiquement.

@Component //Inscription auprès du conteneur DI par analyse des composants
public class MyHealthIndicator implements HealthIndicator {
  @Override
  public Health health() {
    return checkWeatherAvailable() ? Health.up().build(): Health.down().build();
  }
  private boolean checkWeatherAvailable() {
    boolean result = false;
    //Processus de surveillance de la vie et de la mort
    // ...
    return result;
  }
}

Comment enregistrer manuellement votre propre processus de vérification de l'état

Spring Boot Actuator gère les objets qui effectuent le traitement de vérification de l'état dans HealthIndicatorRegistry, et vous pouvez également enregistrer manuellement votre propre traitement de vérification de l'état via HealthIndicatorRegistry obtenu à partir du conteneur DI. Par exemple, si vous souhaitez modifier (augmenter ou diminuer) la cible du traitement de la vérification de l'état en fonction de la valeur définie, vous pouvez utiliser le mécanisme d'enregistrement manuel.

@Configuration
public class MyConfiguration {
  // ...
  @Autowired
  void addExternalServiceHealthIndicators(HealthIndicatorRegistry registry, MyProperties properties) {
    properties.getExternalServices().stream().filter(s -> StringUtils.hasText(s.getHealthCheckUrl()))
        .forEach(s -> registry.register(s.getName(), new UrlBasedHealthIndicator(s.getHealthCheckUrl())));
  }
}
public class UrlBasedHealthIndicator implements HealthIndicator {
  private final String url;
  public UrlBasedHealthIndicator(String url) {
    this.url = url;
  }
  @Override
  public Health health() {
    return checkWeatherAvailable() ? Health.up().build(): Health.down().build();
  }
  private boolean checkWeatherAvailable() {
    boolean result = false;
    //Processus de surveillance de la vie et de la mort
    // ...
    return result;
  }
}

Résumé

Je n'utilise pas Spring Boot comme application commerciale dans le projet dans lequel je suis actuellement impliqué, mais j'utilise un simulateur système externe (principalement utilisé pour les tests ... un simulateur utilisé pour la gestion interne même dans un environnement commercial). Je l'ai créé en, et je voulais créer un mécanisme qui peut augmenter ou diminuer l'état de fonctionnement des ressources manipulées dans le simulateur en fonction de la valeur définie, j'ai donc étudié la méthode de réalisation.

Site de référence

Recommended Posts

[Spring Boot Actuator] Comment enregistrer manuellement votre propre processus de vérification de l'état
Comment créer votre propre contrôleur correspondant à / error avec Spring Boot
[Forge] Comment enregistrer votre propre Entité et Entité Render dans 1.13.2
Comment configurer Spring Boot + PostgreSQL
Comment utiliser ModelMapper (Spring boot)
[Introduction à Spring Boot] Vérification de la validation du formulaire
Comment diviser un fichier de message Spring Boot
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment réduire l'image de Spring Boot Docker
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Comment ajouter un chemin de classe dans Spring Boot
Créez votre propre utilitaire avec Thymeleaf avec Spring Boot
Comment se lier avec un fichier de propriétés dans Spring Boot
[Spring Boot] Comment se référer au fichier de propriétés
Spring Boot - Comment définir le délai d'expiration de la session
Comment implémenter le processus d'authentification en spécifiant le nom d'utilisateur et le mot de passe dans Spring Boot
Comment définir l'injection de dépendance Spring Boot (DI)
Comment écrire un test unitaire pour Spring Boot 2
[Spring Boot] Comment créer un projet (pour les débutants)
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment démarrer par environnement avec Spring Boot de Maven
Comment lire votre propre fichier YAML (*****. Yml) en Java
Comment appeler et utiliser l'API en Java (Spring Boot)
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional
Essayez Spring Boot de 0 à 100.
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Comment vérifier la version JSF
Introduction à Spring Boot, partie 1
Comment créer un hinadan pour un projet Spring Boot à l'aide de SPRING INITIALIZR
Comment faire coexister CsrfRequestDataValueProcessor et RequestDataValueProcessor original sur Spring Boot
Actionneur Spring Boot 2.0, 3 changements à connaître pour le faire fonctionner