Spring Cloud Turbine集群监控一直Loading问题

这是最近在 学习Spring Cloud 按照书或者网上的例子敲示例遇到的问题,这个问题网上有很多答案,但是我遇到的问题和其他人不同, 如果你也遇到类似问题,希望下面的解决方法能帮助到你




问题描述:

搭建Spring Cloude Turbine集群监控

参考代码: GitHub - PNZBEIJINGL/spring-cloud-lab  

服务端口
eureka-peer1000Eureka服务注册中心
hystrix-dashboard2001Hystrix仪表板
hystrix-turbine2002Turbine 集群监控
ms-customer8001客户服务
ms-customer_interface客户接口工程
ms-ribbon-consumer8002消费服务(测试调用客户服务)

第一步: 先创建标准的spring boot工程,命名为hystrix-turbine ,pom增加依赖

    <dependencies>

        <!--引入 turbine来聚合RIBBON-CONSUMER-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-turbine</artifactId>
        </dependency>

        <!--引入Spring Boot 监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
        </dependency>

    </dependencies>

这里要注意:《Spring Cloud 微服务实战》和网上的一些例子没有说明 添加spring-boot-starter-hateoas 依赖 ,我在测试的时候发现没有此依赖会因为缺少TypeConstrainedMappingJackson2HttpMessageConverter,报ClassNotFoundException。没有进一步研究原因,猜测可能是因为版本引起。 增加依赖后报错解决

Caused by: java.lang.ClassNotFoundException: 

org.springframework.hateoas.mvc.TypeConstrainedMappingJackson2HttpMessageConverter

第二步:启动类增加注解@EnableTurbine@EnableDiscoveryClient@SpringBootApplication ,并设置application.properties

# 应用名称
spring.application.name=hystrix-turbine
server.port=2002
management.port=8990

############ Eureka ################
eureka.instance.hostname=localhost
#指定服务注册中心
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:1000/eureka/
############ Eureka ################

############ Turbine ################
#参数指定了需要手机监控信息的服务名
turbine.app-config=MS-RIBBON-CONSUMER
#指定了集群名称为default,参数用于区分不同的聚合集群,
turbine.cluster-name-expression="default"
#可以让同一主机上的服务通过主机名于端口号的组合来进行区分
turbine.combine-host-port=true
############ Turbine ################

启动上面的5个服务后,访问 http://127.0.0.1:2001/hystrix.stream Hystrix的仪表盘监控界面,并开启对集群监控,http://127.0.0.1:2002/turbine.stream,界面一直Loading 

 其后台报错Connection refused: connect

java.net.ConnectException: Connection refused: connect
	at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method) ~[na:na]
	at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107) ~[na:na]
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) ~[na:na]
	at java.base/java.net.Socket.connect(Socket.java:591) ~[na:na]
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.3.jar:4.5.3]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.3.jar:4.5.3]
	at com.netflix.turbine.monitor.instance.InstanceMonitor.init(InstanceMonitor.java:307) ~[turbine-core-1.0.0.jar:na]




原因分析:

开始从网络上查找问题发现几种原因

  • Turbine应用没有添加spring-boot-starter -actuator 依赖
  • Turbine应用主类注解不正确
  • Turbine应用applicaiton.properties中turbine.app-config 服务名称拼写不催
  • Turbine应用applicaiton.properties中turbine.cluster-name-expression 配置的值需要修改成new String("default")

检查和测试发现自己的问题仍然没有解决, 因此断点调试才发现问题

 turbine监控服务的时候,根据监控的服务名称来得到监控地址是 http://192.168.20.134:8002/hystrix.stream, 尝试浏览器输入http://192.168.20.134:8002/hystrix.stream发现找不到访问结果,再查看ms-ribbon-consumer 配置发现配置了server.address=127.0.0.1 , spring boot 配置中server.address=127.0.0.1时候,只有localhost和127.0.0.1可以方法,不能使用IP192.168.20.134访问,因此造成监控失败




解决方案:

Spring Boot 中server.address 的配置方式

  • server.address 配置为对应机器ip地址时 ,如 192.168.20.134 只能用此IP访问
  • server.address 配置为127.0.0.1 的时候, 只能用127.0.0.1 和localhost访问,不能用机器IP访问
  • server.address 配置不设置的时候,可以用127.0.0.1 和localhost和机器IP访问

因为turbine监控是按照IP访问的所以需要保证http://192.168.20.134:8002/hystrix.stream访问成功,因此将ms-ribbon-consumer 中配置server.address=127.0.0.1 删除后,我的问题得到解决

      上一篇:Spring Cloud Hystrix断路器应用学习

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

=PNZ=BeijingL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值