SpringCloud Alibaba Nacos 整合SpringBoot Admin實戰(zhàn)
1. Spring Boot Admin 是什么
Spring Boot Admin 是由 codecentric 組織開發(fā)的開源項目,使用 Spring Boot Admin 可以管理和監(jiān)控你的 Spring Boot 項目。
它分為客戶端和服務端兩部分,客戶端添加到你的 Spring Boot 應用增加暴漏相關信息的 HTTP 接口,然后注冊到 Spring Boot Admin 服務端,這一步驟可以直接向服務端注冊,也可以通過 Eureka 或者 Consul 進行注冊。
而 Spring Boot Admin Server 通過 Vue.js 程序監(jiān)控信息進行可視化呈現(xiàn)。并且支持多種事件通知操作。
2. Spring Boot Admin 服務端
Spring Boot Admin 服務端是基于 Spring Boot 項目的,如何創(chuàng)建一個 Spring Boot 項目這里不提,你可以參考之前文章或者從 https://start.spring.io/ 直接獲得一個 Spring Boot 項目。
2.1. 添加依賴(服務端)
只需要添加 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
####服務監(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)和登錄頁面的公共訪問權限
.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引導管理客戶端用來注冊的端點。
adminContextPath + "/instances",
// 禁用執(zhí)行器端點的CRSF保護
adminContextPath + "/actuator/**"
);
}
}

3. Spring Boot Admin 客戶端
創(chuàng)建 Spring Boot 項目依舊不提,這里只需要添加 Spring Boot Admin 客戶端需要的依賴,在項目啟動時就會增加相關的獲取信息的 API 接口。然后在 Spring Boot 配置文件中配置 Spring Boot Admin 服務端,就可以進行監(jiān)控了。
3.1 客戶端依賴
< !--服務監(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 客戶端配置
客戶端配置主要為了讓客戶端可以成功向服務端注冊,所以需要配置客戶端所在應用相關信息以及 Spring Boot Admin Server 服務端的 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)境,應該自信的選擇要公開的接口。
3.3. 客戶端運行
啟動客戶端會暴漏相關的運行狀態(tài)接口,并且自動向配置的服務端發(fā)送注冊信息。
4. Spring Boot Admin 功能

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

參考資料:官方文檔
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring中@Import的各種用法以及ImportAware接口詳解
這篇文章主要介紹了Spring中@Import的各種用法以及ImportAware接口詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10
基于Rest的API解決方案(jersey與swagger集成)
下面小編就為大家?guī)硪黄赗est的API解決方案(jersey與swagger集成)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
Spring Boot 2.7.6整合redis與低版本的區(qū)別
這篇文章主要介紹了Spring Boot 2.7.6整合redis與低版本的區(qū)別,文中補充介紹了SpringBoot各個版本使用Redis之間的區(qū)別實例講解,需要的朋友可以參考下2023-02-02
SpringBoot鉤子函數(shù)的實現(xiàn)示例
SpringBoot雖然沒有直接稱為“鉤子函數(shù)”的概念,但可以其他方法實現(xiàn),本文就來介紹一下SpringBoot鉤子函數(shù)的實現(xiàn)示例,感興趣的可以了解一下2024-11-11
spring cloud 阿波羅 apollo 本地開發(fā)環(huán)境搭建過程
Apollo(阿波羅)是攜程框架部門研發(fā)的配置管理平臺,能夠集中化管理應用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應用端,并且具備規(guī)范的權限、流程治理等特性2018-01-01

