在Hystrix Dashboard的使用中,实际上是单个的Hystrix Dashboard。看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。Hystrix Turbine的使用非常简单,只需要引入相应的依赖和加上注解和配置就可以了。
我们上个例子中,浏览器输入http://localhost:8030/hystrix.stream输入的是http://localhost:8011/hystrix.stream,这样我们只能看到端口8011这个节点的Hystrix的实时的监控信息。如果我们还有与8011提供相同服务的服务,我们需要通过Turbine来对这两个服务进行整合
新建一个项目,在文件application.yml中,添加
spring:
application.name: microservice-hystrix-turbine
server:
port: 8031
security.basic.enabled: false
turbine:
aggregator:
clusterConfig: default # 指定聚合哪些集群,多个使用","分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}访问
appConfig: microservice-consumer-movie-feign-with-hystrix-stream,microservice-consumer-movie-ribbon-with-hystrix ### 配置Eureka中的serviceId列表,表明监控哪些服务
clusterNameExpression: new String("default")
# 1. clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig需要配置想要监控的应用名称
# 2. 当clusterNameExpression: default时,turbine.aggregator.clusterConfig可以不写,因为默认就是default
# 3. 当clusterNameExpression: metadata['cluster']时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC,则需要配置,同时turbine.aggregator.clusterConfig: ABC
eureka:
client:
serviceUrl:
defaultZone: http://user:password123@localhost:8761/eureka
在启动类中添加@EnableTurbine注解
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
/**
* 通过@EnableTurbine接口,激活对Turbine的支持。
*/
@SpringBootApplication
@EnableTurbine
public class TurbineApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(TurbineApplication.class).web(true).run(args);
}
}
我们启动2个节点,分别为8011,8012。通过eruka我们看到
我们启动TurbineApplication.java在浏览器输入http://localhost:8030/hystrix.stream,在页面输入http://localhost:8031/turbine.stream
点击Monitor Stream我们看到Hosts的值为2