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.