Spring Boot 自带的 Actuator 虽然提供了丰富的监控端点,但返回的都是原始 JSON 数据,看起来既不直观也不方便。Spring Boot Admin 正是为了解决这个问题而生的,它是一个社区开源项目,由服务端和客户端两部分组成,服务端负责收集并展示各应用的监控信息,客户端则把自己的 Actuator 端点暴露给服务端。本文将一步步演示 Spring Boot 整合 Spring Boot Admin 的完整过程,包括服务端搭建、客户端接入、安全认证以及常见的注意事项。

一、Spring Boot Admin 的整体架构
Spring Boot Admin 分为 Admin Server 和 Admin Client 两个角色。Admin Server 是一个独立的 Web 应用,它会定时请求每个客户端的 Actuator 端点,拉取健康检查、内存、线程、日志等指标数据,然后在网页上以图表形式呈现出来。Admin Client 则是被监控的 Spring Boot 应用,它通过配置项声明自己 Actuator 端点的访问地址,主动注册到服务端。
除了客户端主动注册的方式外,如果项目已经使用了 Eureka、Consul 这类注册中心,服务端还可以直接从注册中心拉取服务列表,自动发现并监控所有实例,这种方式在微服务场景下更加常用,客户端甚至不需要引入 Admin 的客户端依赖。两种接入方式各有适用场景:单体应用或数量较少的服务用客户端直连即可,服务数量多、实例动态扩缩容时建议走注册中心模式。
二、搭建 Admin Server 服务端
首先创建一个独立的 Spring Boot 工程,引入 spring-boot-admin-starter-server 依赖。需要注意版本匹配问题,1.x 版本的 Admin Server 对应 Spring Boot 1.x,2.x 版本对应 Spring Boot 2.x,如果版本搭配错误,服务端启动时会直接报兼容性异常。
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.7.10</version>
</dependency>接着在启动类上添加 @EnableAdminServer 注解,声明这是一个监控服务端,然后在配置文件中指定端口。代码非常简单,核心就一行注解。
@SpringBootApplication
@EnableAdminServer // 开启 Admin Server 功能
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
server:
port: 9000
spring:
application:
name: admin-server启动成功后访问 http://127.0.0.1:9000 就能看到监控首页,此时列表是空的,因为还没有客户端注册进来。
三、客户端接入与 Actuator 配置
被监控的应用需要引入 spring-boot-admin-starter-client 依赖,并通过配置告诉服务端自己的信息上报地址。
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.7.10</version>
</dependency>客户端的关键配置有两个:一是 Actuator 端点的暴露范围,二是 Admin Server 的地址。默认情况下 Actuator 只开放 health 和 info 端点,要让监控页面展示完整信息,必须把端点暴露配置写全,这是新手最容易遗漏的一步。
spring:
boot:
admin:
client:
url: http://127.0.0.1:9000 # Admin Server 地址
application:
name: order-service
management:
endpoints:
web:
exposure:
include: '*' # 暴露所有端点
endpoint:
health:
show-details: always # 显示健康检查明细配置完成后启动客户端应用,控制台会输出注册成功的日志,刷新服务端页面就能看到 order-service 已经出现在应用列表中。点进去可以看到健康状态、JVM 内存使用曲线、GC 次数、线程 dump、HTTP 请求追踪等几十项指标,还能在线修改日志级别,排查线上问题时非常实用。
四、安全认证与注册中心模式
监控端点包含大量敏感信息,生产环境必须加上安全控制。最简单的做法是在服务端整合 Spring Security,为监控页面设置登录账号,同时为客户端通信配置一套用户名密码。服务端添加 spring-boot-starter-security 依赖后,编写一个配置类放行静态资源和注册接口即可。
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin()
.and()
.authorizeRequests()
.antMatchers("/assets/**", "/login").permitAll()
.anyRequest().authenticated()
.and()
.csrf().disable();
}
}客户端这边在 spring.boot.admin.client 下补充 username 和 password 两个配置项,与服务端账号保持一致。如果被监控应用自身的 Actuator 也做了鉴权,则要额外配置 instance.metadata.user.name 和 instance.metadata.user.password,让服务端拉取数据时能通过认证。
如果项目使用 Eureka,服务端只需引入 spring-cloud-starter-netflix-eureka-client 并配置注册中心地址,就能自动发现所有注册的服务并纳入监控,各业务应用完全不用改动代码。不过要注意,此时健康信息的完整度取决于每个服务自身的 Actuator 暴露配置,建议通过统一的公共配置强制所有服务开放必要的端点。
五、常见问题与注意事项
实际使用中有几个高频踩坑点值得留意。第一,客户端显示 OFFLINE 状态,多半是服务端访问不到客户端的 Actuator 端点,常见原因是客户端配置了 server.servlet.context-path 或者部署在容器内网,此时需要通过 spring.boot.admin.client.instance.service-base-url 显式指定对外可访问地址。第二,健康页面的细节信息不显示,检查 show-details 配置是否放开。第三,服务端页面频繁出现通知刷屏,可以在配置中关闭或限流通知。
另外提醒一点,版本号尽量选择与 Spring Boot 大版本匹配的最新小版本,2.7.x 系列目前在社区里文档和兼容性表现都比较稳定。搭配 Eureka 使用时,如果注册中心里的服务状态显示异常,优先确认服务本身是否正常注册、Actuator 端点是否可访问,问题往往出在被监控方而不是 Admin Server 本身。
Spring Boot AdminSpring Boot监控微服务监控修改时间:2026-09-06 13:50:53