在复杂的分布式系统中,相同服务的节点经常需要部署上百甚至上千个,很多时候,运维人员希望能够把相同服务的节点状态以一个整体集群的形式展现出来,这样可以更好的把握整个系统的状态。 为此,Netflix提供了一个开源项目(Turbine)来提供把多个hystrix.stream的内容聚合为一个数据源供Dashboard展示。
建立一个hystrix--turbine模块
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-ribbon
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-starter-hystrix-dashboard
org.springframework.cloud
spring-cloud-starter-turbine
org.springframework.cloud
spring-cloud-netflix-turbine
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-actuator
#端口
server.port=8091
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
eureka.client.serviceUrl.defaultZone=http\://localhost\:8081/eureka/
#这在以后的服务与服务之间相互调用一般都是根据这个name
spring.application.name=hystrix-dashboard-turbine
# 心跳时间,即服务续约间隔时间(缺省为30s)
eureka.instance.lease-renewal-interval-in-seconds= 5
# 发呆时间,即服务续约到期时间(缺省为90s)
eureka.instance.lease-expiration-duration-in-seconds=15
eurekaclientURL=http://EUREKA-CLIENT/hello?age=
#配置Eureka中的serviceId列表,表明监控哪些服务
turbine.appConfig=hystrix-service-turbine,hystrix-service
#指定聚合哪些集群,多个使用","分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}访问
turbine.aggregator.clusterConfig= default
turbine.clusterNameExpression= new String("default")
turbine.appConfig
:配置Eureka中的serviceId列表,表明监控哪些服务turbine.aggregator.clusterConfig
:指定聚合哪些集群,多个使用","分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}
访问turbine.clusterNameExpression
: 1. clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig
需要配置想要监控的应用名称;2. 当clusterNameExpression: default时,turbine.aggregator.clusterConfig
可以不写,因为默认就是default;3. 当clusterNameExpression: metadata['cluster']时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC
,则需要配置,同时turbine.aggregator.clusterConfig: ABC
启动类添加@EnableTurbine
,激活对Turbine的支持
@SpringBootApplication
//启用Hystrix仪表板
@EnableHystrixDashboard
//启动类添加@EnableTurbine,激活对Turbine的支持
@EnableTurbine
public class HystrixApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixApplication.class, args);
}
}
到此Turbine(hystrix--turbine)配置完成
启动两个使用了hystrix示例项目hystrix-service-turbine,hystrix-turbine
spring-cloud-consumer-node1项目改动如下:
application.properties文件内容分别为
#端口
server.port=8085
eureka.instance.hostname=localhost
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
eureka.client.serviceUrl.defaultZone=http\://localhost\:8081/eureka/
#这在以后的服务与服务之间相互调用一般都是根据这个name
spring.application.name=hystrix-service
#eureka.client.register-with-eureka=true
#eureka.client.fetch-registry=true
# 心跳时间,即服务续约间隔时间(缺省为30s)
eureka.instance.lease-renewal-interval-in-seconds= 5
# 发呆时间,即服务续约到期时间(缺省为90s)
eureka.instance.lease-expiration-duration-in-seconds=15
eurekaclientURL=http://EUREKA-CLIENT/hello?age=
#端口
server.port=8092
eureka.instance.hostname=localhost
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
eureka.client.serviceUrl.defaultZone=http\://localhost\:8081/eureka/
#这在以后的服务与服务之间相互调用一般都是根据这个name
spring.application.name=hystrix-service-turbine
#eureka.client.register-with-eureka=true
#eureka.client.fetch-registry=true
# 心跳时间,即服务续约间隔时间(缺省为30s)
eureka.instance.lease-renewal-interval-in-seconds= 5
# 发呆时间,即服务续约到期时间(缺省为90s)
eureka.instance.lease-expiration-duration-in-seconds=15
eurekaclientURL=http://EUREKA-CLIENT/hello?age=
打开eureka后台可以看到注册了三个服务:
访问 http://localhost:8091/turbine.stream
返回:
: ping data: {"reportingHostsLast10Seconds":2,"name":"meta","type":"meta","timestamp":1512354379389} data: {"currentCorePoolSize":10,"currentLargestPoolSize":10,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"currentActiveCount":0,"currentMaximumPoolSize":10,"currentQueueSize":0,"type":"HystrixThreadPool","currentTaskCount":18,"currentCompletedTaskCount":18,"rollingMaxActiveThreads":0,"rollingCountCommandRejections":0,"name":"HelloService","reportingHosts":1,"currentPoolSize":10,"propertyValue_queueSizeRejectionThreshold":5,"rollingCountThreadsExecuted":0}
并且会不断刷新以获取实时的监控数据,说明和单个的监控类似,返回监控项目的信息。进行图形化监控查看,输入:http://localhost:8091/hystrix,返回酷酷的小熊界面,输入:http://localhost:8091/turbine.stream,然后点击 Monitor Stream ,可以看到出现了俩个监控列表
原文:https://www.cnblogs.com/ityouknow/p/6889059.html