我用的是Nacos不是Eureka
一、首先添加Pom文件的Maven依赖,如果是用Nacos就需要把Trubine 的Eureka给剔除掉,不然的话会起依赖冲突,Nacos依赖的下面几个是Turbine Hystrix必须要加的依赖
<!--引入阿里NACOS 配置管理-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.1.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--hystrix 面板-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<!--集群监控 排除eureka依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine</artifactId>
<version>1.4.7.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-eureka-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</exclusion>
</exclusions>
</dependency>
二、配置Nacos yam文件
我配置在网关里面,也就是我配置Turbine入口模块
turbine:
app-config: goit4-dms-alco,goit4-ems-alco #需要监控的服务名称
aggregator:
cluster-config: default
cluster-name-expression: "'default'" //不要忘记单引号
combine-host-port: true
instanceUrlSuffix: /actuator/hystrix.stream //默认地址
需要被监控的模块配置,我只拿出来一些关于Hystrix的配置,其余的配置和这个关系不大就没有放上去了,上面的网关配置也一样
spring:
application:
name: goit4-dms-alco //服务名称
feign:
hystrix:
enabled: true
hystrix:
threadpool:
default:
coreSize: 20
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
三、启动类加注解
@SpringBootApplication
@EnableDiscoveryClient //发现Nacos服务
@EnableZuulProxy
@EnableOAuth2Sso
@EnableHystrixDashboard //开启Hystrix监控面板
@EnableTurbine //开启Turbine
@EnableCircuitBreaker //开启熔断
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class, args);
}
@Bean
public ServletRegistrationBean getServlet() { //boot工程2.0X以上这个必须要加
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream"); //2.0X 默认地址
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
}
四、配置了Turbine的启动顺序必须在被监控的模块后面
然后输入127.0.0.1:8302/hystrix //这边的ip和端口号都是自己在nacos里面定义的,输入自己的就好,后面加个hystrix
基本上只需要关注那个长条的文本框,输入刚才的地址加端口号拼接上在启动写的默认地址/actuator/hystrix.stream
点击按钮就会进入如下页面
五、之前遇到的一些问题汇总
1)之前报错404,找不到127.0.0.1:8302/actuator/hystrix.stream
我的解决方法
启动类加上
@Bean
public ServletRegistrationBean getServlet() { //boot工程2.0X以上这个必须要加
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream"); //2.0X 默认地址
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
2)一直Loading,不报错,也不输出数据
这个问题卡了我很久,搞的很难受,百度上找了几种方法都还是一样在Loading,然后才发现,我不应该把turbine配置在auth模块的启动类里面,换成了网关之后就成功了
原因是没有触发熔断,所以一直没有数据