在上一篇 《服务容错保护(hystrix 断路器)》 的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的。而这些请求情况的指标信息都是 HystrixCommand 和 HystrixObservableCommand 实例在执行过程中记录的重要度量信息,它们除了 Hystrix 断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以 "滚动时间窗" 与 "桶" 结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix Dashboard 就是这些指标内容的消费者之一。
下面我们基于之前的示例来结合 Hystrix Dashboard 实现 Hystrix 指标数据的可视化面板,这里我们将用到下之前实现的几个应用,包括:
由于 eureka-consumer-ribbon-hystrix 项目中的
接口实现使用了
- /consumer
修饰,所以这个接口的调用情况会被 Hystrix 记录下来,以用来给断路器和 Hystrix Dashboard 使用。断路器我们在上一篇中已经介绍过了,下面我们来具体说说 Hystrix Dashboard 的构建。
- @HystrixCommand
在 Spring Cloud 中构建一个 Hystrix Dashboard 非常简单,只需要下面四步:
- org.springframework.cloud
- spring-cloud-starter-parent
- Dalston.SR1
- />
-
- org.springframework.cloud
- spring-cloud-starter-hystrix
-
-
- org.springframework.cloud
- spring-cloud-starter-hystrix-dashboard
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
,启用 Hystrix Dashboard 功能。
- @EnableHystrixDashboard
- @EnableHystrixDashboard
- @SpringCloudApplication
- public class HystrixDashboardApplication {
- public static void main(String[] args) {
- SpringApplication.run(HystrixDashboardApplication.class, args);
- }
- }
配置文件,比如:选择一个未被占用的端口等,此步非必须。
- application.properties
- spring.application.name=hystrix-dashboard
- server.port=1301
http://localhost:1301/hystrix,我们可以看到如下页面:
这是 Hystrix Dashboard 的监控首页,该页面中并没有具体的监控信息。从页面的文字内容中我们可以知道,Hystrix Dashboard 共支持三种不同的监控方式,依次为:
开启,实现对默认集群的监控。
- http://turbine-hostname:port/turbine.stream
开启,实现对 clusterName 集群的监控。
- http://turbine-hostname:port/turbine.stream?cluster=[clusterName]
开启,实现对具体某个服务实例的监控。
- http://hystrix-app:port/hystrix.stream
前两者都对集群的监控,需要整合 Turbine 才能实现,这部分内容我们将在下一篇中做详细介绍。在本节中,我们主要实现对单个服务实例的监控,所以这里我们先来实现单个服务实例的监控。
既然 Hystrix Dashboard 监控单实例节点需要通过访问实例的
接口来实现,自然我们需要为服务实例添加这个端点,而添加该功能的步骤也同样简单,只需要下面两步:
- /hystrix.stream
中的
- pom.xml
节点中新增
- dependencies
监控模块以开启监控相关的端点,并确保已经引入断路器的依赖
- spring-boot-starter-actuator
:
- spring-cloud-starter-hystrix
- org.springframework.cloud
- spring-cloud-starter-hystrix
- org.springframework.boot
- spring-boot-starter-actuator
或
- @EnableCircuitBreaker
注解,开启了断路器功能。
- @EnableHystrix
到这里已经完成了所有的配置,我们可以在 Hystrix Dashboard 的首页输入
,已启动对 "eureka-consumer-ribbon-hystrix" 的监控,点击 "Monitor Stream" 按钮,此时我们可以看到如下页面:
- http://localhost:2101/hystrix.stream
在对该页面介绍前,我们先看看在首页中我们还没有介绍的两外两个参数:
:该参数用来控制服务器上轮询监控信息的延迟时间,默认为 2000 毫秒,我们可以通过配置该属性来降低客户端的网络和 CPU 消耗。
- Delay
:该参数对应了上图头部标题 Hystrix Stream 之后的内容,默认会使用具体监控实例的 URL,我们可以通过配置该信息来展示更合适的标题。
- Title
回到监控页面,我们来详细说说其中各元素的具体含义:
更多 Spring Cloud 内容请持续关注我的博客更新或在《Spring Cloud 微服务实战》中获取。
样例工程将沿用之前在码云和 GitHub 上创建的 SpringCloud-Learning 项目,重新做了一下整理。通过不同目录来区分 Brixton 和 Dalston 的示例。
作者:翟永超
地址: Spring Cloud 构建微服务架构:Hystrix 监控面板【Dalston 版】
来源: https://zhuanlan.zhihu.com/p/32001112