SpringCloud中Turbine聚合监控组件

前言

我们在使用Hystrix中的Dashborad组件进行监控服务熔断情况的时候, 每个微服务都会有一个单独的监控页面, 当我们业务的微服务数量足够多的时候, 那么管理起来相对来说不是很方便, 所以Netflix开源了Hystrix的另一个组件Turbine, Turbine组件能够进行对Hystrix服务的聚合, 能够将多个Dashborad集中在一个页面上进行展示

搭建一个单独的Turbine服务

在我们的项目下创建一个新的模块, base-turbine , 这个模块使用了Spring Cloud Turbine组件, 它提供了聚合服务监控功能

在模块中我们需要增加如下依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>

然后我们将在application.yml文件中进行一些基础的配置

server:
  port: 8090
spring:
  application:
    name: base-turbine
turbine:
  app-config: testclient
  cluster-name-expression: new String("default")
  instanceUrlSuffix: /hystrix.stream #注意,在SpringBoot2.X以上的版本,需要重新配置这个地址,否则会抛出异常
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

在启动类上我们需要加上如下注解,以保证我们Turbine聚合服务的正常运行

@EnableTurbine //通过这个注解进行对Turbine的支持
@EnableHystrixDashboard

注意,这里有一个坑,在SpringBoot2.x以上的版本,由于hystrix.stream的默认地址改动,所以会造成Turbine找不到主机,解决办法在上面也有提到

直接在配置文件中加上instanceUrlSuffix: /hystrix.stream或者新配置一个@bean

    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }

然后我们就可以愉快的启动服务了

进行测试

首先,待服务完全启动成功后(注册中心->微服务模块->客户端->Turbine聚合监控模块)

我们首先在浏览器地址中输入

http://localhost:8090/turbine.stream

如果能够持续输出json信息,那证明Turbine聚合服务成功启动,然后我们来测试Turbine是否监控到微服务

我们继续在浏览器地址中输入

http://localhost:8080/findOrder

之后再http://localhost:8090/turbine.stream这个地址中的界面显示类似以下Json数据,那么表示我们的Turbine聚合服务监控微服务已经成功

那么准备工作已经准备好了,我们就可以进入可视化面板中进行监控了

我们在浏览器中输入http://localhost:8090/hystrix

之后再在显示的界面中输入http://localhost:8090/turbine.stream这个地址

然后就会出现可视化面板

由于我们在配置中只监控了一个,所以这里也只显示了一个微服务,在实际运用中就能监控多个服务了


本作品采用知识共享署名 4.0 国际许可协议进行许可。

如果可以的话,请给我钱请给我点赞赏,小小心意即可!

Last modification:September 16, 2019
If you think my article is useful to you, please feel free to appreciate