上一章我们集成了Hystrix Dashboard,使用Hystrix Dashboard可以看到单个应用内的服务信息,显然这是不够的,我们还需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上,这个工具就是Turbine。
1、修改 hystrix-dashboard服务的pom文件,添加 turbine 依赖包。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
2、启动类添加 @EnableTurbine 注解,开启 turbine 支持,添加 @EnableDiscoveryClient 注解,把自己也作为服务注册到注册中心。
package com.bingo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
@EnableTurbine //开启turbine
@EnableDiscoveryClient
@EnableHystrixDashboard //开启熔断监控支持
@SpringBootApplication
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class, args);
}
}
3、修改配置,配置注册服务信息,添加turbine配置。application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8766
spring:
application:
name: hystrix-dashboard
management:
endpoints:
web:
exposure:
include: "*"
cors:
allowed-origins: "*"
allowed-methods: "*"
turbine:
app-config: service-ribbon # 指定了需要收集监控信息的服务名,多个以“,”进行区分
aggregator:
clusterConfig: default
clusterNameExpression: "'default'" # 指定集群名称,若为default则为默认集群,多个集群则通过此配置区分
instanceUrlSuffix: hystrix.stream # 指定收集路径
combine-host-port: true
4、因为turbine收集信息是从注册中心获取相关服务或集群的,所以需要把监控目标也注册到注册中心。修改service-ribbon,在启动类添加 @EnableDiscoveryClient 注解,注册服务。
这里不想在创建项目,就启动了两个service-ribbon实例,修改了一下端口
依次启动服务,如下:
访问http://localhost:8764/feign?name=zhangsan,http://localhost:8769/feign?name=zhangsan
访问 http://localhost:8766/hystrix/,输入 http://localhost:8766/turbine.stream,查看监控图表。(注意这个输入的服务是集群的服务,跟上一章有所不同)
参考资料: