Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)

前言

在Spring Cloud进阶之路 | 六:断路器(Hystrix)一文中,介绍了服务熔断降级及断路器组件。可是,这些数据终归看不到摸不着,不好监控。

所以,需要一个能针对断路器进行监控的组件,即本文要介绍的Hystrix Dashboard断路器监控组件,该组件针对各断路器的数据,提供友好的图形化界面。

 

准备工作

复用Spring Cloud进阶之路 | 六:断路器(Hystrix)文章中的所有工程:xmall-product、xmall-product-clients-ribbon、xmall-product-clients-feign。

 

ribbon方式断路器监控


改造xmall-product-clients-ribbon工程,添加相关依赖及配置。

 

依赖改造

添加依赖spring-boot-starter-actuator、spring-cloud-starter-netflix-hystrix-dashboard。修改后的pom文件如下。



    4.0.0
        com.luas.cloud
        java-boot-parent-2.1
        1.0.0-SNAPSHOT
        ../../java-boot-parent-2.1
    com.luas.xmall
    xmall-product-clients-ribbon
    0.0.1-SNAPSHOTxmall-product-clients-ribbon
    product service clients by ribbon
        1.8
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
            org.springframework.cloud
            spring-cloud-starter-netflix-ribbon
        
            org.springframework.boot
            spring-boot-starter-actuator
        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix
        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix-dashboard
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

注意:一定要添加spring-boot-starter-actuator依赖,不然不会创建/actuator/hystrix.stream端点。

 

开启断路器监控

启动类添加@EnableHystrixDashboard注解,开启断路器监控组件。

package com.luas.xmall.product.clients;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
​
@EnableHystrix
@EnableHystrixDashboard
@SpringBootApplication
public class XmallProductClientsRibbonApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(XmallProductClientsRibbonApplication.class, args);
    }
​
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
​
}

 

监控

启动工程xmall-product、xmall-product-clients-ribbon,端口分别为8080、8082。

如配置无误,控制台则会打印/actuator/hystrix.stream端点注册成功信息。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第1张图片

访问http://localhost:8082/actuator/hystrix.stream,如果配置正确,会出现一连串的ping。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第2张图片

访问http://localhost:8082/hystrix,输入相关参数如下:

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第3张图片

点击Monitor Stream,即可开启断路器监控界面。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第4张图片

可以看到,两处监控均出现loading。不慌,这是因为没有数据。

访问http://localhost:8082/sku/1122,正常出现商品信息。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第5张图片

此时,再观察hystrix.stream,已经出现了相关数据。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第6张图片

hystrix监控界面已正常展示图形化界面。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第7张图片

控制台也显示了连接成功信息。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第8张图片

 

feign方式断路器监控

 

依赖改造

添加依赖spring-boot-starter-actuator、spring-cloud-starter-netflix-hystrix-dashboard。修改后的pom文件如下。



    4.0.0
        com.luas.cloud
        java-boot-parent-2.1
        1.0.0-SNAPSHOT
        ../../java-boot-parent-2.1
    com.luas.xmall
    xmall-product-clients-feign
    0.0.1-SNAPSHOTxmall-product-clients-feign
    product service clients by ribbon
        1.8
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
            org.springframework.boot
            spring-boot-starter-actuator
        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix
        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix-dashboard
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

注意:一定要添加spring-boot-starter-actuator依赖,不然不会创建/actuator/hystrix.stream端点。

 

开启断路器监控

启动类添加注解@EnableCircuitBreaker、@EnableHystrixDashboard。

package com.luas.xmall.product.clients;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.openfeign.EnableFeignClients;
​
@EnableCircuitBreaker
@EnableHystrixDashboard
@EnableFeignClients("com.luas.xmall.product.clients.clients")
@SpringBootApplication
public class XmallProductClientsFeignApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(XmallProductClientsFeignApplication.class, args);
    }
​
}

注意:虽然feign集成了hystrix,可以手动通过配置开启断路器,但是,想要开启断路器相关监控功能,还需添加@EnableCircuitBreaker注解。

 

监控

启动工程xmall-product、xmall-product-clients-feign,端口分别为8080、8083。

如配置无误,控制台则会打印/actuator/hystrix.stream端点注册成功信息。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第9张图片

访问http://localhost:8083/actuator/hystrix.stream,如果配置正确,依然会出现一连串的ping。

访问http://localhost:8083/hystrix,将监控地址变更为http://localhost:8083/actuator/hystrix.stream,点击Monitor Stream,开启新的断路器监控界面。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第10张图片

可以看到,依然是两处监控均出现loading,还是因为没有数据。

访问http://localhost:8083/sku/1122,正常出现商品信息。然后,再观察hystrix.stream,也已经出现了相关数据。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第11张图片

此时,hystrix监控界面已正常展示图形化界面。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第12张图片

控制台也显示了连接成功信息。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第13张图片

到此,断路器监控组件集成完成。

 

监控指标

断路器监控指标含义如下图所示。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第14张图片

此图是基于ribbon方式的断路器监控,feign方式的与此一模一样,唯一不同的,就是短路点名称格式。ribbon方式直接为方法名,而feign方式既有服务名,又有参数类型,比较详细。

Spring Cloud进阶之路 | 十一:断路器监控(Hystrix Dashboard)_第15张图片

 

源码


github

https://github.com/liuminglei/SpringCloudLearning/tree/master/11/

gitee

https://gitee.com/xbd521/SpringCloudLearning/tree/master/11/

 

本文系【银河架构师】原创,如需转载请在文章明显处注明作者及出处。

微信搜索【银河架构师】,发现更多精彩内容。

 

你可能感兴趣的:(微服务,#,Spring,Cloud)