一、概述
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: 9100 spring: application: name: know-monitor cloud: nacos: discovery: server-addr: ${nacos.server} namespace: ${spring.profiles.active} group: monitor security: user: name: admin password: 123456 management: 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-service boot: 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 { @Bean public 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 等工具,可以进一步扩展监控系统的功能,满足复杂的微服务监控需求。