Spring Boot Application 監(jiān)控管理利器: Spring Boot Admin

文章前言

上篇文章了解了 Spring Boot Actuator翘悉,引入后即可通過(guò)訪問(wèn)不同的端點(diǎn),來(lái)獲得相應(yīng)的監(jiān)控信息。

對(duì)應(yīng) HTTP 方式請(qǐng)求,返回的數(shù)據(jù)都是 JSON 格式围橡,這對(duì)于運(yùn)維或是其他人員來(lái)說(shuō)當(dāng)然不是很方便直觀,特別是當(dāng)需要監(jiān)控的應(yīng)用越來(lái)越多時(shí)缕贡,如果還依舊通過(guò)地址欄來(lái)逐個(gè)訪問(wèn)翁授,就顯得過(guò)于繁瑣和低效了。下面晾咪,我們?cè)賮?lái)認(rèn)識(shí)下 Spring Boot Admin 這個(gè) Spring Boot Application UI 監(jiān)控管理工具收擦。

快速上手

Spring Boot Admin 由 Server 和 Client 兩個(gè)端組成,其中 Client 端通常是需要被監(jiān)控的應(yīng)用谍倦。先來(lái)配置下 Server 端的依賴塞赂,考慮到安全性方面的問(wèn)題,這里還額外加入了 Security:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
    </dependencies>

接著在 application.yml 文件中配置登錄用戶及密碼:

spring:
  security:
    user:
      name: admin
      password: admin

必要的 Security 配置:

@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        // 設(shè)置redirectTo參數(shù)和登錄成功重定向地址
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                // 授予對(duì)靜態(tài)資源和登錄頁(yè)面的公共訪問(wèn)權(quán)
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                // 除上面配置的其他請(qǐng)求都必須經(jīng)過(guò)身份驗(yàn)證
                .anyRequest().authenticated()
                .and()
                // 配置登錄和退出請(qǐng)求路徑
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                // 啟用HTTP-Basic剂跟,這是Spring Boot Admin Client注冊(cè)所必需的
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**"
                );
    }
    
}

最后减途,在啟動(dòng)類(lèi)上加入 @EnableAdminServer ,運(yùn)行服務(wù)后訪問(wèn):http://localhost:8080 曹洽,輸入用戶名密碼 admin 進(jìn)入系統(tǒng):

@EnableAdminServer
@SpringBootApplication
public class SpringBootAdminServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminServerApplication.class, args);
    }

}
Spring Boot Admin - Login

Server 端到此就搭建好了鳍置,下面再來(lái)處理 Client 端服務(wù),同樣的先加入相關(guān)依賴:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

由于引入了 Security 模塊送淆,為了可以正常訪問(wèn)到 Actuator 的 Endpoints税产,這里還需要做相應(yīng)的配置處理:

@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()
                .and().csrf().ignoringAntMatchers("/actuator/**").disable();
    }

}

在配置文件中加入必要信息:

server:
  port: 8081
spring:
  application:
    name: spring-boot-admin-client
  boot:
    admin:
      client:
        # Spring Boot Admin Server 服務(wù)地址,可配置多個(gè)
        url: http://localhost:8080
        instance:
          name: ${spring.application.name}
          prefer-ip: true
        # Spring Boot Admin Server 認(rèn)證信息
        username: admin
        password: admin
        # 設(shè)置為true偷崩,客戶端將只注冊(cè)1個(gè) Admin Server 服務(wù)(按定義的順序)
        # 當(dāng)該 Admin Server 服務(wù)宕機(jī)辟拷,將自動(dòng)注冊(cè)下個(gè) Admin Server 服務(wù)器;
        # 如果為false,將針對(duì)所有管理服務(wù)器進(jìn)行注冊(cè)
        register-once: true
# Actuator 配置
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
info:
  version: @project.version@
  name: @project.artifactId@
  author: happyJared
  blog: https://blog.mariojd.cn/

最后阐斜,啟動(dòng) Client 服務(wù)衫冻,我們來(lái)查看 Admin Server 提供的 UI 監(jiān)控管理系統(tǒng):

Spring Boot Admin - Applications

點(diǎn)擊 Instances 進(jìn)入,這時(shí)就可以方便的查看該應(yīng)用的所有監(jiān)控狀態(tài)信息谒出。

Spring Boot Admin - Instance

此外隅俘,Spring Boot Admin 還支持動(dòng)態(tài)更改 Logger Level、提供異常監(jiān)控告警等功能笤喳,這些姿勢(shì)可以自行解鎖为居。

參考閱讀

Spring Boot Admin
Spring Boot Admin Reference Guide
監(jiān)控管理之Spring Boot Admin使用

示例源碼
歡迎關(guān)注我的個(gè)人公眾號(hào):超級(jí)碼里奧
如果這對(duì)您有幫助,歡迎點(diǎn)贊和分享杀狡,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒙畴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子呜象,更是在濱河造成了極大的恐慌膳凝,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恭陡,死亡現(xiàn)場(chǎng)離奇詭異鸠项,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)子姜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)祟绊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人哥捕,你說(shuō)我怎么就攤上這事牧抽。” “怎么了遥赚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵扬舒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我凫佛,道長(zhǎng)讲坎,這世上最難降的妖魔是什么孕惜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮晨炕,結(jié)果婚禮上衫画,老公的妹妹穿的比我還像新娘。我一直安慰自己瓮栗,他們只是感情好削罩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著费奸,像睡著了一般弥激。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愿阐,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天微服,我揣著相機(jī)與錄音,去河邊找鬼缨历。 笑死职辨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戈二。 我是一名探鬼主播舒裤,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼觉吭!你這毒婦竟也來(lái)了腾供?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲜滩,失蹤者是張志新(化名)和其女友劉穎伴鳖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體徙硅,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榜聂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗓蘑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片须肆。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桩皿,靈堂內(nèi)的尸體忽然破棺而出豌汇,到底是詐尸還是另有隱情,我是刑警寧澤泄隔,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布拒贱,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏逻澳。R本人自食惡果不足惜闸天,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斜做。 院中可真熱鬧苞氮,春花似錦、人聲如沸陨享。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抛姑。三九已至,卻和暖如春艳狐,著一層夾襖步出監(jiān)牢的瞬間定硝,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工毫目, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔬啡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓镀虐,卻偏偏與公主長(zhǎng)得像箱蟆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刮便,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容