解决spring-boot-Admin的服务端和客户端不在同一个服务器的通信问题

SpringbootAdmin能够用来监控项目的运行情况,其具体介绍以及初步入门大家可以参考博客:

https://www.jianshu.com/p/2b66433bd373

按照这篇博客的内容进行配置的话,相信大家已经看到了运行的结果,结果还是非常令人兴奋的(对于初次接触这个东东的人而言)。既然有了这么好用的东西,肯定要实际使用。接下来的使用中就遇到令人蛋疼的问题了,困扰了几天。

先说一下问题:我按照上面的博客,重新写了server端,按照博客的介绍把公司的一个项目配置成了客户端。在我的win10系统电脑上面运行这两个程序是没有问题的。但是当实际部署的时候就遇到了问题:我把springbootAdmin的server端部署到了Linux系统服务器(服务器1),把要监控的项目部署到了另一台Linux服务器(服务器2),这两台服务器处于同一个局域网内。运行这两个项目,发现程序server端能够发现这个我的client项目,但是client项目一直处于断开状态。如图:

查看client端打印出来的log日志,发现提示为:应用注册失败

然后查看server端的log日志(这里强烈建议大家配置一下log日志,这样能够看到项目运行的一些信息):

这里能够发现问题:我的client端的ip地址根部就不是上面所写的ip地址。那么问题就弄清楚了,造成错误的原因是server端没有获取到正确的client地址,从而获取client的各种信息时失败了。(这里说的简单,我实际查找原因的时候也是费了很多的周折,深入到源代码一级去研究整个过程才弄明白了错误原因。这里好像我很厉害,其实源代码大部分我是看不懂的)。

扫描二维码关注公众号,回复: 2515257 查看本文章

既然找到了问题的原因那接下来的解决问题就变得容易些了(我之所以耗了几天就是因为定为不到问题的原因,从而在网上找不到正确的解决方法。之所以定为不到问题的原因,就是因为没有对server端进行log配置。可见这里log配置是多么的重要啊!!!)。解决方法就是在client端添加如下的配置:

这个配置的所用就是告知server监听的client的ip地址。有了这个配置后,server就可以根据正确的client地址获取到client端的信息了(看到有个博客讲过,当不配置这个属性的时候,client默认会把电脑名称发送给server当做client的地址,这也就是上面的图片中能够看到PV3这个名称的原因)。

总结:现在看来这个问题之所以是一个问题,原因就在于我们对springbootAdmin的配置不熟悉。其实只要认真的看springbootAdmin的参考手册,参考手册上面对这些配置都是进行了介绍的。

最后,给出springbootAdmin的参考手册地址为:http://codecentric.github.io/spring-boot-admin/2.0.1/

其中客户端的所有配置属性在3.4节表1,服务端的所有配置属性在第4章表3。以后有时间的话要深入研究下这些属性的作用。

猜你喜欢

转载自blog.csdn.net/feidie436/article/details/81324232
今日推荐