文章目录
向Spring Boot Admin显示离线实例(Failed to resolve ‘X.mshome.net’ [A(1)] after 2 queries)
1. 版本
当前使用必要软件的版本号
名称 | 版本 |
---|---|
Java | 21 |
Spring Framework | 6.1.1 |
Spring Boot | 3.2.0 |
spring-boot-admin-starter-server | 3.2.0 |
spring-boot-admin-starter-client | 3.2.0 |
2. 问题描述
在写 【Spring实战】24 使用 Spring Boot Admin 管理和监控应用 文章的示例代码的时候,出现了这个错误,大概操作流程如下:
1)正常启动了 Admin 服务端服务
2)在将 Spring 客户端向 Admin 服务端注册的时候,Admin 服务端控制台总是显示 离线实例
如下图所示:
Admin 服务端的控制台,出现如下错误信息
Failed to resolve ‘Cheney.mshome.net’ [A(1)] after 2 queries
详细信息:
org.springframework.web.reactive.function.client.WebClientRequestException: Failed to resolve 'Cheney.mshome.net' [A(1)] after 2 queries
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:136) ~[spring-webflux-6.1.1.jar:6.1.1]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
3. 如何解决
在 Spring 客户端服务的 配置文件 里,额外添加上 spring.boot.admin.client.instance.management-base-url= http://localhost:8090
,这里的 http://localhost:8090
是 Admin 服务端的 IP:端口。
application.properties
spring.application.name=cheney-demo
spring.boot.admin.client.url=http://localhost:8090/admin
spring.boot.admin.client.instance.management-base-url= http://localhost:8090
spring.boot.admin.client.instance.management-base-url
是 Spring Boot Admin 客户端配置的一部分,用于指定管理端点的基本URL。它定义了用于监控和管理客户端应用程序的具体URL。
具体来说,management-base-url
是客户端应用程序的 Actuator 端点的基本URL。Actuator 端点包含了应用程序的监控和管理功能,例如 /actuator/health
、/actuator/info
等。Spring Boot Admin 通过访问这些端点来获取应用程序的健康状态等信息。
在报错的情况下,当我们将 spring.boot.admin.client.instance.management-base-url
设置为 http://localhost:8090
时,实际上是告诉 Spring Boot Admin 客户端应该访问的 Actuator 端点的基本URL是 http://localhost:8090/actuator
。这样,Spring Boot Admin 就能够正确地获取有关客户端应用程序的信息,从而不再报错。
4. 验证
再次启动 Spring 客户端服务之后,发现没有上述问题了
总结
总之,通过显式的设置 management-base-url
,可以为 Spring Boot Admin 提供了正确的信息,使其能够准确地监控和管理我们的客户端应用程序。