Spring cloud系列十二 监控Hystrix界面:Hystrix dashboard 和 Turbine

1. 概述

为了更好的监控Hystrix的性能,Spring Cloud提供Hystrix dashboard和Turbin来达到这个目的。
Hystrix dashboard可以实时监控Hystrix的运行情况。但是Hystrix dashboard只能对单台进行监控。但是在实际系统中,通常不止一个服务,为了方便监控,我们需要将多个Hystrix dashboard的数据汇总在一个dashboard中展示出来, 这个工具就是Turbine。
本文演示Hystrix dashboard和Turbine的用法

2. Hystrix dashboard

Hystrix dashboard可以实时监控Hystrix的运行情况。但是Hystrix dashboard只能对单台进行监控。

2.1. 相关工程

相关的工程说明

  • cloud-registration-center:注册中心
  • cloud-service-hystrix: 作为服务方的工程
  • cloud-consumer-hystrix:通过Hystrix调用cloud-service-hystrix的接口

本节使用的工程和Spring cloud系列十一 @Feign集成的Hystrix进行个性化配置及集成原理相同
其中cloud-registration-center和cloud-service-hystrix完全相同,请参考上一篇文章

2.2. 配置Hystrix日志监控

以下的配置都在工程cloud-consumer-hystrix中。
为了在服务中添加Hystrix dashboard的支持,我们对cloud-consumer-hystrix进行改造(这个工程中在Spring cloud系列十一 @Feign集成的Hystrix进行个性化配置及集成原理中已经讲过,本节略),这里只列出变更的内容:

在pom.xml中增加Hystrix dashboard的依赖jar

<!-- hystrix dashboard -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-hystrix-dashboard</artifactId>
</dependency>
<!-- 如果提示 Unable to connect to Command Metric Stream. 则需要引入以下包 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在启动类上增加@EnableCircuitBreaker注解,必须需要加上这个注解

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient // 配置本应用将使用服务注册和服务发现
@EnableCircuitBreaker // 启动断路器,如果要监控hystrix的流必须开启此注解,即使fegin已经通过属性
public class HystrixFeignCloudConsumerApplication {
    ….
}

测试
启动服务

  • 启动工程cloud-registration-center:
  • 启动工程cloud-service-hystrix的HystrixCloudServiceApplication的启动类
  • 启动工程cloud-consumer-hystrix的HystrixFeignCloudConsumerApplication 的启动类

访问http://127.0.0.1:12082/hystrix.stream

会不断刷新如下信息

ping: 
data: {"type":"HystrixCommand","name":"IMyHystrixClient#simpleHystrixClientCall(long)","group":"cloud-hystrix-service"….

如果没有以上打印信息,请先执行监控的URL,如本例中
http://127.0.0.1:12082//hystrix-feign/simple

2.3. 启动Hystrix-dashboard界面监控

上面的日志信息不够直观,借助Hystrix-dashboard可对监控进行图形化展示
@EnableHystrixDashboard
在启动类上增加@EnableHystrixDashboard,开启Hystrix dashboard功能

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient // 配置本应用将使用服务注册和服务发现
@EnableCircuitBreaker // 启动断路器,如果要监控hystrix的流必须开启此注解,即使fegin已经通过属性
@EnableHystrixDashboard // 开启dashboard,通过图形化的方式监控: 查看 http://127.0.0.1:12082/hystrix.stream
public class HystrixFeignCloudConsumerApplication {
…
}

测试
在浏览器中输入:http://127.0.0.1:12082//hystrix,此时会得到如下界面
这里写图片描述

在第一个空格中输入http://127.0.0.1:12082/hystrix.stream,点击”Monitor Stream”,进入监控界面
当前你不断刷新 http://127.0.0.1:12082//hystrix-feign/simple 时,以下界面也会相应变化出现

这里写图片描述

注意:如果进入这个界面没有数据,请刷新这个界面。
图中各个字段的意义参考官方图
这里写图片描述

3. Turbine

Hystrix dashboard实现单台服务的Hystrix监控。但是在实际系统中,通常不止一个服务,为了方便监控,我们需要将多个Hystrix dashboard的数据汇总在一个dashboard中展示出来, 这个工具就是Turbine.

3.1. 新工程:cloud-dashboard-hystrix

我们单独建立一个工程做为Turbine的服务

pom.xml
除了引入HystrixDashboard的jar,还需要引入Turbin的包

<!-- hystrix dashboard -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-hystrix-dashboard</artifactId>
</dependency>
<!-- 如果提示 Unable to connect to Command Metric Stream. 则需要引入以下包 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!-- turbine -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-turbine</artifactId>
</dependency>

属性配置-bootstrap-dashboard.yml:
把自己注册到服务中心

# port
server:
  port: 12086

spring:
  application:
    # 本服务注册到注册到服务器的名称, 这个名称就是后面调用服务时的服务标识符
    name: cloud-dashboard-hystrix
eureka:
  client:
    serviceUrl:
      # 服务器注册/获取服务器的zone
      defaultZone: http://127.0.0.1:10761/eureka/
  instance:
    prefer-ip-address: true

属性配置application-dashboard.yml
配置turbine的服务,指定要监控的服务CLOUD-CONSUMER-HYSTRIX和聚合集群

turbine:
  # 配置Eureka中的serviceId列表,表明监控哪些服务,多个服务用',"分隔
  appConfig: CLOUD-CONSUMER-HYSTRIX
  aggregator:
    # 指定聚合哪些集群,多个使用”,”分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}访问
    clusterConfig: default
  clusterNameExpression: new String("default")

启动类HystrixDashboardCloudApplication
@EnableTurbine:启动Turbine

@SpringBootApplication
@EnableEurekaClient // 配置本应用将使用服务注册和服务发现
@EnableHystrixDashboard
@EnableTurbine // http://127.0.0.1:12086/hystrix
public class HystrixDashboardCloudApplication {

    public static void main(String[] args) {
        args = new String[1];
        args[0] = "--spring.profiles.active=dashboard";
        SpringApplication.run(HystrixDashboardCloudApplication.class, args);
    }
}

3.2 测试

测试单个服务监控
进入界面:http://127.0.0.1:12086/hystrix
这里写图片描述
这个界面我们可以只监控单个服务,也可以监视集群。监视单个服务的服务的方法,只需要在url栏里输入服务的Hystrix的stream地址即可,如要监控上节的服务,只需要输入http://127.0.0.1:12082//hystrix.stream,点击监控即可

测试集群的监控
为了更方便说明turbin的用户,我们需要启动两个CLOUD-CONSUMER-HYSTRIX

修改工程:cloud-consumer-hystrix,在HystrixSimpleCloudConsumerApplication上加上@EnableEurekaClient 并启动,关于此类的说明请参考本文Spring cloud系列十 使用@HystrixCommand使用Hystrix组件及@EnableCircuitBreaker原理介绍

然后我们重启HystrixDashboardCloudApplication 服务
然后我们在http://127.0.0.1:12086/hystrix界面输入对http://127.0.0.1:12086/turbine.stream进行监控

然后不断刷新:http://127.0.0.1:12082/hystrix-feign/simplehttp://127.0.0.1:12083/hystrix/simple
此时监控界面同时展现两个服务的hystrix信息
这里写图片描述

4. 代码

以上的详细的代码见下面
github代码,请尽量使用tag v0.9,不要使用master,因为我不能保证master代码一直不变

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页