学科分类
目录
Spring Cloud

使用Hystrix Dashboard监控熔断器状态

在微服务架构中,为了保证服务的可用性,防止因为某个服务出现故障导致线程阻塞,出现了Hystrix熔断器。因此熔断器成为了一个反映程序健康性的重要指标,Hystrix Dashboard是监控Hystrix熔断器健康状况的一个重要组件,它提供了数据监控和友好的图形化展示界面。接下来我们在已有的项目上整合,在Feign中使用Hystrix Dashboard来监控熔断器的状态,具体步骤如下:

(1)以前面章节项目为基础,在eureka-hystrix-client项目中的pom.xml文件里增加spring-cloud-starter-netflix-hystrix-dashboard依赖和监控信息图形化依赖spring-boot-starter-actuator,这两个依赖具体如下所示。

<dependency>
    <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard
    </artifactId>    
    <version>2.1.3.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

(2)在启动类EurekaHystrixClientApplication中增加@EnableHystrixDashboard注解启用Hystrix Dashboard功能,如例1所示。

例1 eureka-hystrix-client\src\main\java\com\itheima\EurekaHystrixClientApplication.java

 1    import org.springframework.boot.SpringApplication;
 2    import org.springframework.boot.autoconfigure.SpringBootApplication;  
 3    import  org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 4    import   org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
 5    import org.springframework.cloud.openfeign.EnableFeignClients;
 6    @EnableDiscoveryclients
 7    @SpringBootApplication
 8    @EnableEurekaClient
 9    @EnableFeignClients
 10    @EnableHystrixDashboard
 11    public class EurekaHystrixClientApplication{
 12        public static void main(String[] args) {           
 13        SpringApplication.run(EurekaHystrixClientApplication.cl
 14        ass,args);
 15        }
 16    }

(3)创建hystrix.stream的Servlet配置。Spring Boot 2.x版本开启Hystrix Dashboard与Spring Boot 1.x的方式略有不同,需要增加一个HystrixMetricsStreamServlet的配置。在 config包下创建HystrixDashboardConfiguration类,具体代码如例2所示。

例2 eureka-hystrix-client\src\main\java\com\itheima\config\HystrixDashboardConfiguration.java

 1    import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
 2    import org.springframework.boot.web.servlet.ServletRegistrationBean;
 3    import org.springframework.context.annotation.Bean;
 4    import org.springframework.context.annotation.Configuration;
 5    @Configuration
 6    public class HystrixDashboardConfiguration {
 7        @Bean
 8        public ServletRegistrationBean getServlet() {
 9            HystrixMetricsStreamServlet streamServlet = new 
 10            HystrixMetricsStreamServlet();
 11            ServletRegistrationBean registrationBean = new 
 12            ServletRegistrationBean(streamServlet);
 13            registrationBean.setLoadOnStartup(1);
 14            registrationBean.addUrlMappings("/hystrix.stream");
 15            registrationBean.setName
 16           ("HystrixMetricsStreamServlet");
 17           return registrationBean;
 18        }
 19    }

(4)启动并测试Hysyrix Dashboard。重新启动eureka-hystrix-client项目,浏览器访问http://localhost:8764/hystrix,效果如图1所示。

图1 Hystrix Dashboard效果图

在图1中,我们在在第一个输入框输入http://localhost:8764/hystrix.stream,第二个输入框中输入自定义的名称,然后点击Monitor Stream,进入下一个界面。

另外再打开一个新的浏览器窗口,访问http://localhost:8764/hi?id=hello,此时上一个界面中会实时出现监控界面,如图2所示。

图2 Hystrix 监控界面

在图2中,页面显示了熔断器的各种数据指标,这些数据指标所表示的含义分别为:

① 标注的是服务的健康程度。实心圆的颜色从绿黄橙红依次递减,表示服务的健康程度依次降低,圆越大,表示服务的流量越大。

② 数字从上往下依次是消费者请求调用者的请求成功数、短路或熔断数和失败的次数。

③ 数字从上往下依次是消费者请求调用者的超时数、线程池拒绝数和请求异常数。

④ 表示集群下的主机报告。

⑤ 表示消费者请求调用者的请求频率。

点击此处
隐藏目录