SpringCloud Alibaba Nacos 整合SpringBoot Admin實(shí)戰(zhàn)
1. Spring Boot Admin 是什么
Spring Boot Admin 是由 codecentric 組織開發(fā)的開源項(xiàng)目,使用 Spring Boot Admin 可以管理和監(jiān)控你的 Spring Boot 項(xiàng)目。
它分為客戶端和服務(wù)端兩部分,客戶端添加到你的 Spring Boot 應(yīng)用增加暴漏相關(guān)信息的 HTTP 接口,然后注冊(cè)到 Spring Boot Admin 服務(wù)端,這一步驟可以直接向服務(wù)端注冊(cè),也可以通過 Eureka 或者 Consul 進(jìn)行注冊(cè)。
而 Spring Boot Admin Server 通過 Vue.js 程序監(jiān)控信息進(jìn)行可視化呈現(xiàn)。并且支持多種事件通知操作。
2. Spring Boot Admin 服務(wù)端
Spring Boot Admin 服務(wù)端是基于 Spring Boot 項(xiàng)目的,如何創(chuàng)建一個(gè) Spring Boot 項(xiàng)目這里不提,你可以參考之前文章或者從 https://start.spring.io/ 直接獲得一個(gè) Spring Boot 項(xiàng)目。
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>
<!--安全認(rèn)證框架-->
<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啟動(dòng)類: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()
//授予對(duì)所有靜態(tài)資產(chǎn)和登錄頁面的公共訪問權(quán)限
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
//必須對(duì)每個(gè)其他請(qǐng)求進(jìn)行身份驗(yàn)證
.anyRequest().authenticated()
.and()
//配置登錄和注銷
.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(
// 禁用CRSF保護(hù)Spring引導(dǎo)管理客戶端用來注冊(cè)的端點(diǎn)。
adminContextPath + "/instances",
// 禁用執(zhí)行器端點(diǎn)的CRSF保護(hù)
adminContextPath + "/actuator/**"
);
}
}

3. Spring Boot Admin 客戶端
創(chuàng)建 Spring Boot 項(xiàng)目依舊不提,這里只需要添加 Spring Boot Admin 客戶端需要的依賴,在項(xiàng)目啟動(dòng)時(shí)就會(huì)增加相關(guān)的獲取信息的 API 接口。然后在 Spring Boot 配置文件中配置 Spring Boot Admin 服務(wù)端,就可以進(jìn)行監(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 注冊(cè)中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.2 客戶端配置
客戶端配置主要為了讓客戶端可以成功向服務(wù)端注冊(cè),所以需要配置客戶端所在應(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
#### 暴露端點(diǎn)
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: "*" 公開了所有的端口,對(duì)于生產(chǎn)環(huán)境,應(yīng)該自信的選擇要公開的接口。
3.3. 客戶端運(yùn)行
啟動(dòng)客戶端會(huì)暴漏相關(guān)的運(yùn)行狀態(tài)接口,并且自動(dòng)向配置的服務(wù)端發(fā)送注冊(cè)信息。
4. Spring Boot Admin 功能

點(diǎn)擊監(jiān)控頁面上的在線的應(yīng)用實(shí)例,可以跳轉(zhuǎn)到應(yīng)用實(shí)例詳細(xì)的監(jiān)控管理頁面,也就是 Vue.js 實(shí)現(xiàn)的 web 展示。
Spring Boot Admin Server 可以監(jiān)控的功能很多,使用起來沒有難度,
下面描述下可以監(jiān)測(cè)的部分內(nèi)容:
- 應(yīng)用運(yùn)行狀態(tài),如時(shí)間、垃圾回收次數(shù),線程數(shù)量,內(nèi)存使用走勢(shì)。
- 應(yīng)用性能監(jiān)測(cè),通過選擇 JVM 或者 Tomcat 參數(shù),查看當(dāng)前數(shù)值。
- 應(yīng)用環(huán)境監(jiān)測(cè),查看系統(tǒng)環(huán)境變量,應(yīng)用配置參數(shù),自動(dòng)配置參數(shù)。
- 應(yīng)用 bean 管理,查看 Spring Bean ,并且可以查看是否單例。
- 應(yīng)用計(jì)劃任務(wù),查看應(yīng)用的計(jì)劃任務(wù)列表。
- 應(yīng)用日志管理,動(dòng)態(tài)更改日志級(jí)別,查看日志。
- 應(yīng)用 JVM 管理,查看當(dāng)前線程運(yùn)行情況,dump 內(nèi)存堆棧信息。
- 應(yīng)用映射管理,查看應(yīng)用接口調(diào)用方法、返回類型、處理類等信息。
上面提到的日志管理,可以動(dòng)態(tài)的更改日志級(jí)別,以及查看日志。默認(rèn)配置下是只可以動(dòng)態(tài)更改日志級(jí)別的,如果要在線查看日志,就需要手動(dòng)配置日志路徑了。
客戶端上可以像下面這樣配置日志路徑以及日志高亮。
# 配置文件: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)測(cè)頁面上查看的客戶端應(yīng)用日志。

參考資料:官方文檔
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java并發(fā)編程中實(shí)現(xiàn)可見性的四種可行方案解析
這篇文章主要介紹了java并發(fā)編程中實(shí)現(xiàn)可見性的四種可行方案解析,使用關(guān)鍵字volatile和使用鎖(如synchronized關(guān)鍵字或者java.util.concurrent包中的鎖)來確保對(duì)共享變量的修改在多線程環(huán)境中能夠正確地被其他線程所觀察到,需要的朋友可以參考下2023-08-08
SpringBoot配置項(xiàng)目訪問路徑URL的根路徑方式
這篇文章主要介紹了SpringBoot配置項(xiàng)目訪問路徑URL的根路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
java springboot的概述、特點(diǎn)與構(gòu)建介紹
大家好,本篇文章主要講的是springboot的概述、特點(diǎn)與構(gòu)建介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
Java均攤復(fù)雜度和防止復(fù)雜度的震蕩原理分析
這篇文章主要介紹了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩,結(jié)合實(shí)例形式分析了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩相關(guān)概念、原理、實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2020-03-03
Mybatis基于xml配置實(shí)現(xiàn)單表的增刪改查功能
這篇文章主要介紹了Mybatis基于xml配置實(shí)現(xiàn)單表的增刪改查,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04

