参考资料:
Hystrix GitHub 官方文档
Hystrix Wiki 文档
spring Cloud 文档
版本:Spring Boot 2.1.5.RELEASE 、Spring Cloud Greenwich.SR
在 Hystrix Dashboard 界面中,我们能够知道有三种输入方式获取 Hystrix 监控信息
默认集群监控
Cluster via Turbine (default cluster): http://turbine-hostname:port/turbine.stream
自定义集群监控
Cluster via Turbine (custom cluster): http://turbine-hostname:port/turbine.stream?cluster=[clusterName]
单个Hystrix应用监控
Single Hystrix App: http://hystrix-app:port/actuator/hystrix.stream
上图是 Hystrix Dashboard 监控的所有指标数据。这些指标数据分为两类: circuit 性能指标,Thread Pool 性能指标。
Circuit 性能指标
circuit 是针对接口级别的 Hystrix 监控数据。
图中左上角的曲线和带有颜色的圆。
曲线代表的是 2分钟内的流量变化趋势。
带颜色的圆表示的是流量请求的健康程度。有:绿色,黄色,橙色,红色。根据颜色排列流量非成功次数越来越多。
图中右侧的数字信息在右上角有相应的解释,颜色也是一一对应。
其他的指标信息
Thread Pool性能指标
线程指标:核心线程数,队列大小等。
**step1、**基于 spring boot 2.1.5 ,spring cloud Greenwich.SR1创建应用
**step2、**引入 Hystrix Dashboard 依赖
org.springframework.cloud
spring-cloud-starter-netflix-hystrix-dashboard
**step3、**启动类增加注解 @EnableHystrixDashboard
**step4、**application.properties 可以自定义其他的配置,如:端口信息等。
通过访问:http://localhost:{port}/hystrix 进入 Hystrix Dashboard 界面。
Hystrix Dashboard 工作原理是监听服务 http://localhost:port/actuator/hystrix.stream 监控信息流获取信息,然后根据获取信息进行图形化。所以被监控服务需要保证 actuator/hystrix.stream 接口能够正常提供访问。
**step1、**引入依赖
org.springframework.boot
spring-boot-starter-actuator
**step2、**application.properties 配置开启 hystrix.stream 端口访问
## web 端点访问 hystrix.stream
management.endpoints.web.exposure.include = hystrix.stream
简单使用 Hystrix Dash 只能够支持 单个应用的 actuator/hystrix.stream 接口数据监测获取与数据展示。无法满足分布式应用场景的应用。
为了能够满足分布式的场景,需要使用到 Turbine 。通过 Turbine 聚合多个 actuator/hystrix.stream 传递的数据并进行展示。
使用 Turbine 为 Hystrix Dashboard 提供聚合能力之后,Hystrix Dashboard 能够提供无论是单应用还是集群应用的 Hystrix 监控展示。
注意: Turbine 默认使用 Eureka 进行服务实例的获取。
**step1、**项目搭建过程,同上面的 Hystrix Dashboard 一样。在其的基础上,增加新的依赖
org.springframework.cloud
spring-cloud-starter-netflix-turbine
step2、准备两个集成 hystrix 的应用。分别为:应用1 和 应用2。
应用1:turbine 相关配置
spring.application.name=hystrix-in-common-use-config
eureka.instance.metadata-map.cluster = SINGLE_HYSTRIX
应用2:turbine 相关配置
spring.application.name = consumer
eureka.instance.metadata-map.cluster = FEIGN_HYSTRIX
step3、hystrix dashboard turbine 相关配置
turbine.aggregator.cluster-config = FEIGN_HYSTRIX,SINGLE_HYSTRIX
turbine.app-config = hystrix-in-common-use-config,consumer
turbine.cluster-name-expression = metadata['cluster']
**step4、**测试
测试准备: 启动四个 Hystrix 服务实例,提供 Hystrix 监控信息。
实例一:启动应用1,端口号 9527
实例二:启动应用1,端口号 9528
实例三:启动应用2,端口号 9529
实例四:修改应用2配置,修改 eureka.instance.metadata-map.cluster = FEIGN_HYSTRIX 为 eureka.instance.metadata-map.cluster = SINGLE_HYSTRIX 。然后启动一个实例,端口号 9530。
表格:提供 Hystrix 监控信息的服务实例,以及 Hystrix 监控集群信息配置
端口号 | 从属 Hystrix 监控集群 | 项目实例 | |
---|---|---|---|
实例一 | 9527 | SINGLE_HYSTRIX | 应用1 |
实例二 | 9528 | SINGLE_HYSTRIX | 应用1 |
实例三 | 9529 | FEIGN_HYSTRIX | 应用2 |
实例四 | 9530 | SINGLE_HYSTRIX | 应用2 |
表格:应用存在的 Hystrix 方法调用
Hystrix调用方法 | |
---|---|
应用1 | UserClient#saveUser、UserClient#queryUserByUserId、FeignHystrixController#feignDemo |
应用2 | CaseController#syncCommand |
测试一、查看SINGLE_HYSTRIX集群监控数据
测试二、查看 FEIGN_HYSTRIX 集群监控数据
通过查看 FEIGN_HYSTRIX 能够得到
Hystrix Dashboard 是通过 API 接口方法名进行数据汇总展示。
多个应用定义了相同的请求方法名,这几个应用 Hystrix Dashboard 聚合查看,不同的应用相同的方法名,会被聚合成一个统> 计信息。所以在开发中,需要尽量避免简单方法命名,尽量根据业务场景进行命名。