最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot Admin (SBA) 全面解析(從入門(mén)到生產(chǎn)實(shí)踐)

 更新時(shí)間:2025年11月21日 10:11:18   作者:csdn_tom_168  
SpringBootAdmin(SBA)是一個(gè)開(kāi)源工具,用于集中監(jiān)控和管理多個(gè)SpringBoot應(yīng)用實(shí)例,它基于SpringBootActuator構(gòu)建,提供直觀的WebUI界面,幫助開(kāi)發(fā)者和運(yùn)維人員實(shí)時(shí)掌握微服務(wù)系統(tǒng)的運(yùn)行狀態(tài),本文介紹Spring Boot Admin (SBA) 全面解析,感興趣的朋友跟隨小編一起看看吧

?? Spring Boot Admin (SBA) 全方位詳解(從入門(mén)到生產(chǎn)實(shí)踐)

Spring Boot Admin(SBA)是一個(gè)功能強(qiáng)大的開(kāi)源工具,用于集中監(jiān)控和管理多個(gè) Spring Boot 應(yīng)用實(shí)例。它基于 Spring Boot Actuator 構(gòu)建,提供直觀的 Web UI 界面,幫助開(kāi)發(fā)者、運(yùn)維人員實(shí)時(shí)掌握微服務(wù)系統(tǒng)的運(yùn)行狀態(tài)。

1. 什么是 Spring Boot Admin?

?? 定義
Spring Boot Admin 是一個(gè)社區(qū)驅(qū)動(dòng)的項(xiàng)目,為 Spring Boot 應(yīng)用提供可視化監(jiān)控和管理界面。

?? 定位
它是 Spring Boot 生態(tài)中的“運(yùn)維控制臺(tái)”,類(lèi)似于微服務(wù)的“儀表盤(pán)”。

?? 支持功能

  • 實(shí)時(shí)健康檢查
  • JVM 指標(biāo)監(jiān)控(內(nèi)存、GC、線(xiàn)程等)
  • 日志動(dòng)態(tài)調(diào)整(log level)
  • 緩存管理
  • HTTP 請(qǐng)求追蹤
  • 環(huán)境變量查看
  • 自動(dòng)服務(wù)發(fā)現(xiàn)(Eureka/Nacos)

?? 適用場(chǎng)景

  • 微服務(wù)架構(gòu)下的集中監(jiān)控
  • 開(kāi)發(fā)調(diào)試期快速定位問(wèn)題
  • 運(yùn)維值班大屏展示
  • 故障應(yīng)急響應(yīng)

2. 核心架構(gòu)與工作原理

+------------------+     +---------------------+
|  Spring Boot     |     |  Spring Boot        |
|  Application     |<--->|  Admin Client       |
|  (Client)        |     |  (Actuator暴露)      |
+------------------+     +----------+----------+
                                    |
                                    | HTTP輪詢(xún)
                                    v
                          +---------+----------+
                          | Spring Boot Admin  |
                          | Server (UI + API)  |
                          +---------+----------+
                                    |
                                    v
                         [持久化存儲(chǔ)] ←→ [通知系統(tǒng)]

工作流程:

  1. 客戶(hù)端注冊(cè):每個(gè) Spring Boot 應(yīng)用作為 Client 向 SBA Server 注冊(cè)。
  2. 數(shù)據(jù)采集:SBA Server 定期調(diào)用 Client 的 /actuator/** 端點(diǎn)獲取數(shù)據(jù)。
  3. UI 展示:將采集的數(shù)據(jù)通過(guò) Web 界面展示。
  4. 反向操作:可通過(guò) UI 發(fā)起操作(如修改日志級(jí)別、清空緩存)。

? 支持兩種模式:

  • 主動(dòng)注冊(cè):Client 主動(dòng)上報(bào)地址
  • 服務(wù)發(fā)現(xiàn):集成 Eureka、Consul、Nacos 自動(dòng)發(fā)現(xiàn)

3. SBA Server 搭建指南

步驟一:創(chuàng)建 Maven 項(xiàng)目

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>3.2.0</version> <!-- 推薦使用最新穩(wěn)定版 -->
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 安全認(rèn)證(可選) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

步驟二:?jiǎn)⒂?SBA Server

@SpringBootApplication
@EnableAdminServer
public class AdminServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminServerApplication.class, args);
    }
}

步驟三:配置application.yml

server:
  port: 8080
spring:
  application:
    name: boot-admin-server

啟動(dòng)后訪(fǎng)問(wèn):http://localhost:8080 即可看到 SBA 控制臺(tái)。

4. SBA Client 集成配置

步驟一:添加依賴(lài)

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>3.2.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

步驟二:配置application.yml

spring:
  boot:
    admin:
      client:
        url: http://localhost:8080         # SBA Server 地址
        username: admin                    # 若啟用了安全認(rèn)證
        password: secret
  application:
    name: user-service                     # 應(yīng)用名稱(chēng)(顯示在列表中)
# 暴露所有 Actuator 端點(diǎn)
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
    env:
      enabled: true
    heapdump:
      enabled: true
    threaddump:
      enabled: true
    loggers:
      enabled: true
    metrics:
      enabled: true

? 啟動(dòng)后,該服務(wù)會(huì)自動(dòng)注冊(cè)到 SBA Server。

5. 核心功能模塊詳解 ??

模塊功能說(shuō)明使用場(chǎng)景

?? Wallboard(總覽面板)

  • 顯示所有應(yīng)用的健康狀態(tài)分布(UP/DOWN/UNKNOWN)
  • 支持按標(biāo)簽、環(huán)境分組
  • 可設(shè)置自動(dòng)刷新頻率(默認(rèn) 15s)

?? 建議用于大屏監(jiān)控或值班系統(tǒng)首頁(yè)。

?? Applications(應(yīng)用列表)

  • 列出所有注冊(cè)的應(yīng)用實(shí)例
  • 顯示:名稱(chēng)、狀態(tài)、實(shí)例數(shù)、版本、啟動(dòng)時(shí)間、IP 地址
  • 支持搜索、排序、過(guò)濾

? 點(diǎn)擊進(jìn)入 Details 查看詳情。

?? Details(應(yīng)用詳情)——核心模塊

① General Info(基本信息)
  • Spring Boot 版本
  • JVM 版本 & 啟動(dòng)參數(shù)
  • 主機(jī)信息、PID、運(yùn)行時(shí)長(zhǎng)
  • 實(shí)例 URL

?? 用途:確認(rèn)是否使用了正確的 JDK 或內(nèi)存設(shè)置不合理。

② Metrics(指標(biāo)監(jiān)控)

支持的指標(biāo)類(lèi)別:

類(lèi)別關(guān)鍵指標(biāo)用途
JVM 內(nèi)存jvm.memory.used, max分析堆內(nèi)存使用趨勢(shì)
GCjvm.gc.pause, .memory.promoted判斷 GC 頻率和停頓
線(xiàn)程jvm.threads.live檢查線(xiàn)程泄漏
CPUprocess.cpu.usage定位性能瓶頸
HTTP 請(qǐng)求http.server.requests接口 QPS 和延遲分析

?? 圖表支持縮放、導(dǎo)出,適合做性能分析報(bào)告。

③ Environment(環(huán)境配置)
  • 查看所有 Property Sources(優(yōu)先級(jí)順序)
  • 包括:application.yml, 系統(tǒng)變量, JVM 參數(shù), 配置中心等
  • 支持關(guān)鍵詞搜索(如 “datasource”)

? 排查配置未生效問(wèn)題的利器!

④ JMX(MBean 管理)
  • 瀏覽并操作 JVM 內(nèi)部 MBeans
  • 可執(zhí)行方法(如手動(dòng)觸發(fā) GC)
  • 查看 Tomcat 線(xiàn)程池狀態(tài)

?? 生產(chǎn)環(huán)境慎用,需開(kāi)啟 JMX 并注意安全。

⑤ Threads(線(xiàn)程分析)
  • 獲取線(xiàn)程轉(zhuǎn)儲(chǔ)(Thread Dump)
  • 顯示線(xiàn)程狀態(tài)(RUNNABLE/BLOCKED/WAITING)
  • 自動(dòng)檢測(cè)死鎖(紅色高亮)

?? 排查卡頓、CPU 飆升時(shí)必備。

⑥ Http Traces(HTTP 請(qǐng)求軌跡)
  • 記錄最近的 HTTP 請(qǐng)求(需配置)
  • 包含:URL、狀態(tài)碼、耗時(shí)、請(qǐng)求頭、響應(yīng)時(shí)間
management:
  trace:
    http:
      include: "timestamp,request,response,headers,time-taken"

? 用于分析慢接口、5xx 錯(cuò)誤來(lái)源。

⑦ Caches(緩存管理)
  • 顯示所有 Cache Managers(Caffeine, Redis, Ehcache)
  • 查看緩存大小、命中率
  • 支持點(diǎn)擊 “Clear” 清空緩存

?? 調(diào)試緩存失效或發(fā)布后刷新非常有用。

⑧ Health(健康檢查)
  • 展示整體健康狀態(tài)
  • 子項(xiàng)包括:DB、Redis、DiskSpace、RabbitMQ 等
  • 支持自定義 Health Indicator
@Component
public class CustomHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        return Health.up()
            .withDetail("version", "1.0.0")
            .withDetail("uptime", System.currentTimeMillis())
            .build();
    }
}

? 故障定位第一步:先看 Health!

6. 安全加固與權(quán)限控制 ??

啟用 Spring Security 認(rèn)證

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(authz -> authz
                .requestMatchers("/assets/**", "/login", "/actuator/**").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin(form -> form.loginPage("/login").permitAll())
            .logout(logout -> logout.logoutSuccessUrl("/"));
        return http.build();
    }
    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails admin = User.withDefaultPasswordEncoder()
            .username("admin")
            .password("secret")
            .roles("USER", "ADMIN")
            .build();
        return new InMemoryUserDetailsManager(admin);
    }
}

? 生產(chǎn)環(huán)境必須開(kāi)啟認(rèn)證,防止未授權(quán)訪(fǎng)問(wèn)!

7. 高可用與持久化支持 ??

數(shù)據(jù)持久化(避免重啟丟失數(shù)據(jù))

SBA 支持將應(yīng)用注冊(cè)信息存儲(chǔ)到數(shù)據(jù)庫(kù):

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/sba?useSSL=false&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

? 引入 spring-boot-starter-data-jpa 和 MySQL 驅(qū)動(dòng)即可。

8. 告警通知機(jī)制 ??

SBA 支持通過(guò)事件監(jiān)聽(tīng)發(fā)送告警。

示例:發(fā)送郵件通知

@Component
public class NotifyListener {
    @EventListener
    public void onInstanceStatusChanged(StatusChangeEvent event) {
        String status = event.getStatusInfo().getStatus();
        String appName = event.getInstance().getRegistration().getName();
        if ("DOWN".equals(status)) {
            sendEmail("?? 應(yīng)用 " + appName + " 已宕機(jī)!", event.toString());
        }
    }
    private void sendEmail(String subject, String body) {
        // 使用 JavaMailSender 發(fā)送郵件
    }
}

? 可擴(kuò)展為:

  • Slack 通知
  • 企業(yè)微信/釘釘機(jī)器人
  • Webhook 推送至 Prometheus Alertmanager

9. 生產(chǎn)環(huán)境最佳實(shí)踐 ?

實(shí)踐說(shuō)明
? 不要暴露所有端點(diǎn)include: "*" 有風(fēng)險(xiǎn),應(yīng)按需開(kāi)放
? 啟用 HTTPS尤其是公網(wǎng)部署
? 配合 Nginx 做反向代理統(tǒng)一域名、負(fù)載均衡
? 設(shè)置合理的刷新間隔避免頻繁請(qǐng)求影響性能
? 使用 metadata 分組environment=prod, team=payment
? 結(jié)合配置中心Nacos/Eureka 實(shí)現(xiàn)自動(dòng)發(fā)現(xiàn)
? 日志級(jí)別動(dòng)態(tài)調(diào)整臨時(shí)調(diào)為 DEBUG 排查問(wèn)題

10. 常見(jiàn)問(wèn)題排查 ?

問(wèn)題原因解決方案
Client 未注冊(cè)未引入 client 依賴(lài)或 URL 錯(cuò)誤檢查 spring.boot.admin.client.url
Metrics 顯示 N/AActuator 未暴露 metricsmanagement.endpoints.web.exposure.include=metrics
Thread Dump 失敗端點(diǎn)未啟用啟用 threaddump 端點(diǎn)
頁(yè)面加載慢實(shí)例過(guò)多或網(wǎng)絡(luò)延遲優(yōu)化網(wǎng)絡(luò)或分片部署
Health 顯示 UNKNOWN心跳超時(shí)檢查網(wǎng)絡(luò)連通性和心跳間隔

11. 擴(kuò)展:結(jié)合 Prometheus + Grafana ??

雖然 SBA 提供了豐富的 UI,但長(zhǎng)期趨勢(shì)分析建議使用 Prometheus。

步驟:

  1. Client 啟用 Micrometer Prometheus:
management:
  metrics:
    export:
      prometheus:
        enabled: true
  endpoints:
    web:
      exposure:
        include: prometheus
  1. Prometheus 抓取 /actuator/prometheus
  2. Grafana 導(dǎo)入官方 Dashboard(ID: 12000)

? 實(shí)現(xiàn):SBA 做實(shí)時(shí)管理 + Prometheus 做歷史分析

?? 推薦 GitHub 示例項(xiàng)目結(jié)構(gòu)

spring-boot-admin-demo/
├── admin-server/                 # SBA Server
│   ├── src/main/resources/application.yml
│   └── AdminServerApplication.java
│
├── user-service/                 # Client 示例
│   ├── src/main/resources/application.yml
│   └── UserServiceApplication.java
│
└── docker-compose.yml            # 一鍵啟動(dòng) MySQL + SBA + Client

我可以為你生成完整代碼模板,歡迎繼續(xù)提問(wèn)!

? 總結(jié):SBA 的價(jià)值定位

角色收益
開(kāi)發(fā)者快速排查配置、內(nèi)存、線(xiàn)程問(wèn)題
運(yùn)維統(tǒng)一監(jiān)控所有微服務(wù)狀態(tài)
架構(gòu)師實(shí)現(xiàn)可觀測(cè)性基礎(chǔ)設(shè)施
測(cè)試驗(yàn)證接口調(diào)用鏈路

?? 結(jié)語(yǔ)

Spring Boot Admin 是 Spring Boot 微服務(wù)架構(gòu)中不可或缺的可觀測(cè)性工具。它不是替代 Prometheus/Grafana,而是互補(bǔ)關(guān)系

  • SBA:側(cè)重“管理與交互”——你能操作它
  • Prometheus:側(cè)重“監(jiān)控與告警”——它告訴你發(fā)生了什么

?? 建議組合使用:SBA + Prometheus + Alertmanager + Grafana = 完整的微服務(wù)監(jiān)控體系。

到此這篇關(guān)于Spring Boot Admin (SBA) 全面解析(從入門(mén)到生產(chǎn)實(shí)踐)的文章就介紹到這了,更多相關(guān)Spring Boot Admin內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 獲取網(wǎng)站圖片的示例代碼

    Java 獲取網(wǎng)站圖片的示例代碼

    本文主要介紹了Java 獲取網(wǎng)站圖片的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用Spring @DependsOn控制bean加載順序的實(shí)例

    使用Spring @DependsOn控制bean加載順序的實(shí)例

    這篇文章主要介紹了使用Spring @DependsOn控制bean加載順序的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring?@Scheduled定時(shí)器注解使用方式

    Spring?@Scheduled定時(shí)器注解使用方式

    這篇文章主要介紹了Spring?@Scheduled定時(shí)器注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 使用@RequestBody配合@Valid校驗(yàn)入?yún)?shù)

    使用@RequestBody配合@Valid校驗(yàn)入?yún)?shù)

    這篇文章主要介紹了使用@RequestBody配合@Valid校驗(yàn)入?yún)?shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MyBatis映射文件中的動(dòng)態(tài)SQL實(shí)例詳解

    MyBatis映射文件中的動(dòng)態(tài)SQL實(shí)例詳解

    在本文中,我們深入探討了動(dòng)態(tài)SQL的各種標(biāo)簽,包括<if>、<choose>、<trim>、<foreach>等,通過(guò)實(shí)際的例子演示了它們的用法,感興趣的朋友一起揭開(kāi)動(dòng)態(tài)SQL的神秘面紗,帶你領(lǐng)略它的魅力
    2024-01-01
  • SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼

    SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼

    本篇文章主要介紹了SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-02-02
  • Java面試題沖刺第二十五天--并發(fā)編程3

    Java面試題沖刺第二十五天--并發(fā)編程3

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于并發(fā)編程的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Springboot死信隊(duì)列?DLX?配置和使用思路分析

    Springboot死信隊(duì)列?DLX?配置和使用思路分析

    死信隊(duì)列簡(jiǎn)稱(chēng)就是DLX,死信交換機(jī)和死信隊(duì)列和普通的沒(méi)有區(qū)別,當(dāng)消息成為死信后,如果該隊(duì)列綁定了死信交換機(jī),則消息會(huì)被死信交換機(jī)重新路由到死信隊(duì)列,本文給大家介紹Springboot死信隊(duì)列?DLX的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-03-03
  • logback配置中變量和include的應(yīng)用方式

    logback配置中變量和include的應(yīng)用方式

    這篇文章主要介紹了logback配置中變量和include的應(yīng)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 使用MyBatis TypeHandler實(shí)現(xiàn)數(shù)據(jù)加密與解密的具體方案

    使用MyBatis TypeHandler實(shí)現(xiàn)數(shù)據(jù)加密與解密的具體方案

    在我們?nèi)粘5拈_(kāi)發(fā)工作中,經(jīng)常會(huì)遇到一些敏感數(shù)據(jù)需要存儲(chǔ),比如用戶(hù)的手機(jī)號(hào)、身份證號(hào)、銀行卡號(hào)等,為了保障數(shù)據(jù)安全,我們通常會(huì)對(duì)這些敏感信息進(jìn)行加密后再存入數(shù)據(jù)庫(kù),所以本文給大家介紹了如何使用MyBatis TypeHandler實(shí)現(xiàn)數(shù)據(jù)加密與解密,需要的朋友可以參考下
    2025-11-11

最新評(píng)論

公主岭市| 固原市| 荃湾区| 遂川县| 通海县| 兴国县| 庆元县| 南乐县| 郑州市| 承德县| 丽江市| 祥云县| 西宁市| 江孜县| 古蔺县| 紫金县| 邵东县| 日喀则市| 保定市| 龙游县| 临漳县| 合山市| 白城市| 鄂州市| 东光县| 辽宁省| 两当县| 综艺| 江山市| 集贤县| 分宜县| 同德县| 康平县| 保德县| 姜堰市| 钟祥市| 科技| 西盟| 辽宁省| 青川县| 九寨沟县|