實戰SpringBoot Admin

ZZ100861122發表於2021-01-05
長話短說哦,直接檢視下文吧

目錄

    宣告
    先鋒
    前提
    SpringBoot Admin
        介紹
        服務端的搭建
        客戶端的搭建
        引數的指南
    尾聲

宣告

見名知意,實戰SpringBoot Admin,實戰!實戰!實戰!該文章環繞SpringBoot Admin的重點功能(郵件通知、視覺化)來講解。

先鋒

在寫該文章之前,我也是查閱了一些關於SpringBoot Admin的文章的,一言難盡,不太理想啊(無法解決實際問題)…嗐…就讓我來做這個先鋒吧

前提

Spring Cloud 版本:Finchley.RELEASE(支援SpringBoot 2.x.x以上版本)

SpringBoot Admin版本:2.0.1

SpringBoot版本:2.0.2.RELEASE

Centos版本:7.x

SpringBoot Admin
介紹

SpringBoot Admin是一個社群專案.用於管理和監控SpringBoot應用程式,註冊到SpringBoot Admin服務端可以通過HTTP的方式或使用SpringCloud(eureka、consul、nacos)等

這個圖是我自己畫的,只是簡單的畫了一下,畫的不太好,請見諒
在這裡插入圖片描述
在這裡插入圖片描述
服務端的搭建

搭建SpringBoot Admin的服務端,注意依賴的版本,如果沒有帶版本的話那麼依賴版本的預設版本會根據應用程式的版本支援來定義

pom.xml檔案中的依賴

	<!--SpringBoot Admin服務端 -->
	<dependency>
		<groupId>org.jolokia</groupId>
		<artifactId>jolokia-core</artifactId>
	    <jolokia.version>1.5.0</jolokia.version>
	</dependency>
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-starter-server</artifactId>
		<version>2.0.1</version>
	</dependency>
	<!-- SpringBoot Admin的ui介面 -->
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-server-ui</artifactId>
		<version>2.0.2</version>
	</dependency>
	<!--安全,保護SpringBoot Admin,使用時詳細講解-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	    <version>2.0.2.RELEASE</version>
	</dependency>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

配置檔案的配置(yml格式)

#埠號
server:
port: 28820

spring:
#微服務例項名稱
application:
name: POWERSERVICE-DOCKER

#設定SpringBootAdmin的屬性
spring:
boot:
admin:
ui:
title: ‘power-monitoring’
#設定security的使用者名稱和密碼
security:
user:
name: admin
password: admin12345

#設定SpringBoot Admin的郵箱通知
spring:
mail:
#郵箱伺服器地址
host: smtp.exmail.qq.com
#郵箱使用者名稱
username: xxxxx
#郵箱密碼
password: xxxxx
port: 465
#stmp的方式開啟
properties:
mail.smtp.auth: true
mail.host: smtp.exmail.qq.com
#設定smtp格式的SSL方式的埠號
smtp.socketFactory.port: 465
#使用SSL的方式傳送
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
#傳送郵箱
boot:
admin:
notify:
mail:
#郵箱發件人
from: xxxxx
#郵箱接收人,多個地址逗號隔開
to:
- xxxxx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

到這裡就先停一下,我講解一下配置檔案中幾個配置原因,授人以魚不如授人以漁
配置解釋一(security的配置):security是Spring社群下的,屬於安全方面,它可以和SpringBoot Admin搭配使用,保證了SpringBoot Admin的安全性(官方也是推薦搭配使用的).
在這裡插入圖片描述
配置解釋二(SSLSocketFactory類):該SSLSocketFactory類實現了SSL協議(中途還要使用JavaMailSender、JavaMailSenderImpl、MailSenderAutoConfiguration這些類或介面來實現傳送郵件功能)
配置解釋三(SMTP格式):這個實際上就很簡單了,我用過兩個方式,163和騰訊企業郵,不過需要注意(謹防採坑),注意①STMP方式的SSL協議的埠(465)或非SSL協議的埠(25)都是通用(163/騰訊企業郵等等)的 注意②如果要是用騰訊企業郵的話是要輸入郵箱賬戶以及郵箱密碼,而如果要是使用163郵箱的話是要輸入郵箱賬戶和授權碼的
在這裡插入圖片描述

在這裡插入圖片描述
配置SpringBoot Admin服務端啟動類

@EnableAutoConfiguration
@Configuration
@EnableAdminServer
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class Admin_power extends WebSecurityConfigurerAdapter {

private final String contextPath;

public Admin_power(AdminServerProperties adminServerProperties) {
	this.contextPath = adminServerProperties.getContextPath();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
	// 跨域設定 客戶端通過instances註冊(為後續docker做準備)
	http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
			.ignoringAntMatchers(contextPath + "/instances");

	http.authorizeRequests().antMatchers(contextPath + "/assets/**").permitAll(); // 靜態資源
	http.authorizeRequests().anyRequest().authenticated(); //認證

	// spring-boot-admin-server-ui
	http.formLogin().loginPage("/login").permitAll();
	http.logout().logoutUrl("/logout").logoutSuccessUrl("/login");

	// basic認證
	http.httpBasic();
}

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

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

啟動類配置解釋: 與Security搭配使用(實現攔截功能,登入功能),程式碼不是我自己編寫的,SpringBoot Admin官方提供
在這裡插入圖片描述

本地測試
到這裡的話,就代表SpringBoot Admin服務端已經配置好了(注意專案自己建立),先在本地測試下,如果沒問題的話就部署到雲端
在這裡插入圖片描述
在這裡插入圖片描述
打包釋出
我打包的話是通過cmd命令的(jar包)
在這裡插入圖片描述在這裡插入圖片描述
將打好的jar包上傳到雲端伺服器中
在這裡插入圖片描述
通過docker來進行打包命令(步驟:打包>>>生成映象>>>執行映象),打包過程就不演示了,詳細可以檢視docker官網中的命令講解
在這裡插入圖片描述
我生成的映象包的名稱命名為"powdockeradmin",接下來開始執行映象包
在這裡插入圖片描述

docker run -d -p 28820:28820 powdockeradmin 執行映象
docker ps 檢視執行的映象
docker logs --since 10m 容器id 檢視指定容器的日誌

1
2
3

需要注意: 埠號是對外對映的,我這裡在是提前開放好公網出方向的埠了,所以如果你們無法訪問的話,檢視一下是否沒有開放埠
在這裡插入圖片描述
外網測試
外網測試也是通的,這也就意味著SpringBoot Admin的服務端已經拿下了,接下來就需要配置客戶端了
在這裡插入圖片描述
客戶端的搭建

搭建SpringBoot Admin的客戶端相對來講就會簡單很多,只需要在配置檔案中做一些配置即可,但是需要注意一點就是,我在上文中服務端的啟動類中有配置過跨域設定

在這裡插入圖片描述
這也就意味著配置檔案中需要新增關於instance的配置,也正是因為這一點,才可以客戶端服務才可以入駐成功,否則無法入駐成功(因為一直無法識別,無法識別有效的主機地址)
配置檔案的配置(yml格式)

#監控服務配置
spring:
boot:
admin:
client:
#服務入駐SpringBoot Admin的地址
url:
- SpringBoot Admin服務端的地址
#要註冊的服務網址
instance:
service-url: 註冊服務端的服務網址(docker地址) 地址+埠
username: admin
password: admin12345
management:
endpoints:
web:
exposure:
include: ‘*’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

在這裡插入圖片描述
pom.xml檔案的依賴

	<!-- SpringBoot Admin客戶端 -->
	<dependency>
		<groupId>org.jolokia</groupId>
		<artifactId>jolokia-core</artifactId>
	</dependency>
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-starter-client</artifactId>
		<version>2.0.1</version>
	</dependency>
	<!-- SpringBoot Admin的ui介面 -->
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-server-ui</artifactId>
		<version>2.0.1</version>
	</dependency>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

我這裡是建立了兩個客戶端的例項服務,並將它們都上傳到伺服器中,並且打包成映象執行了起來,映象啟動之後,可以通過以下命令獲取容器在docker中ip地址,然後配置到instance下的service-url屬性上

docker inspect 容器id 檢視容器的詳細資訊

1

spring:
boot:
admin:
client:
#服務入駐SpringBoot Admin的地址
url:
- SpringBoot Admin服務端地址
#要註冊的服務網址
instance:
service-url: http://192.168.0.5:28840
username: admin
password: admin12345
management:
endpoints:
web:
exposure:
include: ‘*’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

記得外網埠開放,否則外網無法訪問
在這裡插入圖片描述
最終測試
在三個映象(SpringBoot Admin服務端,2個客戶端)都啟動成功之後,就可以進行測試了,郵件通知的話已經通過配置實現了(服務的宣告週期會通過郵件的方式進行通知)
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
以上就是最終的測試效果
引數的指南

對於SpringBoot Admin服務端和客戶端的配置還有很多,可以參照官方提供的引數進行配置(例如:讀取超時時間、連線超時時間、更新例項服務資訊時間)

在這裡插入圖片描述
在這裡插入圖片描述
尾聲

到了這裡,也就意味著文章的完結了,如果文章中有疑惑或認為不對的地方都可以通過評論提出來,我會吸取您的寶貴意見,最後記得點贊哦,謝謝

相關文章