長話短說哦,直接查看下文吧
目錄
- 宣告
- 先鋒
- 前提
- 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>
組態檔的配置(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
到這里就先停一下,我講解一下組態檔中幾個配置原因,授人以魚不如授人以漁
配置解釋一(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);
}
}
啟動類配置解釋: 與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 查看指定容器的日志
需要注意: 埠號是對外映射的,我這里在是提前開放好公網出方向的埠了,所以如果你們無法訪問的話,查看一下是否沒有開放埠

外網測驗
外網測驗也是通的,這也就意味著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: '*'

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>
我這里是創建了兩個客戶端的實體服務,并將它們都上傳到服務器中,并且打包成鏡像運行了起來,鏡像啟動之后,可以通過以下命令獲取容器在docker中ip地址,然后配置到instance下的service-url屬性上
docker inspect 容器id 查看容器的詳細資訊
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: '*'
記得外網埠開放,否則外網無法訪問

最終測驗
在三個鏡像(SpringBoot Admin服務端,2個客戶端)都啟動成功之后,就可以進行測驗了,郵件通知的話已經通過配置實作了(服務的宣告周期會通過郵件的方式進行通知)





以上就是最終的測驗效果
引數的指南
對于SpringBoot Admin服務端和客戶端的配置還有很多,可以參照官方提供的引數進行配置(例如:讀取超時時間、連接超時時間、更新實體服務資訊時間)


尾聲
到了這里,也就意味著文章的完結了,如果文章中有疑惑或認為不對的地方都可以通過評論提出來,我會吸取您的寶貴意見,最后記得點贊哦,謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243821.html
標籤:java
