使用 Spring Boot Admin 进行应用监控和管理
Spring Boot Admin (SBA) 是一个开源工具,专为 Spring Boot 应用提供全面的监控和管理能力。它允许应用程序通过 HTTP 或 Spring Cloud 的服务发现机制向 SBA 注册,从而实现对 Spring Boot 项目的可视化操作和状态查看。
主要功能
- 监控 Spring Boot 应用的性能指标。
- 查看进程线程数量及 CPU 资源占用情况。
- 获取 Spring Boot 运行环境的详细信息。
- 展示和管理 Spring Boot 应用中的定时任务。
- 查看和调整 Spring Boot 应用的日志级别。
- 提供 JVM 线程和内存转储的详细信息,支持文件下载。
- 显示应用的启动时间和累计运行时间。
- 分析垃圾回收的详细数据,包括回收次数和耗时。
- 查看和管理 Spring Boot 应用中的所有缓存。
- 列出 Spring Boot 应用的所有类信息。
集成步骤
搭建 Spring Boot Admin 服务器端
在 SBA 服务器项目的 pom.xml 文件中添加以下依赖:
<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>
</dependency>
在 SBA 服务器主类上添加 @EnableAdminServer 注解:
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer // 启用 Admin Server 功能
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
启动 SBA 服务器后,可通过 http://{服务器IP}:{服务器端口}/applications 访问 SBA 管理界面。
集成被监控的应用
方法一:直接配置 Admin 服务器地址
在被监控应用的 pom.xml 文件中添加客户端依赖:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
在被监控应用的 application.properties (或 application.yml) 文件中配置 SBA 服务器地址:
# 被监控应用自身的端口
server.port=8081
# Spring Boot Admin 服务器地址
spring.boot.admin.client.url=http://localhost:9001
方法二:通过服务注册中心集成 (推荐)
此方法允许客户端从服务注册中心动态发现并注册到 Admin 服务器,无需在每个客户端中硬编码 Admin 地址。
首先,确保被监控应用已集成服务注册中心客户端(例如 Nacos):
<!-- Spring Cloud Alibaba Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
在被监控应用的 application.yml 文件中配置应用信息和服务注册中心地址:
spring:
application:
# 应用的唯一名称,用于服务注册
name: my-monitored-app
cloud:
nacos:
discovery:
# Nacos 服务注册中心地址
server-addr: 127.0.0.1:8848
在这种模式下,SBA 服务器会从服务注册中心拉取注册的应用实例进行管理。
启用更多监控指标
为了暴露 Spring Boot Actuator 的所有监控端点,请添加 spring-boot-starter-actuator 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在被监控应用的 application.properties (或 application.yml) 文件中配置暴露所有 Actuator 端点:
# 暴露所有 management endpoints
management.endpoints.web.exposure.include=*
添加此配置后,SBA 将能够获取更丰富的监控数据。