Spring Boot Admin:微服務(wù)應(yīng)用監(jiān)控

Spring Boot Admin 可以對(duì)SpringBoot應(yīng)用的各項(xiàng)指標(biāo)進(jìn)行監(jiān)控龟梦,可以作為微服務(wù)架構(gòu)中的監(jiān)控中心來(lái)使用矗晃,本文將對(duì)其用法進(jìn)行詳細(xì)介紹。

Spring Boot Admin 簡(jiǎn)介

SpringBoot應(yīng)用可以通過(guò)Actuator來(lái)暴露應(yīng)用運(yùn)行過(guò)程中的各項(xiàng)指標(biāo)望侈,Spring Boot Admin通過(guò)這些指標(biāo)來(lái)監(jiān)控SpringBoot應(yīng)用龄句,然后通過(guò)圖形化界面呈現(xiàn)出來(lái)。Spring Boot Admin不僅可以監(jiān)控單體應(yīng)用浩姥,還可以和Spring Cloud的注冊(cè)中心相結(jié)合來(lái)監(jiān)控微服務(wù)應(yīng)用挑随。

Spring Boot Admin 可以提供應(yīng)用的以下監(jiān)控信息:

監(jiān)控應(yīng)用運(yùn)行過(guò)程中的概覽信息;

度量指標(biāo)信息勒叠,比如JVM兜挨、Tomcat及進(jìn)程信息膏孟;

環(huán)境變量信息,比如系統(tǒng)屬性拌汇、系統(tǒng)環(huán)境變量以及應(yīng)用配置信息柒桑;

查看所有創(chuàng)建的Bean信息;

查看應(yīng)用中的所有配置信息噪舀;

查看應(yīng)用運(yùn)行日志信息幕垦;

查看JVM信息;

查看可以訪問(wèn)的Web端點(diǎn)傅联;

查看HTTP跟蹤信息先改。

創(chuàng)建admin-server模塊

這里我們創(chuàng)建一個(gè)admin-server模塊來(lái)作為監(jiān)控中心演示其功能。

在pom.xml中添加相關(guān)依賴(lài):

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId></dependency>Copy to clipboardErrorCopied

在application.yml中進(jìn)行配置:

spring:

? application:

? ? name: admin-server

server:

? port: 9301Copy to clipboardErrorCopied

在啟動(dòng)類(lèi)上添加@EnableAdminServer來(lái)啟用admin-server功能:

@EnableAdminServer@SpringBootApplicationpublicclassAdminServerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminServerApplication.class,args);}}Copy to clipboardErrorCopied

創(chuàng)建admin-client模塊

這里我們創(chuàng)建一個(gè)admin-client模塊作為客戶(hù)端注冊(cè)到admin-server蒸走。

在pom.xml中添加相關(guān)依賴(lài):

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId></dependency>Copy to clipboardErrorCopied

在application.yml中進(jìn)行配置:

spring:

? application:

? ? name: admin-client

? boot:

? ? admin:

? ? ? client:

? ? ? ? url: http://localhost:9301 #配置admin-server地址

server:

? port: 9305

management:

? endpoints:

? ? web:

? ? ? exposure:

? ? ? ? include: '*'

? endpoint:

? ? health:

? ? ? show-details: always

logging:

? file: admin-client.log #添加開(kāi)啟admin的日志監(jiān)控Copy to clipboardErrorCopied

啟動(dòng)admin-server和admin-client服務(wù)仇奶。

監(jiān)控信息演示

訪問(wèn)如下地址打開(kāi)Spring Boot Admin的主頁(yè):http://localhost:9301

點(diǎn)擊wallboard按鈕,選擇admin-client查看監(jiān)控信息比驻;

監(jiān)控信息概覽该溯;

度量指標(biāo)信息,比如JVM别惦、Tomcat及進(jìn)程信息狈茉;

環(huán)境變量信息,比如系統(tǒng)屬性掸掸、系統(tǒng)環(huán)境變量以及應(yīng)用配置信息氯庆;

查看所有創(chuàng)建的Bean信息;

查看應(yīng)用中的所有配置信息扰付;

查看日志信息堤撵,需要添加以下配置才能開(kāi)啟;

logging:

? file: admin-client.log #添加開(kāi)啟admin的日志監(jiān)控Copy to clipboardErrorCopied

查看JVM信息羽莺;

查看可以訪問(wèn)的Web端點(diǎn)实昨;

查看HTTP跟蹤信息;

結(jié)合注冊(cè)中心使用

Spring Boot Admin結(jié)合Spring Cloud 注冊(cè)中心使用盐固,只需將admin-server和注冊(cè)中心整合即可荒给,admin-server 會(huì)自動(dòng)從注冊(cè)中心獲取服務(wù)列表,然后挨個(gè)獲取監(jiān)控信息刁卜。這里以Eureka注冊(cè)中心為例來(lái)介紹下該功能志电。

修改admin-server

在pom.xml中添加相關(guān)依賴(lài):

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>Copy to clipboardErrorCopied

在application-eureka.yml中進(jìn)行配置,只需添加注冊(cè)中心配置即可:

spring:

? application:

? ? name: admin-server

server:

? port: 9301

eureka:

? client:

? ? register-with-eureka: true

? ? fetch-registry: true

? ? service-url:

? ? ? defaultZone: http://localhost:8001/eureka/Copy to clipboardErrorCopied

在啟動(dòng)類(lèi)上添加@EnableDiscoveryClient來(lái)啟用服務(wù)注冊(cè)功能:

@EnableDiscoveryClient@EnableAdminServer@SpringBootApplicationpublicclassAdminServerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminServerApplication.class,args);}}Copy to clipboardErrorCopied

修改admin-client

在pom.xml中添加相關(guān)依賴(lài):

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>Copy to clipboardErrorCopied

在application-eureka.yml中進(jìn)行配置长酗,刪除原來(lái)的admin-server地址配置溪北,添加注冊(cè)中心配置即可:

spring:

? application:

? ? name: admin-client

server:

? port: 9305

management:

? endpoints:

? ? web:

? ? ? exposure:

? ? ? ? include: '*'

? endpoint:

? ? health:

? ? ? show-details: always

logging:

? file: admin-client.log #添加開(kāi)啟admin的日志監(jiān)控

eureka:

? client:

? ? register-with-eureka: true

? ? fetch-registry: true

? ? service-url:

? ? ? defaultZone: http://localhost:8001/eureka/Copy to clipboardErrorCopied

在啟動(dòng)類(lèi)上添加@EnableDiscoveryClient來(lái)啟用服務(wù)注冊(cè)功能:

@EnableDiscoveryClient@SpringBootApplicationpublicclassAdminClientApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminClientApplication.class,args);}}Copy to clipboardErrorCopied

功能演示

啟動(dòng)eureka-server桐绒,使用application-eureka.yml配置啟動(dòng)admin-server夺脾,admin-client之拨;

查看注冊(cè)中心發(fā)現(xiàn)服務(wù)均已注冊(cè):http://localhost:8001/

查看Spring Boot Admin 主頁(yè)發(fā)現(xiàn)可以看到服務(wù)信息:http://localhost:9301

添加登錄認(rèn)證

我們可以通過(guò)給admin-server添加Spring Security支持來(lái)獲得登錄認(rèn)證功能。

創(chuàng)建admin-security-server模塊

在pom.xml中添加相關(guān)依賴(lài):

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.1.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>Copy to clipboardErrorCopied

在application.yml中進(jìn)行配置咧叭,配置登錄用戶(hù)名和密碼蚀乔,忽略admin-security-server的監(jiān)控信息:

spring:

? application:

? ? name: admin-security-server

? security: # 配置登錄用戶(hù)名和密碼

? ? user:

? ? ? name: macro

? ? ? password: 123456

? boot:? # 不顯示admin-security-server的監(jiān)控信息

? ? admin:

? ? ? discovery:

? ? ? ? ignored-services: ${spring.application.name}

server:

? port: 9301

eureka:

? client:

? ? register-with-eureka: true

? ? fetch-registry: true

? ? service-url:

? ? ? defaultZone: http://localhost:8001/eureka/Copy to clipboardErrorCopied

對(duì)SpringSecurity進(jìn)行配置,以便admin-client可以注冊(cè):

/**

* Created by macro on 2019/9/30.

*/@ConfigurationpublicclassSecuritySecureConfigextendsWebSecurityConfigurerAdapter{privatefinalStringadminContextPath;publicSecuritySecureConfig(AdminServerPropertiesadminServerProperties){this.adminContextPath=adminServerProperties.getContextPath();}@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{SavedRequestAwareAuthenticationSuccessHandlersuccessHandler=newSavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");successHandler.setDefaultTargetUrl(adminContextPath+"/");http.authorizeRequests()//1.配置所有靜態(tài)資源和登錄頁(yè)可以公開(kāi)訪問(wèn).antMatchers(adminContextPath+"/assets/**").permitAll().antMatchers(adminContextPath+"/login").permitAll().anyRequest().authenticated().and()//2.配置登錄和登出路徑.formLogin().loginPage(adminContextPath+"/login").successHandler(successHandler).and().logout().logoutUrl(adminContextPath+"/logout").and()//3.開(kāi)啟http basic支持菲茬,admin-client注冊(cè)時(shí)需要使用.httpBasic().and().csrf()//4.開(kāi)啟基于cookie的csrf保護(hù).csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())//5.忽略這些路徑的csrf保護(hù)以便admin-client注冊(cè).ignoringAntMatchers(adminContextPath+"/instances",adminContextPath+"/actuator/**");}}Copy to clipboardErrorCopied

修改啟動(dòng)類(lèi)吉挣,開(kāi)啟AdminServer及注冊(cè)發(fā)現(xiàn)功能:

@EnableDiscoveryClient@EnableAdminServer@SpringBootApplicationpublicclassAdminSecurityServerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminSecurityServerApplication.class,args);}}Copy to clipboardErrorCopied

啟動(dòng)eureka-server,admin-security-server婉弹,訪問(wèn)Spring Boot Admin 主頁(yè)發(fā)現(xiàn)需要登錄才能訪問(wèn):http://localhost:9301

使用到的模塊

springcloud-learning

├── eureka-server -- eureka注冊(cè)中心

├── admin-server -- admin監(jiān)控中心服務(wù)

├── admin-client -- admin監(jiān)控中心監(jiān)控的應(yīng)用服務(wù)

└── admin-security-server -- 帶登錄認(rèn)證的admin監(jiān)控中心服務(wù)Copy to clipboardErrorCopied

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睬魂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子镀赌,更是在濱河造成了極大的恐慌氯哮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件商佛,死亡現(xiàn)場(chǎng)離奇詭異喉钢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)良姆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)肠虽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人玛追,你說(shuō)我怎么就攤上這事税课。” “怎么了痊剖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵伯复,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我邢笙,道長(zhǎng)啸如,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任氮惯,我火速辦了婚禮叮雳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妇汗。我一直安慰自己帘不,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布杨箭。 她就那樣靜靜地躺著寞焙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捣郊,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天辽狈,我揣著相機(jī)與錄音,去河邊找鬼呛牲。 笑死刮萌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的娘扩。 我是一名探鬼主播着茸,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼琐旁!你這毒婦竟也來(lái)了涮阔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灰殴,失蹤者是張志新(化名)和其女友劉穎澎语,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體验懊,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擅羞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了义图。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片减俏。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碱工,靈堂內(nèi)的尸體忽然破棺而出娃承,到底是詐尸還是另有隱情,我是刑警寧澤怕篷,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布历筝,位于F島的核電站,受9級(jí)特大地震影響廊谓,放射性物質(zhì)發(fā)生泄漏梳猪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一蒸痹、第九天 我趴在偏房一處隱蔽的房頂上張望春弥。 院中可真熱鬧,春花似錦叠荠、人聲如沸匿沛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逃呼。三九已至鳖孤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抡笼,已是汗流浹背苏揣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔫缸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓际起,卻偏偏與公主長(zhǎng)得像拾碌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子街望,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355