Hystrix通过Turbine实现集群监控
上一节我们带领读者使用Hystrix Dashboard 查看服务调用的监控信息,以此来查看某些服务的健康状态。
但是我们只查看了goods服务被调用的健康状态,而在一个复杂的分布式系统中,相同服务类型的节点可能有很多个,它们组成了一个集群。
如果想要同时监控集群中多个服务节点的健康指标信息,就需要使用Turbine进行集群监控。
Turbine可以帮我们把集群中每个服务节点的Hystrix Dashboard数据进行整合,然后把数据放到一个页面进行展示,从而实现集中监控。
我们在Hystrix Dashboard页面中,看到过监控的端点除了“hystrix.stream”外,还有 “turbine.stream”,所以意味着我们可以监控集群的端点信息。
Turbine实现集群监控如图所示。
实现Turbine集群监控具体的步骤如下。
① 在hystrix-dashboard项目的pom.xml文件中添加Eureka Client、Turbine依赖。
② 在启动类上添加@EnableTurbine注解开启Turbine功能,如程序清单13-19所示。
③ 为hystrix服务再配置一个服务节点,端口号为“7011”,名称为“hystrix-cluster2”,如图所示。
并且在hystrix-dashboard服务的application.yml中配置Turbine的聚合监控服务以及聚合集群等信息,如程序清单13-20所示。
turbine:
#turbine需要聚合监控信息的服务名称
app-config:hystrix,hystrix-cluster2
#turbine需要聚合的集群名称,如果有多个则使用逗号隔开
aggregator:
clustre-config:default
#集群名表达式
cluster-name-expression:new String("default")
④ 分别启动eureka-server注册中心、两个goods服务、“hystrix”服务、hystrix-cluster2服务以及hystrix-dashboard服务,并查看服务注册情况。
然后我们在浏览器中分别使用hystrix服务和hystrix-cluster2服务访问goods服务。
最后我们在http://localhost:7020/hystrix的监控信息入口处,输入集群监控地址“http://localhost:7020/turbine.stream”,就可以看到多个服务调用在一个面板显示,如图所示。