使用turbine后控制后台终端一直loading

​ 最近在使用Spring cloud时发现一个bug,就是使用Hystrix时,单点监控在页面显示正常,而集群监控显示一直loading,最后显示Unable to connect to Command Metric Stream.总结了下一些可能原因,也许对你们有用:

  1. app config 和被监控服务的名称要一致,被监控服务有多个时要用逗号隔开,示例如下: appConfig: demo-service ### 配置Eureka中的serviceId列表,表明监控哪些服务
  2. 如果有访问被监控服务服务的程序,看看程序是否已经打开
  3. 检查yml文件空格,以及@EnableTurbine标签有没有写在TurbineApplication上
  4. 据说,嘻嘻就是据说,这个我验证过,好像没啥用,不过看到网上好多说有用的,一并写了(这个东西写了后面好像有用,而且不影响,所以能配还是配上)。由于Springboot2.0的原因,要在turbine的application.yml设置instanceUrlSuffix.APPCLUSTER: /hystrix.stream
  5. 在TurbineApplication下增加如下配置:
@Bean
public ServletRegistrationBean getServlet() {
    HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
    ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
    registrationBean.setLoadOnStartup(1);
    registrationBean.addUrlMappings("/hystrix.stream");
    registrationBean.setName("HystrixMetricsStreamServlet");
    return registrationBean;
}

最后分享一个解决这个bug中查到的示例配置吧,希望能对你们有所启发!

Demo application.yml:

management:
  security:
    enabled: false
  port: 8081

hystrix:
  enabled: true

Demo bootstrap.yml:

spring:
  application:
    name: demo-service
  cloud:
    config:
      discovery:
        enabled: true
        serviceId: config-service

eureka:
  client:
    register-with-eureka: false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    hostname: ${APPLICATION_DOMAIN:localhost}
    nonSecurePort: 8090
    metadataMap:
      management.port: 8082

Hystrix Dashboard & Turbine bootstrap.yml:

...
turbine:
  aggregator:
    clusterConfig: DEMO-SERVICE
  appConfig: demo-service

如果还有什么问题可以发在评论区大家一起讨论

你可能感兴趣的:(使用turbine后控制后台终端一直loading)