Eureka客户端健康监测

本文介绍了如何在Spring Cloud Eureka中集成spring-boot-actuator模块以实现服务的状态页和健康检查功能。通过配置和自定义HealthIndicator,可以确保Eureka客户端能够正确报告其健康状况。

状态页和健康检查的URL在Spring Cloud Eureka中默认使用了spring-boot-actuator模块提供的/info端点和/health端点。为了服务的正常运作,我们必须确保Eureka客户端的/health端点在发送元数据的时候,是一个能够被注册中心访问到的地址,否则服务注册中心不会根据应用的健康检查来更改状态而/info端点如果不正确的话,会导致Eureka面板中单击服务实例时,无法访问到服务实例提供的信息接口。

客户端服务提供者pom文件添加springboot的监测中心actuator:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
			<version>1.5.4.RELEASE</version>
		</dependency>
@RestController
public class PoliceController {
	@RequestMapping(value="/call/{id}",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)
	public Police call(@PathVariable Integer id,HttpServletRequest request){
		Police p=new Police();
		p.setId(id);
		p.setName("angus");
		p.setMessage(request.getRequestURI().toString());
		return p;
	}
	public static boolean canVisitDb=true;
	@RequestMapping(value="db/{can}",method=RequestMethod.GET)
	public void setDb(@PathVariable boolean can){
		canVisitDb=can;
	}
}
@Component
public class MyHeathIndicator implements HealthIndicator{
	public Health health(){
		if(PoliceController.canVisitDb){
			return new Health.Builder(Status.UP).build();
		}else{
			return new Health.Builder(Status.DOWN).build();
		}
	}
}

下面这个类是同步Eureka中的状态:

@Component
public class MyHealthCheckHandler implements HealthCheckHandler{
	@Autowired
	private MyHeathIndicator healtIndicator;
	public InstanceStatus getStatus(InstanceStatus currentStatus) {
		Status status=healtIndicator.health().getStatus();
		if(status.equals(Status.UP)){
			return InstanceStatus.UP;
		}else{
			return InstanceStatus.DOWN;
		}
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值