一、概述
Spring Boot Admin(SBA)是一个用于监控和管理 Spring Boot 应用程序的工具。它提供了一个 Web 界面,可以集中管理多个 Spring Boot 应用程序的健康状态、指标、日志、配置等信息。通过 SBA,你可以轻松地监控和管理你的微服务架构。
二、核心组件
1. SBA Server
作用:作为监控中心,提供一个 Web 界面,用于展示所有被监控服务的状态。
启动方式:
@SpringBootApplication @EnableAdminServer public class MonitorApplication {public static void main(String[] args) {SpringApplication.run(MonitorApplication.class, args);} }
配置文件(
application.yml
):server:port: 9100spring:application:name: know-monitorcloud:nacos:discovery:server-addr: ${nacos.server}namespace: ${spring.profiles.active}group: monitorsecurity:user:name: adminpassword: 123456management:endpoints.web.exposure.include: "*"
2. SBA Client
作用:运行在每个被监控的服务中,将自身信息注册到 SBA Server,并提供
/actuator
端点供 SBA Server 采集数据。依赖:
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>
配置文件(
application.yml
):spring:application:name: order-serviceboot:admin:client:url: <http://know-monitor:9100> management:endpoints.web.exposure.include: health,info,metrics,env,loggers
三、监控功能
1. 健康状态
功能:显示服务的健康状态(UP/DOWN/OFFLINE)。
端点:
/actuator/health
示例:
{"status": "UP","components": {"diskSpace": {"status": "UP","details": {"total": 250790436864,"free": 107374182400,"threshold": 10485760}},"db": {"status": "UP","details": {"database": "MySQL","hello": 1}}} }
2. 指标
功能:显示服务的各类指标,如 JVM 内存、CPU 使用率、线程池状态等。
端点:
/actuator/metrics
示例:
{"names": ["jvm.memory.used","jvm.threads.live","process.cpu.usage",...] }
3. 日志
功能:动态查看和修改日志级别,无需重启服务。
端点:
/actuator/loggers
示例:
{"levels": ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF"],"configuredLevel": "INFO","loggers": {"ROOT": {"configuredLevel": "INFO"},"org.springframework.web": {"configuredLevel": "DEBUG"}} }
4. 配置信息
功能:查看服务的配置信息,包括环境变量、配置文件等。
端点:
/actuator/configprops
示例:
{"propertySources": [{"name": "applicationConfig: [classpath:/application.yml]","properties": {"spring.application.name": {"value": "order-service"},...}}] }
5. 环境信息
功能:查看服务的环境信息,如系统属性、环境变量等。
端点:
/actuator/env
示例:
{"activeProfiles": ["dev"],"propertySources": [{"name": "systemProperties","properties": {"java.version": {"value": "16"},...}}] }
6. 线程信息
功能:查看服务的线程池状态,包括线程数、活跃线程数等。
端点:
/actuator/threaddump
示例:
[{"threadName": "main","threadId": 1,"blockedTime": -1,"blockedCount": 0,...} ]
四、部署与使用
1. 部署 SBA Server
启动 Nacos 服务。
打包
know-monitor
项目:mvn clean package
启动监控中心:
java -jar target/know-monitor.jar --spring.profiles.active=dev
浏览器访问
http://localhost:9100
,使用默认账号admin
和密码123456
登录。
2. 部署业务服务
- 在业务服务项目中添加 SBA Client 和 Actuator 依赖。
- 配置
application.yml
,指定 SBA Server 的地址。 - 启动业务服务,服务将自动注册到 SBA Server。
3. 使用 SBA UI
- 登录 SBA Server 的 Web 界面。
- 在实例列表中查看所有被监控的服务。
- 点击具体服务,查看其健康状态、指标、日志、配置等详细信息。
五、扩展功能
1. 安全配置
自定义登录页面:
@Configuration public class SecurityConfig {@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.csrf().disable().authorizeHttpRequests(auth -> auth.anyRequest().authenticated()).formLogin(form -> form.loginPage("/login").permitAll()).logout(logout -> logout.permitAll());return http.build();} }
OAuth2 集成:通过 Spring Security 配置 OAuth2 客户端,实现单点登录。
2. 动态配置
Nacos 配置中心:通过 Nacos 动态更新配置,无需重启服务。
配置文件:
spring:cloud:nacos:config:server-addr: ${nacos.server}namespace: ${spring.profiles.active}group: ${nacos.config.group}
3. 链路追踪
集成 Zipkin:通过 Sleuth 和 Zipkin 实现分布式链路追踪。
依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
配置文件:
spring:zipkin:base-url: <http://zipkin-server:9411>sleuth:sampler:probability: 1.0
六、总结
Spring Boot Admin 提供了一个强大的监控平台,可以集中管理多个 Spring Boot 应用程序。通过简单的配置和依赖引入,你可以轻松地实现服务的健康状态监控、指标采集、日志管理、配置管理等功能。结合 Nacos、Zipkin 等工具,可以进一步扩展监控系统的功能,满足复杂的微服务监控需求。