使用Hystrix和Turbine进行聚合监控
在使用Hystrix Dashboard组件监控服务的熔断器状态时,每个服务都有一个Hystrix Dashboard主页,服务数量很多时,监控非常不方便。为了同时监控多个服务的熔断器的状况,就需要用到 Turbine。Turbine将每个服务的Hystrix Dashboard数据进行了整合,顾名思义是用于集合多个Hystrix Dashboard组件的数据放在同一个页面上展示,从而做到集中监控。
这里我们将在上一小节的基础上进行改造,实现Hystrix和Turbine进行聚合监控。
(1)按照上一小节搭建eureka-hystrix-client和hystrix-provider的方式,再搭建两个名称为eureka-hystrix-client1和hystrix-provider1的消费者与提供者,并把eureka-hystrix-client1项目的端口设置为8765,hystrix-provider1项目的端口号设置为7006。
(2)使用Spring Initializr方式创建一个名称为turbine-server的Spring Boot项目,这里将Group命名为com.itheima,将Artifact命名为turbine-server,并添加Eureka Client、Web、Test、Turbine和dashboard依赖,其中,Turbine和dashboard依赖如下所示。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard
</artifactId>
</dependency>
(3)在项目turbine-server的配置文件application.yml中进行相关配置,具体配置如例1所示。
例1 turbine-serve\src\main\resources\application.yml
1 spring:
2 application:
3 name: turbine-server
4 server:
5 port: 8769
6 turbine:
7 instanceUrlSuffix: /hystrix.stream
8 aggregator:
9 clusterConfig: default
10 appConfig: eureka-hystrix-client,eureka-hystrix-client1
11 clusterNameExpression: new String("default")
12 eureka:
13 client:
14 serviceUrl:
15 defaultZone: http://localhost:7000/eureka/
下面针对上述的部分配置参数进行介绍,具体如下:
● turbine.aggregator.appConfig:用于配置需要监控的服务,这里我们设置的是eureka-hystrix-client。
● clusterNameExpression:指定集群名称,此时用默认的即可。
● appConfig: eureka-hystrix-client 配置Eureka中的serviceId列表,表明监控哪些服务。
● clusterConfig:指定聚合的集群,如果有多个,则使用逗号分割,默认为default。
● instanceUrlSuffix:用于设置路径,若turbine.instanceUrlSuffi不做设置,默认路径为/actuator/hystrix.stream,这与我们在eureka-hystrix-client中设置的路径/hystrix.stream不匹配。
(3)在项目的启动类添加@EnableTurbine注解,开启聚合监控功能,添加@EnableHystrixDashboard注解,启用Hystrix-Dashboard功能。如例2所示。
例2 turbine-serve\src\main\java\com\itheima\turbineserve\TurbineServeApplication.java
1 @SpringBootApplication
2 @EnableTurbine
3 @EnableHystrixDashboard
4 public class TurbineServerApplication {
5 public static void main(String[] args) {
6 SpringApplication.run (TurbineServerApplication.class,args);
7 }
8 }
(4)依次启动eureka-server、hystrix-provider、hystrix-provider 1、eureka-hystrix-client、eureka-hystrix-client 1、turbine-server项目,访问http://localhost:8769/hystrix
,效果如图1所示。
图1 Hystrix Dashboard效果
图1所示界面中,在输入框输入http://localhost:8769/turbine.stream
,然后单击“Monitor Stream”按钮,进入监控页面。如图2所示。
图2 hystrix聚合监控页面