一、概述
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 等工具,可以進一步擴展監控系統的功能,滿足復雜的微服務監控需求。