Hystrix Dashboard 可视化监控

转载声明 : 该文章出处为 扛麻袋的少年

写在开头

  接上一篇文章:Spring Cloud 整合 Hystrix 实现服务降级、服务熔断、服务限流。除了 服务降级服务熔断服务限流 等服务以外,Hystrix 还提供了 准实时的调用监控(Hystrix Dashboard),Hystrix 会持续地记录所有通过 Hystrix 发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求,多少成功,多少失败等。

  Netflix 通过 hystrix-metrics-event-stream 项目实现了对以上指标的监控。同时 Spring Cloud 也提供了对 Hystrix Dashboard 的整合,将监控的内容信息转化成可视化界面。

1.Hystrix Dashboard 的使用

1.1 操作Hystrix Dashboard模块

  在使用 Hystrix Dashboard 时,需要以单独工程的方式运行。以下就是 Hystrix Dashboard 的使用流程。

Ⅰ. 创建工程

  使用 maven 的方式创建一个模块,将其命名为:cloud-consumer-hystrix-dashboard9001 ,用来完成 Hystrix Dashboard 的部署。

Ⅱ. pom.xml 依赖

<!--引入 hystrix dashboard 依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

 
  
  

Ⅲ. 修改application.yml 配置

# 仅定义一个端口号即可,并不需要将其注册到 Eureka 等
server:
  port: 9001

 
  
  

Ⅳ. 在启动类上添加 @EnableHystrixDashboard 注解

@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboardMain9001 {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(HystrixDashboardMain9001.class,args);
    }
}

 
  
  

Ⅴ. 被监听的服务提供者,都需要添加actuator依赖

  该依赖一般情况是配合 spring-boot-starter-web 同时使用,该模块主要用来完成对 服务的健康监控。在生产环境中,需要实时或定期监控服务的可用性。Spring Boo t的 actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

 
  
  

Ⅵ. 启动Hystrix Dashboard模块

  启动 Hystrix Dahsboard 模块项目,我们访问 http://localhost:9001/hystrix ,就能够看到 Hystrix Dashboard 豪猪哥 的监控页面了。
在这里插入图片描述

1.2 操作服务提供模块

  以下内容,是需要在 服务提供模块 进行配置。

Ⅰ. 配置Hystrix 指定监控路径

  注意: 新版本 Hystrix 需要在主启动类中指定监控路径,如果没有此项操作,在项目启动后,Hystrix Dashboard 会报: Unable to connect to Command Metric Stream 这样一个错误。配置内容如下:

@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker
public class PaymentHystrixMain8001 {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(PaymentHystrixMain8001.class,args);
    }
    //在主启动类中指定监控路径
    @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;
    }
}

 
  
  

Ⅱ. 开启监控

  将 服务注册中心(7001端口)服务提供方(8001端口)Hystrix Dashboard(9001端口) 模块进行启动。然后通过 Hystrix Dashboard 9001 来监控服务端 8001。需要在 Hystrix Dashboard 中填写 监控地址http://localhost:8001/hystrix.stream,并完成图中四部曲:
在这里插入图片描述
开启监控,所以服务都启动 ok 的话,你会看到如下界面。到此处说明配置 OK
在这里插入图片描述

Ⅲ. 监控测试

  服务接口:http://localhost:8001/payment/circuit/{id}。当 id > 0,进行正常操作流程。当 id < 0,报异常进入 服务降级 方法。

  此处配置的服务熔断规则为: 在 10s 内,10次请求如果失败率 > 60%,此时断路器开关打开,整个服务不可用。随着请求正确率的提升,服务也会逐渐恢复。

//服务熔断
@HystrixCommand(fallbackMethod = "paymentCircuitBreaker_fallback",commandProperties = {
    
    
        @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),  //是否开启断路器
        @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "10"),   //请求次数
        @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),  //时间范围
        @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"), //失败率达到多少后跳闸,此处为60%(上面配置意思是:10秒钟内,10次请求,失败率60%就不让用了)
        // 这些参数的配置,在 HystrixCommandProperties.java 类中
})
public String paymentCircuitBreaker(@PathVariable("id") Integer id){
    
    
    if (id < 0){
    
    
        throw new RuntimeException("*****id 不能负数");
    }
    String serialNumber = IdUtil.simpleUUID();
    return Thread.currentThread().getName()+"\t"+"调用成功,流水号:"+serialNumber;
}
public String paymentCircuitBreaker_fallback(@PathVariable("id") Integer id){
    
    
    return "id 不能负数,请稍候再试,(┬_┬)/~~     id: " +id;
}

 
  
  

  当我们输入id > 0 时,请求正常(断路器状态:Closed)。当输入 id < 0,连续发送请求,满足 10s 内,10次请求如果失败率 > 60%,此时断路器开关打开(断路器状态:Closed → Open)。此时再次输入 id > 0 时,由于整个服务不可用,还是会进入到 服务降级 方法。连续多次发送 id > 0 请求,此时正确率逐渐提高,服务也会逐渐恢复(断路器状态:Opend → Close) ,监控如下图所示。
在这里插入图片描述

2.Hystrix Dashboard 图解

  看着上图所有内容,有没有一脸懵逼。哈哈,接下来就对监控页面各个内容做一些简单的介绍。监控页面可以划分为:7色1圈1线
在这里插入图片描述
在这里插入图片描述

本文代码下载地址:Hystrix Dashboard 的使用(提取码:b07u )
 
下一篇:Spring Cloud Gateway 微服务新一代网关

猜你喜欢

转载自blog.csdn.net/m0_37989980/article/details/108508173
今日推荐