导读:本期聚焦于蜗牛创作的《Spring Boot 整合 Spring Boot Admin 实现服务监控管理怎么做?》,敬请观看详情。服务上线之后接口响应变慢、内存泄漏、线程阻塞,这些问题光靠日志排查往往效率很低。Spring Boot Admin 提供了一个开箱即用的监控管理方案,它基于 Spring Boot Actuator 的端点数据,通过可视化界面向我们展示应用的健康状态、JVM 内存走势、线程堆栈、日志级别调整等关键信息。本文将完整演示如何搭建 Admin Server 服务端,讲解客户端的接入配置与安全认证设置,并针对注册到 Eureka 场景下的集群监控给出具体做法,同时汇总使用过程中常见的踩坑点,帮助你快速落地一套属于自己的应用监控体系。

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

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.nameinstance.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

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260906/51588.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。