一、Hystrix Turbine
在上一章节中,我们讲解了微服务断路器监控系统Hystrix Dashboard,但是Dashboard仅仅针对于单个服务,而在Spring Cloud微服务体系中,存在着各种各样的服务,一个一个去监控显然不现实,而Hystrix Turbine恰恰解决了这个难题。
Hystrix Turbine可以说是Hystrix Dashboard的聚合版,使用上与Dashboard类似,只是它将多个仪表盘数据集合到一起,达到了统一监控的目的。
二、改造book-server
继续改造之前的项目,原有的项目中,user-server已经集成了Hystrix Dashboard,所以这里不再需要对其做任何变更修改了。
既然Turbine是监控多个微服务,那自然需要多个微服务,所以我们再次请出了我们的book-server,现在我们对book-server进行一些改造,改造思路类似于上一章user-server集成Hystrix Dashboard。
首先我们在pom文件中引入必要的依赖:spring-cloud-starter-netflix-hystrix,spring-boot-starter-actuator以及spring-cloud-starter-netflix-hystrix-dashboard。
然后是核心启动类,我们添加上@EnableHystrixDashboard开启仪表盘支持,同时也添加@EnableHystrix注解,之前book-server并没有去调用其他服务,所以也没有使用到Hystrix功能。
配置文件中,我们需要暴露出/actuator/hystrix.stream的监控地址供访问,所以在原来bus的配置中增加了hystrix.stream,当然这里也可以如上一章节一样,直接将exposure.include配置为*暴露出所有。
如果不修改配置文件暴露地址,其实也可以在启动类中提供ServletRegistrationBean的Bean对象,这两者的作用是一样的,按喜好选取。
Hystrix Dashboard和Hystrix Turbine都是监控Hystrix断路器的,只有服务使用了Hystrix才会出现监控信息,所以这里添加了一个BackApi类,类中进行了简单的@HystrixCommand处理。
至此我们对book-server的改造就完成了,访问
http://localhost:10830/actuator/hystrix.stream一样可以出现监控json信息。
同样的还有我们的http://localhost:10830/hystrix监控页面,这和我们上一章的讲解是一模一样的。
三、搭建Hystrix Turbine服务
现在book-server和user-server都已经拥有了Dashboard监控,那如何将他们聚集到一起呢?
为此,我们需要添加一个Turbine服务,这里我们新增turbine-server,pom依赖如下。除了spring-boot-starter-web和Eureka依赖外,就是我们的Turbine依赖。
然后我们的核心启动类上,@EnableHystrixDashboard声明开启仪表盘,@EnableTurbine注解则表明使用聚合仪表盘的支持,其他的东西都是熟悉不过的老朋友。
然后是配置文件,服务端口10860,可以看到除了turbine模块的配置外,其他的配置也都是一如既往,不做过多讲解。turbine配置中app-config表明聚合监控的服务,因为turbine-server集成了Eureka,可以从注册中心获取到对应的服务,instanceUrlSuffix.default配置监控的服务实例后缀地址,这和我们其他服务使用的相同。
到这里turbine-server就搭建完毕,我们启动前面的服务,然后再启动turbine-server。
启动完成后,我们访问http://localhost:10860/turbine.stream,注意是turbine.stream,和之前的不一样了,依旧会出现我们有些熟悉又看不懂的密密麻麻的json数据。记得提前调用Hystrix请求,否则会出现一直ping、ping的情况。
然后再访问http://localhost:10860/hystrix,会发现可视化界面与之前有了些许的变化,你没看错,book-server和user-server的Hystrix监控信息都展示到了这里,turbine-server正常运行。
源码地址: https://github.com/imyanger/springcloud-project/tree/master/p11-hystrix-turbine