前言:
上一节里面,我们使用 Hystrix Dashboard, 只能看到单个应用内的服务信息。在生产环境下,我们经常是集群状态,所以我们就要用到 Turbine 这个应用。
作用:汇总系统内多个服务的数据并显示到 Hystrix Dashboard 上。
一、 新建项目 spring-cloud-turbine
1、 添加 jar
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-turbineartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-eurekaartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
2、 配置文件:application.properties
# server
server.port=9999
# spring
spring.application.name=spring-cloud-turbine
# eureka
#eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
eureka.client.serviceUrl.defaultZone=http://drunck:123456@localhost:8761/eureka/
# info自定义
info.build.name=@project.name@
info.build.description=@project.description@
info.build.groupId=@project.groupId@
info.build.artifact=@project.artifactId@
info.build.version=@project.version@
eureka.instance.status-page-url-path=/info
eureka.instance.instanceId=${spring.application.name}:${random.value}
eureka.instance.prefer-ip-address=true
#设置拉取服务注册信息时间,默认60s
eureka.client.registry-fetch-interval-seconds=30
#指定续约更新频率,默认是30s
eureka.instance.lease-renewal-interval-in-seconds=15
#设置过期剔除时间,默认90s
eureka.instance.lease-expiration-duration-in-seconds=45
# turbine(说明:注意必须为大写,因为 eureka 返回的值都是大写的)
turbine.aggregator.clusterConfig=SPRING-CLOUD-CONSUMER
turbine.app-config=spring-cloud-consumer
3、 创建主类,添加 @EnableTurbine 注解
package com.drunck.education;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
@EnableTurbine
@SpringBootApplication
public class TurbineApplication {
public static void main(String[] args) {
SpringApplication.run(TurbineApplication.class, args);
}
}
二、 测试:如何监控一个集群应用
1、 启动应用,SPRING-CLOUD-CONSUMER 启动 2 个(8888,8889),注意端口冲突(去除 devtools 依赖)
2、 访问:http://localhost:8761/hystrix
同时要监控 8888 和 8889 端口
方法一:
分别加入:
http://localhost:8888/hystrix.stream 和 http://localhost:8889/hystrix.stream
方法二:
加入:http://localhost:9999/turbine.stream?cluster=SPRING-CLOUD-CONSUMER
说明:其中 cluster 对应配置文件中 clusterConfig 中的名称
3、 访问:http://localhost:8888/user/1 和 http://localhost:8889/user/1
三、 测试:如何监控多个集群应用
1、spring-cloud-turbine 的 application.properties 添加配置:(注销之前的配置)
turbine.aggregator.clusterConfig=drunck
turbine.app-config=spring-cloud-consumer,spring-cloud-consumer2
turbine.cluster-name-expression=metadata['cluster']
turbine.combine-host-port=true
# 默认为 true,让同一个主机上面的服务通过主机名与端口号的组合来区分
2、spring-cloud-consumer 的 application.properties 添加配置:
eureka.instance.metadata-map.cluster=DRUNCK
(这个时候,需要在 spring-cloud-consumer,spring-cloud-consumer2 配置)
3、在 http://localhost:8761/hystrix 加入:http://localhost:9999/turbine.stream?cluster=DRUNCK
四、 测试:监控全部应用
1、 spring-cloud-turbine 的 application.properties 修改配置: 保留:
turbine.app-config=spring-cloud-consumer,spring-cloud-consumer2
修改:
turbine.cluster-name-expression='default'
禁用:
# turbine.aggregator.clusterConfig=DRUNCK
2、 在 http://localhost:8761/hystrix 加入:http://localhost:9999/turbine.stream