Spring Cloud Turbine
上一章我们集成了Hystrix Dashboard,使用Hystrix Dashboard可以看到单个应用内的服务信息,显然这是不够的,我们还需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上,这个工具就是Turbine。
添加依赖
修改 spring-cloud-consul-monitor 的pom文件,添加 turbine 依赖包。
注意:因为我们使用的注册中心是Consul,所以需要排除默认的euraka包,不然会有冲突启动出错。
pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </exclusion> </exclusions> </dependency>
启动类
启动类添加 @EnableTurbine 注解,开启 turbine 支持,添加 @EnableDiscoveryClient 注解,把自己也作为服务注册到注册中心。
ConsuleMonitorApplication.java
package com.louis.spring.cloud.consul.monitor; 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 @EnableHystrixDashboard @EnableDiscoveryClient @SpringBootApplication public class ConsuleMonitorApplication { public static void main(String[] args) { SpringApplication.run(ConsuleMonitorApplication.class, args); } }
修改配置
修改配置,配置注册服务信息,添加turbine配置。
application.yml
server: port: 8531 spring: application: name: spring-cloud-consul-monitor cloud: consul: host: localhost port: 8500 discovery: serviceName: ${spring.application.name} # 注册到consul的服务名称 turbine: instanceUrlSuffix: hystrix.stream # 指定收集路径 appConfig: spring-cloud-consul-consumer # 指定了需要收集监控信息的服务名,多个以“,”进行区分 clusterNameExpression: "'default'" # 指定集群名称,若为default则为默认集群,多个集群则通过此配置区分 combine-host-port: true # 此配置默认为false,则服务是以host进行区分,若设置为true则以host+port进行区分
注册消费者
因为turbine收集信息是从注册中心获取相关服务或集群的,所以需要把监控目标也注册到注册中心。
修改 spring-cloud-consul-consumer,在启动类添加 @EnableDiscoveryClient 注解,注册服务。
修改配置文件,写入配置服务名称。
测试效果
依次启动 spring-cloud-consul-producer、spring-cloud-consul-consumer、spring-cloud-consul-monitor,访问 http://localhost:8500 查看注册中心管理界面。
确认服务调用无误之后, 访问 http://localhost:8531/hystrix/,输入 http://localhost:8531/turbine.stream,查看监控图表。
如下图所示,就是聚合多个Hytrix消费者的信息显示,由于我内存有限只启了一个消费者,所以看起来是一样的。
内存足够的话复制几分消费者项目,修改下启动端口号启动就行了。