1. Hystrix Dashboard (断路器:hystrix 仪表盘)
Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboard可以很高效的现实每个断路器的健康状况。
1). 在Ribbon服务g和Feign服务的Maven工程的pom.xml中都加入依赖
12 5org.springframework.boot 3spring-boot-starter-actuator 46 org.springframework.cloud 7spring-cloud-starter-hystrix-dashboard 8
spring-boot-starter-actuator用于手机metric, 支持hystrix.stream。spring-cloud-starter-hystrix-dashboard支持dashboard的UI
2)在Spring Boot启动类上用@EnableHystrixDashboard注解和@EnableCircuitBreaker注解。需要特别注意的是我们之前的Feign服务由于内置断路器支持, 所以没有@EnableCircuitBreaker注解,但要使用Dashboard则必须加,如果不加,Dashboard无法接收到来自Feign内部断路器的监控数据,会报“Unable to connect to Command Metric Stream”错误
1 @SpringBootApplication 2 @EnableDiscoveryClient 3 @EnableFeignClients 4 @EnableCircuitBreaker 5 @EnableHystrixDashboard 6 public class ServiceFeignApplication { 7 8 public static void main(String[] args) { 9 SpringApplication.run(ServiceFeignApplication.class, args); 10 } 11 }
3)然后就可以访问/hystrix,这个URL将
dashboard指向定义在Hystrix客户端应用中的/hystrix.stream
在dashboard中输入服务的URL:点击 monitor后进入监控界面,访问我们之前创建的Ribbon服务localhost:8901/, 或者Feign服务localhost:8902/可以看到监控UI动态变化
2. 利用Turbine在一个Dashboard上监控多个流
以上例子只能监控一个,要同时监控多个流怎么办? 答案是, 可以单独做一个Turbine服务,专门监控所有断路器状态,从而掌握整个系统中所有微服务的状态。下面我们就来创建一个Turbine服务,来监控我们之前做的Feign服务和Ribbon服务
1). 创建一个maven工程, 在pox.xml添加以下依赖
12 5org.springframework.cloud 3spring-cloud-starter-turbine 46 9org.springframework.cloud 7spring-cloud-netflix-turbine 810 13org.springframework.boot 11spring-boot-starter-actuator 1214 org.springframework.cloud 15spring-cloud-starter-hystrix-dashboard 16
整个个pox.xml文件如下:
1 25 4.0.0 6cm.chry 7spring.helloworld.turbine.service 80.0.1-SNAPSHOT 9spring.helloworld.turbine.service 10Turbine service demo 1112 17 18org.springframework.boot 13spring-boot-starter-parent 141.5.3.RELEASE 1516 19 23 24UTF-8 20UTF-8 211.8 2225 55 5626 29org.springframework.cloud 27spring-cloud-starter-eureka 2830 33org.springframework.boot 31spring-boot-starter-web 3234 37org.springframework.cloud 35spring-cloud-starter-turbine 3638 41org.springframework.cloud 39spring-cloud-netflix-turbine 4042 45org.springframework.boot 43spring-boot-starter-actuator 4446 49org.springframework.cloud 47spring-cloud-starter-hystrix-dashboard 4850 54org.springframework.boot 51spring-boot-starter-test 52test 5357 67 6858 6659 65org.springframework.cloud 60spring-cloud-dependencies 61Dalston.RC1 62pom 63import 6469 76 7770 7571 74org.springframework.boot 72spring-boot-maven-plugin 7378 8779 86spring-milestones 80Spring Milestones 81https://repo.spring.io/milestone 8283 85false 84
2). 创建Turbine Dashboard启动类:
用@EnableHystrixDashboard和@EnableTurbine修饰主类, 分别用于支持Hystrix Dashboard和Turbine
1 package spring.helloworld.turbine.service; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 6 import org.springframework.cloud.netflix.turbine.EnableTurbine; 7 8 @SpringBootApplication 9 @EnableHystrixDashboard10 @EnableTurbine11 public class DashboardApplication {12 13 public static void main(String[] args) {14 SpringApplication.run(DashboardApplication.class, args);15 }16 }
3). 在application.yml中配置turbine参数
1 eureka: 2 client: 3 serviceUrl: 4 defaultZone: http://localhost:8761/eureka/ 5 server: 6 port: 8903 7 spring: 8 application: 9 name: hystrix-dashboard-turbine10 turbine:11 appConfig: service-feign, service-ribbon12 aggregator:13 clusterConfig: default14 clusterNameExpression: new String("default")
turbine.appConfig定义了要监控的服务,这里是我们在前面章节创建的service-feign和sercice-ribbon; aggregator.clusterConfig定义了聚合方式, 此处为default.
turbine.appConfig
:配置Eureka中的serviceId列表,表明监控哪些服务
turbine.aggregator.clusterConfig
:指定聚合哪些集群,多个使用”,”分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}
访问
turbine.clusterNameExpression
:指定集群名称,可以是三种类型的值
- 默认表达式为appName;此时turbine.aggregator.clusterConfig
需要配置想要监控的应用名称;
- 当为default时,turbine.aggregator.clusterConfig
可以不写,因为默认就是default;
- 当为metadata[‘cluster’]时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC
,则需要配置,同时turbine.aggregator.clusterConfig: ABC
4). 依次启动eureka服务, 2个Helloworld服务, Feign服务,ribbon服务和刚创建turbine服务。从eureka服务中我们可以看到
5)通过Turbine服务访问HystrixDashborad, http:localhost:8903/hystrix
监控流的URL填http://localhost:8903/turbine.stream, 点击monitor stream, 进入监控页面, 随便刷新下feign和ribbon服务(http://localhost:8902/hello和http://localhost:8901), 可以看到监控页面的变化。如下图, 两个服务的监控都会显示在dashboard上
上一篇:
下一篇:
参考: http://projects.spring.io/spring-cloud/spring-cloud.html#_circuit_breaker_hystrix_dashboard
http://blog.csdn.net/ityouknow/article/details/72625646