我们知道dashiboard可以对hystrix.stream的节点监控进行图形化显示。但是dashboard一次只能监控一个节点,我们的微服务可能是成百上千的,那么通过turbine监控集群。
一、搭建turbine项目
1、建立maven项目,导入maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
2、在主方法上添加注解@EnableTurbine
3、配置配置文件
turbine:
aggregator:
clusterConfig: default
#添加需要监控的项目
appConfig: zw_consumer_movie_ribbon_width_hystrix,zw-consumer-movie-feign-with-hystrix
clusterNameExpression: "'default'"
4、启动相关项目时,打开如下节点,可以看到turbine在监控项目信息。
5、为了可视化turbine监控结果,我们需要启动dashboard,将turbine监控点输入,进行分析如下图所示
二、服务端口,监控端口
通过上面我们发现服务端口和监控端口一样,其实是可以单独配置的,如何实现呢。
1、我们通过在监控的服务的配置文件上加如下注解
三、请求地址
我们知道在微服务中,默认的请求跟地址是/
我们可以通过如下注解,改变跟地址
server:
port: 8010
context-path: /ribbon
那么这个时候我们再次通过http://localhost:port/hystrix.stream监控就会出现404错误,
我们需要通过http://localhost:port/ribbon/hystrix.stream
但是我们的turbine不会知道需要用这个链接去监控这个微服务,因此就会报错,无法监控这个微服务,这时候turbine该怎么配置呢,解决方法如下
turbine:
aggregator:
clusterConfig: MICROSERVICE-CONSUMER-MOVIE-RIBBON-WITH-HYSTRIX2
appConfig: microservice-consumer-movie-ribbon-with-hystrix2
turbine.instanceUrlSuffix.MICROSERVICE-CONSUMER-MOVIE-RIBBON-WITH-HYSTRIX2: /ribbon/hystrix.stream
logging:
level:
root: INFO
com.netflix.turbine.monitor: DEBUG
通过这个配置,首先我们turbine再次可以监控服务了,同时通过日志信息,我们能看到turbine发送的请求监控链接是什么。