概述
在整个熔断器中,有一个组件叫Hystrix Dashboard,Hystrix Dashboard可以可视化查看实时监控数据,让我们可以发现哪些服务端口出现了熔断;
本系列源码地址:https://github.com/lhmyy521125/toher-springcloud-sample
准备工作
还是复制上一章的toher-springcloud-sample5-feign-hystrix 项目,命名为toher-springcloud-sample6-hystrix-dashboard,按照以前章节的方法,再次新建一个module, 工程名为 web-hystrix-dashboard
因为该工程仅仅是作为hystrix的一个可视化监控工程,我们无需注册到服务中心,就简单的一个springboot项目;
pom.xml 文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.toher</groupId>
<artifactId>springcloud-sample</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.toher</groupId>
<artifactId>web-hystrix-dashboard</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>web-hystrix-dashboard</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
</dependencies>
</project>
修改工程配置YML文件
server:
#服务端口
port: 9101
spring:
application:
#服务名称
name: web-hystrix-dashboard
改造service-feign工程(Ribbon同理操作)
首先引入所需组件,注意Ribbon 和 Feign的区别,回去查阅一下源码,你会发现toher-springcloud-sample5-feign-hystrix的源码中,并没有引入spring-cloud-starter-netflix-hystrix, 因为Feign是自带断路器的,所以我们无需引入,但是并没有整合到监控的模块,所以我们需要重新引入依赖包
概括来说 不管接下来项目中是采用Ribbon 还是 Feign 都默认添加下面两个依赖即可;
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
修改配置文件,因为我们引入了 spring-boot-starter-actuator 这个组件,默认actuator监控不会对外暴露hystrix.stream端点,默认情况下,只会暴露health和info端点,所以我们开启它;
spring:
application:
name: service-feign
server:
port: 9004
feign:
hystrix:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
management:
endpoints:
web:
exposure:
#actuator监控对外暴露hystrix.stream端点,默认情况下,只会暴露health和info端点
include: health, info, hystrix.stream
最后启动类上添加 @@EnableHystrix
@EnableHystrix
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceFeignApplication.class, args);
}
}
测试效果
依次启动 eureka-server , service-hello , service-feign ;我们先看看actuator 暴露出来的hystrix.stream 信息是什么样的;请求格式:http://ip:port/actuator/hystrix.stream 我们service-feign 端口为9004 访问效果如下:
这么密密麻麻的监控信息 ,我要怎么看怎么理解啊? 没错接下来就是启动我们创建的 web-hystrix-dashboard 工程;
文本框中的URL就是我们刚才已经配置好的 http://ip:port/actuator/hystrix.stream ; 输入对应值后,点击Monitor Stream按钮,结果如下:
各颜色的数字状态可以参考 界面右上角 ,不同颜色对应不同的状态
重新打开一个窗口,多次在浏览器地址栏刷新访问 http://localhost:9004/helloFeign?name=Feign 返回查看监控页面,查看对应结果把~
结语
本章为大家介绍了,如果开启配置熔断监控 和 可视化监控Hystrix Dashboard 配置运行以及简单说明,本章仅用了Feign的作为演示,Ribbon操作流程都是一致的,就不需要赘述了;
下一篇:路由网关Zuul