学科分类
目录
Spring Cloud

使用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聚合监控页面

点击此处
隐藏目录