SpringCloud Alibaba Nacos 整合SpringBoot Admin實戰(zhàn)
1. Spring Boot Admin 是什么
Spring Boot Admin 是由 codecentric 組織開發(fā)的開源項目,使用 Spring Boot Admin 可以管理和監(jiān)控你的 Spring Boot 項目。
它分為客戶端和服務(wù)端兩部分,客戶端添加到你的 Spring Boot 應(yīng)用增加暴漏相關(guān)信息的 HTTP 接口,然后注冊到 Spring Boot Admin 服務(wù)端,這一步驟可以直接向服務(wù)端注冊,也可以通過 Eureka 或者 Consul 進行注冊。
而 Spring Boot Admin Server 通過 Vue.js 程序監(jiān)控信息進行可視化呈現(xiàn)。并且支持多種事件通知操作。
2. Spring Boot Admin 服務(wù)端
Spring Boot Admin 服務(wù)端是基于 Spring Boot 項目的,如何創(chuàng)建一個 Spring Boot 項目這里不提,你可以參考之前文章或者從 https://start.spring.io/ 直接獲得一個 Spring Boot 項目。
2.1. 添加依賴(服務(wù)端)
只需要添加 web 依賴和 Spring-boot-admin-starter-server 依賴。
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--安全認證框架--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
2.2. 配置 application.yml
server: port: 8000 ####服務(wù)監(jiān)控server端 spring: application: name: wireless-admin-server cloud: nacos: discovery: server-addr: localhost:8848 security: user: name: admin password: admin
2.3啟動類:AdminServerMain
package com.gpdi.wireless; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @Author Lxq * @Date 2020/5/7 17:45 * @Version 1.0 */ @EnableAdminServer @SpringBootApplication @EnableDiscoveryClient public class AdminServerMain { public static void main(String[] args) { SpringApplication.run(AdminServerMain.class, args); } }
2.4配置類 :SecuritySecureConfig (直接cp官方文檔)
package com.gpdi.wireless.config; import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; /** * @Author Lxq * @Date 2020/5/7 22:15 * @Version 1.0 * */ @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 { // @formatter:off SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); http.authorizeRequests() //授予對所有靜態(tài)資產(chǎn)和登錄頁面的公共訪問權(quán)限 .antMatchers(adminContextPath + "/assets/**").permitAll() .antMatchers(adminContextPath + "/login").permitAll() //必須對每個其他請求進行身份驗證 .anyRequest().authenticated() .and() //配置登錄和注銷 .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() .logout().logoutUrl(adminContextPath + "/logout").and() //啟用HTTP-Basic支持。這是Spring Boot Admin Client注冊所必需的 .httpBasic().and() .csrf() .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .ignoringAntMatchers( // 禁用CRSF保護Spring引導(dǎo)管理客戶端用來注冊的端點。 adminContextPath + "/instances", // 禁用執(zhí)行器端點的CRSF保護 adminContextPath + "/actuator/**" ); } }
3. Spring Boot Admin 客戶端
創(chuàng)建 Spring Boot 項目依舊不提,這里只需要添加 Spring Boot Admin 客戶端需要的依賴,在項目啟動時就會增加相關(guān)的獲取信息的 API 接口。然后在 Spring Boot 配置文件中配置 Spring Boot Admin 服務(wù)端,就可以進行監(jiān)控了。
3.1 客戶端依賴
< !--服務(wù)監(jiān)控客戶端--> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.2.2</version> </dependency> <!--alibaba-nacos-discovery 注冊中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
3.2 客戶端配置
客戶端配置主要為了讓客戶端可以成功向服務(wù)端注冊,所以需要配置客戶端所在應(yīng)用相關(guān)信息以及 Spring Boot Admin Server 服務(wù)端的 url。
server: port: 8761 spring: application: name: wireless-code-generatr cloud: nacos: discovery: server-addr: localhost:8848 #### 暴露端點 management: endpoints: web: exposure: include: '*' endpoint: health: show-details: always logging: file: name: boot.log pattern: ####日志高亮 file: '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx'
配置中的 include: "*" 公開了所有的端口,對于生產(chǎn)環(huán)境,應(yīng)該自信的選擇要公開的接口。
3.3. 客戶端運行
啟動客戶端會暴漏相關(guān)的運行狀態(tài)接口,并且自動向配置的服務(wù)端發(fā)送注冊信息。
4. Spring Boot Admin 功能
點擊監(jiān)控頁面上的在線的應(yīng)用實例,可以跳轉(zhuǎn)到應(yīng)用實例詳細的監(jiān)控管理頁面,也就是 Vue.js 實現(xiàn)的 web 展示。
Spring Boot Admin Server 可以監(jiān)控的功能很多,使用起來沒有難度,
下面描述下可以監(jiān)測的部分內(nèi)容:
- 應(yīng)用運行狀態(tài),如時間、垃圾回收次數(shù),線程數(shù)量,內(nèi)存使用走勢。
- 應(yīng)用性能監(jiān)測,通過選擇 JVM 或者 Tomcat 參數(shù),查看當前數(shù)值。
- 應(yīng)用環(huán)境監(jiān)測,查看系統(tǒng)環(huán)境變量,應(yīng)用配置參數(shù),自動配置參數(shù)。
- 應(yīng)用 bean 管理,查看 Spring Bean ,并且可以查看是否單例。
- 應(yīng)用計劃任務(wù),查看應(yīng)用的計劃任務(wù)列表。
- 應(yīng)用日志管理,動態(tài)更改日志級別,查看日志。
- 應(yīng)用 JVM 管理,查看當前線程運行情況,dump 內(nèi)存堆棧信息。
- 應(yīng)用映射管理,查看應(yīng)用接口調(diào)用方法、返回類型、處理類等信息。
上面提到的日志管理,可以動態(tài)的更改日志級別,以及查看日志。默認配置下是只可以動態(tài)更改日志級別的,如果要在線查看日志,就需要手動配置日志路徑了。
客戶端上可以像下面這樣配置日志路徑以及日志高亮。
# 配置文件:application.yml logging: file: name: boot.log pattern: # 日志高亮 file: '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx'
下面是在 Spring Boot Admin 監(jiān)測頁面上查看的客戶端應(yīng)用日志。
參考資料:官方文檔
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中@Import的各種用法以及ImportAware接口詳解
這篇文章主要介紹了Spring中@Import的各種用法以及ImportAware接口詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10基于Rest的API解決方案(jersey與swagger集成)
下面小編就為大家?guī)硪黄赗est的API解決方案(jersey與swagger集成)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08springboot項目中jacoco服務(wù)端部署使用
這篇文章主要為大家介紹了springboot項目中jacoco服務(wù)端部署使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07Spring Boot 2.7.6整合redis與低版本的區(qū)別
這篇文章主要介紹了Spring Boot 2.7.6整合redis與低版本的區(qū)別,文中補充介紹了SpringBoot各個版本使用Redis之間的區(qū)別實例講解,需要的朋友可以參考下2023-02-02SpringBoot鉤子函數(shù)的實現(xiàn)示例
SpringBoot雖然沒有直接稱為“鉤子函數(shù)”的概念,但可以其他方法實現(xiàn),本文就來介紹一下SpringBoot鉤子函數(shù)的實現(xiàn)示例,感興趣的可以了解一下2024-11-11spring cloud 阿波羅 apollo 本地開發(fā)環(huán)境搭建過程
Apollo(阿波羅)是攜程框架部門研發(fā)的配置管理平臺,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性2018-01-01java聯(lián)系人管理系統(tǒng)簡單設(shè)計
這篇文章主要為大家詳細介紹了java聯(lián)系人管理系統(tǒng)簡單設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10Mybatis之typeAlias配置的3種方式小結(jié)
這篇文章主要介紹了Mybatis之typeAlias配置的3種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01