当前位置: 代码迷 >> 综合 >> Spring Cloud Learning | 第七篇:断路器监控仪表盘(Hystrix Dashboard)
  详细解决方案

Spring Cloud Learning | 第七篇:断路器监控仪表盘(Hystrix Dashboard)

热度:90   发布时间:2023-12-15 08:04:30.0
一. Hystrix仪表盘简介

      在Hystrix断路器的实现中,有很多Hystrix的指标信息,它们除了在Hystrix断路器实现中使用外,对于系统运维也有非常的帮助。这些指标信息会以“滚定时间窗”与“桶”结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用。

      Spring Cloud除了整合Hystrix,也完美地整合了它的仪表盘组件Hystrix Dashboard。Hystrix Dashboard是作为断路器状态的一个组件,它主要用来实时监控Hystrix的各项指标信息,并且它为我们提供了友好的图形化界面。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统存在的问题,从而及时地采取应对措施。

      接下来我将在第五篇文章涉及的工程上构建一个Hystrix Dashboard来对service-ribbon实现监控(对Feign的也一样实现),完成后的结构如下如所示:


二. 具体实现

      在Spring Cloud中构建一个Hystrix Dashboard非常简单,只需要下面两步:

      ①在服务实例(本例也就是service-ribbon)pom.xml添加监控模块:

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

      注意上面这三个依赖缺一不可。

      ②在serivce-ribbon工程的启动类加上@EnableHystrixDashboard注解,开启HystrixDashboard:

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
@EnableHystrixDashboard
public class ServiceRibbonApplication {public static void main(String[] args) {SpringApplication.run(ServiceRibbonApplication.class, args);}@Bean@LoadBalancedRestTemplate restTemplate() {return new RestTemplate();}
}


三. Hystrix Dashboard监控页面

      依次启动eureka-server(端口号8761)、eureka-client(端口号8762、8763)、service-ribbon(端口号8764)。

      浏览器访问http://localhost:8764/hystrix.stream看到一些数据:



      访问http://localhost:8764/hystrix ,看到如下页面:


      这是Hystrix Dashboard的监控页面,该页面并没有具体的监控信息。从页面的文字内容我们可以知道,Hystrix Dashboard共支持三种不同的监控方式,如下所示:

      ①默认的集群监控:通过URL http://turbine-hostname:port/turbine.stream开启,实现对默认集群的监控。

      ②指定的集群监控:通过URL http://turbine-hostname:port/turbine.stream?cluster=[clusterName]开启,实现对clusterName集群的监控。

      ③单体应用的监控:通过URL http://hystrix-app:port/hystrix.stream开启,实现对具体某个服务实例的监控。

    

      前两者都是对集群的监控,需要整合Turbine才能实现,这部分将在下一篇文章中做详细介绍。这一篇我们先实现对单个服务实例的监控。

      从上面的页面我们可以看到三个我们需要填写的文本框,最上面一个当然就是填写监控的URL。除此之外,还有两个参数需要我们填写:

      第一个是Delay参数。Delay参数用控制服务器上轮询监控信息的延迟时间,默认为2000毫秒,可以通过配置该属性来降低客户端的网络和CPU消耗。

      第二个是Title参数。Title参数对应了上图头部标题Hystrix Stream之后的内容,默认会使用具体监控实例的URL,可以通过配置该信息来展示更合适的标题。


      依次填写http://localhost:8764/hystrix.stream、2000、ribbon,点击按钮。可以看到具体的各项监控信息,包括成功数、短路/熔断数、请求频率、熔断器状态等等:


      值得注意的是,当使用Hystrix Dashboard来监控Spring Cloud Zuul构建的API网关时,Thread Pools信息会一直处于Loading状态。这是由于Zuul默认会使用信号量来实现隔离,只有通过Hystrix配置把隔离机制改为线程池的方式才能够得以展示。


      源码下载:https://github.com/lingd3/SpringCloudLearning/tree/master/chapter7





  相关解决方案