eureka无法知道服务的状态,可使用actuator查询到服务的状态
eureka服务器
不用引入包,因为在引入eureka时,已包含了。因此eureka服务器不用做修改。
服务
引入依赖
<!-- Spring Boot2.x Actuator监控应用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
添加配制
#可以上报服务的真实健康状态--使用的health端点上报的
eureka.client.healthcheck.enabled=true
添加一个可进行手动设置up、down线功能的代码,此处所描述的up、down只是逻辑形式,而非物理形式,如果down,只是服务告知eureka服务器,当前状态为down,而非物理上的服务停止
/**
* 手动设置服务的上下线
* @author Sam
*
*/
@Service
public class HealthStatusService implements HealthIndicator {
private Boolean status = true;
public void setStatus(Boolean status) {
this.status = 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();
}
}
@GetMapping("/health")
public String health(@RequestParam("status") Boolean status) {
healthStatusSrv.setStatus(status);
return healthStatusSrv.getStatus();
}
访问:http://localhost:8080/health?status=false
eureka中的显示
还有很多的信息,可通过url进行查询,默认情况下,只暴health和info端点,更多的端点需要我们手动来开启
而shutdown用于关闭服务的(注:是物理关闭),需要单独开启,同时访问时,只可以post访问,get访问不到
在服务中加入配制
#开启所有端点
management.endpoints.web.exposure.include=*
#开启shutdown端点--只可使用post来访问
management.endpoint.shutdown.enabled=true
访问: http://localhost:8080/actuator
可查看所有端点
Health
会显示系统状态
{"status":"UP"} or {"status":"DOWN"}
shutdown
用来关闭节点
开启远程关闭功能
autoconfig
获取应用的自动化配置报告 beans
获取应用上下文中创建的所有Bean
configprops
获取应用中配置的属性信息报告
env
获取应用所有可用的环境属性报告
Mappings
获取应用所有Spring Web的控制器映射关系报告
info
获取应用自定义的信息
metrics
返回应用的各类重要度量指标信息
Metrics节点并没有返回全量信息,我们可以通过不同的key去加载我们想要的值
如:
metrics/jvm.memory.max
Threaddump
1.x中为dump
返回程序运行中的线程信息