Utilisez Spring Boot 2.x Actuator pour surveiller les applications et contrôler UP / DOWN

Le composant de surveillance d'administration de SpringCloud est basé sur l'actionneur d'
actionneur pour signaler l'état de santé au registre (tel qu'Eureka) via le battement de cœur du service

Service ajouter une dépendance

	<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

Point de terminaison par défaut

L'actionneur de Spring Boot 2.0 expose uniquement les points de terminaison d'intégrité et d'informations, et les informations de surveillance fournies ne peuvent pas répondre à nos besoins

Il y a plus de n nœuds à surveiller en 1.x, la réponse officielle est pour la sécurité

Ouvrez tous les points de terminaison

Ajoutez les informations de configuration suivantes dans application.properties

* Signifie que tous les nœuds sont chargés

#开启所有端点
management.endpoints.web.exposure.include=*

test

Ouvrez le service, ouvrez: http: // {hôte}: {port} / actuator

Vous pouvez voir qu'une chaîne JSON est renvoyée, parmi laquelle il y a l'intégrité, qui est l'état d'intégrité du service. Le soi-disant état d'intégrité ne signifie pas que le service est en panne lorsqu'il est en panne. Il se peut que le le service n'est pas en panne, mais MySQL n'est pas connecté, ou des SMS sont envoyés. Le montant a atteint la limite, ceux-ci devront peut-être rendre le service DOWN.

{"_links":{"self":{"href":"http://localhost:81/actuator","templated":false},"archaius":{"href":"http://localhost:81/actuator/archaius","templated":false},"beans":{"href":"http://localhost:81/actuator/beans","templated":false},"caches-cache":{"href":"http://localhost:81/actuator/caches/{cache}","templated":true},"caches":{"href":"http://localhost:81/actuator/caches","templated":false},"health":{"href":"http://localhost:81/actuator/health","templated":false},"health-path":{"href":"http://localhost:81/actuator/health/{*path}","templated":true},"info":{"href":"http://localhost:81/actuator/info","templated":false},"conditions":{"href":"http://localhost:81/actuator/conditions","templated":false},"shutdown":{"href":"http://localhost:81/actuator/shutdown","templated":false},"configprops":{"href":"http://localhost:81/actuator/configprops","templated":false},"env":{"href":"http://localhost:81/actuator/env","templated":false},"env-toMatch":{"href":"http://localhost:81/actuator/env/{toMatch}","templated":true},"loggers":{"href":"http://localhost:81/actuator/loggers","templated":false},"loggers-name":{"href":"http://localhost:81/actuator/loggers/{name}","templated":true},"heapdump":{"href":"http://localhost:81/actuator/heapdump","templated":false},"threaddump":{"href":"http://localhost:81/actuator/threaddump","templated":false},"metrics-requiredMetricName":{"href":"http://localhost:81/actuator/metrics/{requiredMetricName}","templated":true},"metrics":{"href":"http://localhost:81/actuator/metrics","templated":false},"scheduledtasks":{"href":"http://localhost:81/actuator/scheduledtasks","templated":false},"mappings":{"href":"http://localhost:81/actuator/mappings","templated":false},"refresh":{"href":"http://localhost:81/actuator/refresh","templated":false},"features":{"href":"http://localhost:81/actuator/features","templated":false},"service-registry":{"href":"http://localhost:81/actuator/service-registry","templated":false}}}

Ouvrez: http: // {hôte}: {port} / actuator / health, la page s'affiche comme suit, prouvant que le service est disponible

{"status":"UP"}

Commutateur de service de commande à distance

Ajoutez la configuration suivante au fichier de configuration du service application.properties

#可以远程关闭服务节点
management.endpoint.shutdown.enabled=true

Ajouter une classe

package com.bl.eurekaprovider;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Service;

/**
 * @Deacription 改变健康状态的Service
 * @Author BarryLee
 * @Date 2020/6/13 21:30
 */
@Service
public class HealthStatusService implements HealthIndicator {
  private Boolean status = true;

  public void setStatus(Boolean status) {
    this.status = status;
  }

  @Override
  public Health health() {
    if (status) {
      return new Health.Builder().up().build();
    }
    return new Health.Builder().down().build();
  }

  public String getStatus() {
    return this.status.toString();
  }
}

Ajoutez le code suivant au contrôleur

  @Autowired
  private HealthStatusService healthStatusService;
  /**
   * 用来改变当前服务的状态,测试用
   */
  @GetMapping("/health")
  public String health(@RequestParam("status") Boolean status) {
    // 改变状态
    healthStatusService.setStatus(status);
    // 返回当前状态
    return healthStatusService.getStatus();
  }

Accès au navigateur ou au facteur: http: // {hôte}: {port} / health? Status = false

Dans Eureka Server, vous pouvez voir que le service est hors ligne. Si vous souhaitez vous mettre en ligne, définissez-le sur true et il sera de nouveau en ligne dans les 30 secondes. Le fabricant l'ouvrira avec précaution, mais l'intranet n'a pas d'importance.

Je suppose que tu aimes

Origine blog.csdn.net/qq_38238041/article/details/106749040
conseillé
Classement