断路器是根据一段时间内的请求来判断并操作断路器的打开和关闭状态的。
Hystrix-dashboard
是一款针对Hystrix
进行实时监控的工具,通过Hystrix Dashboard
我们可以在直观地看到各Hystrix Command
的请求响应时间, 请求成功率等数据。但是只使用Hystrix Dashboard
的话, 你只能看到单个应用内的服务信息, 这明显不够. 我们需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard
上, 这个工具就是Turbine
.
Hystrix Dashboard
创建一个SpringBoot
工程,起名为hystrix-dashboard
。
pom配置
在pom.xml
中引入相关依赖:
<properties> |
启动类
启动类加上@EnableHystrixDashboard
注解
|
配置文件
修改配置文件,添加以下内容:
spring: |
启动服务
启动服务,访问http://localhost:28086/hystrix,看到如下界面:
说明
这段来源:https://windmt.com/2018/04/16/spring-cloud-5-hystrix-dashboard/
通过 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 开启,实现对具体某个服务实例的监控。(现在这里的 URL 应该为 http://hystrix-app:port/actuator/hystrix.stream,Actuator 2.x 以后 endpoints 全部在/actuator下,可以通过management.endpoints.web.base-path修改)
前两者都对集群的监控,需要整合 Turbine
才能实现。这一部分我们先实现对单体应用的监控,这里的单体应用就用我们之前使用 Feign
和 Hystrix
实现的服务消费者——eureka-consumer
。
页面上的另外两个参数:
Delay
:控制服务器上轮询监控信息的延迟时间,默认为2000
毫秒,可以通过配置该属性来降低客户端的网络和CPU
消耗。Title
:该参数可以展示合适的标题。
添加endpoint
既然 Hystrix Dashboard
监控单实例节点需要通过访问实例的/actuator/hystrix.stream
接口来实现,自然我们需要为服务实例添加这个 endpoint
。
使用前面的eureka-consumer
工程;
修改pom配置
在dependencies
节点下添加以下依赖:
<dependency> |
启动类
修改启动类,添加@EnableCircuitBreaker
或者@EnableHystrix
注解,开启断路器功能;
|
配置文件
在配置文件中添加:
management: |
management.endpoints.web.exposure.include
这个是用来暴露 endpoints
的。由于 endpoints
中会包含很多敏感信息,除了 health
和 info
两个支持 web
访问外,其他的默认不支持 web
访问。
测试
分别再启动注册中心、服务生产者、服务消费者。
在
Hystrix Dashboard
中输入http://localhost:28085/actuator/hystrix.stream
,然后点击下方的Monitor Stream
按钮,可以看到Loding
界面。这个时候访问http://localhost:28085/hello/zhangsan,访问成功后再回来
DashBoard
页面,可以看到:
图像解读
以上图来说明其中各元素的具体含义:
实心圆:它有颜色和大小之分,分别代表实例的监控程度和流量大小。如上图所示,它的健康度从绿色、黄色、橙色、红色递减。通过该实心圆的展示,我们就可以在大量的实例中快速的发现故障实例和高压力实例。
曲线:用来记录 2 分钟内流量的相对变化,我们可以通过它来观察到流量的上升和下降趋势。
其他数量指标
结束
到此,单个服务的熔断监控已经完成。