SpringBoot整合SpringBoot-Admin实现监控应用功能的方法

搭建Admin Server

引入依赖

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>spring-learn</artifactId>        <groupId>org.ym</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>learn-monitor</artifactId>    <properties>        <maven.compiler.source>8</maven.compiler.source>        <maven.compiler.target>8</maven.compiler.target>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>de.codecentric</groupId>            <artifactId>spring-boot-admin-starter-server</artifactId>            <exclusions>                <exclusion>                    <groupId>io.projectreactor.netty</groupId>                    <artifactId>reactor-netty</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>io.projectreactor.netty</groupId>            <artifactId>reactor-netty</artifactId>        </dependency>        <!--健康检查-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-actuator</artifactId>        </dependency>        <!--解决启动时报dns native错误-->        <dependency>            <groupId>io.netty</groupId>            <artifactId>netty-resolver-dns-native-macos</artifactId>            <classifier>osx-aarch_64</classifier>        </dependency>    </dependencies></project>

Admin Server启动类

@EnableAdminServer@SpringBootApplicationpublic class MonitorApplication {    public static void main(String[] args) {        SpringApplication.run(MonitorApplication.class, args);    }}

application.yml配置

server:  port: 9401spring:  application:    name: learn-monitor  boot:    admin:      monitor:        default-timeout: 30000

测试

http://127.0.0.1:9401/applications

搭建Admin Client

引入依赖

<!--admin--><dependency>    <groupId>de.codecentric</groupId>    <artifactId>spring-boot-admin-starter-client</artifactId></dependency>

application.yml配置

spring:  application:    name: learn-test  mvc:    pathmatch:      matching-strategy: ant_path_matcher  boot:    admin:      client:        url: http://localhost:9401 #配置admin-server地址management:  endpoints:    web:      exposure:        include: '*'  endpoint:    health:      show-details: always

存在问题

java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 10000ms in 'map' (and no fallback has been configured)	at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295) ~[reactor-core-3.4.21.jar:3.4.21]	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s):	*__checkpoint ⇢ Request to GET health [DefaultWebClient]Original Stack Trace:		at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:280) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:419) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:271) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:286) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.4.21.jar:3.4.21]		at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.4.21.jar:3.4.21]		at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_322]		at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_322]		at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_322]		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_322]		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_322]		at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_322]

可能的解决方法:

  • 在application.yml中修改时间,default-timeout: 30000

  • 修改springboot-admin版本

  • 关闭redis,email等服务

management:  endpoints:    web:      exposure:        include: '*'  endpoint:    health:      show-details: always  health:    redis:      enabled: false    mail:      enabled: false