第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Spring Boot 監(jiān)控與報警

1. 前言

因為公司開發(fā)的項目多、為客戶部署的項目實例多。工作中我們都會經(jīng)常遇到,由于某個客戶的項目突然無法訪問,一堆研發(fā)、售后部門的同事火急火燎處理問題的場景。

所以我非常希望能夠?qū)崿F(xiàn)這樣的功能:

  • 能夠有一個界面,監(jiān)控所有關(guān)注的項目實例運行狀態(tài)。
  • 對于某個項目實例來說,可以監(jiān)控該實例的各項運行參數(shù),例如內(nèi)存占用情況、磁盤使用情況、數(shù)據(jù)庫連接情況。
  • 項目實例因各種原因關(guān)閉時,可以自動報警。

在很長一段時間內(nèi),我感覺要實現(xiàn)這些功能比較復(fù)雜。后來我稍微研究了下,在 Spring Boot 中實現(xiàn)這種監(jiān)控和報警的功能非常簡單,那還等什么呢, Let’s Go !

2. 可視化監(jiān)控

可以直接利用 Spring Boot Admin 實現(xiàn)可視化監(jiān)控,此時至少需要兩個項目實例,一個是監(jiān)控的管理端,一個是被監(jiān)控的客戶端。

2.1 構(gòu)建監(jiān)控管理端項目

打開 Spring Initializr , Spring Boot 版本選擇 2.2.5 ,Group 為 com.imooc , Artifact 為 spring-boot-monitor-manager,生成項目后導(dǎo)入 Eclipse 開發(fā)環(huán)境。

2.2 引入管理端項目依賴

監(jiān)控管理端需要使用網(wǎng)頁展示監(jiān)控信息,所以引入 Web 依賴,另外添加 Spring Boot Admin 管理端依賴項。

實例:

		<!-- Web 依賴 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- Spring Boot Admin 管理端依賴項 -->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.2.3</version>
		</dependency>

2.3 開啟監(jiān)控管理端

在啟動類上添加 @EnableAdminServer 注解開啟 Spring Boot Admin 監(jiān)控管理功能,代碼如下:

實例:

@SpringBootApplication
@EnableAdminServer // 開啟監(jiān)控管理
public class SpringBootMonitorManagerApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringBootMonitorManagerApplication.class, args);
	}
}

然后運行啟動類,訪問 http://127.0.0.1:8080 會發(fā)現(xiàn)界面上已經(jīng)顯示監(jiān)控信息了。

圖片描述

Spring Boot Admin 監(jiān)控管理頁面

2.4 構(gòu)建監(jiān)控客戶端項目

打開 Spring Initializr , Spring Boot 版本選擇 2.2.5 ,Group 為 com.imooc , Artifact 為 spring-boot-monitor-client,生成項目后導(dǎo)入 Eclipse 開發(fā)環(huán)境。

2.5 引入客戶端項目依賴

直接引入 Web 依賴和監(jiān)控客戶端依賴。

實例:

		<!-- Web 依賴 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- Spring Boot Admin監(jiān)控客戶端依賴 -->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>2.2.3</version>
		</dependency>

2.6 修改客戶端配置

修改客戶端的配置文件 application.properties ,以便指定客戶端指向的服務(wù)端的地址。由于剛剛服務(wù)端已經(jīng)占用了 8080 端口,所以將客戶端的端口設(shè)置為 8091 。

還有一個必要設(shè)置是客戶端的名稱,當(dāng)我們監(jiān)控的項目實例比較多時,需要通過客戶端名稱來區(qū)分。

實例:

# 配置端口
server.port=8091
# 配置監(jiān)控管理端地址
spring.boot.admin.client.url=http://127.0.0.1:8080
# 客戶端的名稱,用于區(qū)分不同的客戶端
spring.boot.admin.client.instance.name=CLIENT1

TIps:此處指定監(jiān)控管理端地址使用的是 spring.boot.admin.client.url ,我個人認為應(yīng)使用 spring.boot.admin.server.url 更加合理。當(dāng)然大家不用糾結(jié)于此,此處只是特別提示。

2.7 測試監(jiān)控效果

啟動客戶端程序,然后刷新服務(wù)端網(wǎng)頁,會發(fā)現(xiàn)監(jiān)控管理頁面已經(jīng)顯示了客戶端信息。

圖片描述

監(jiān)控頁面展示客戶端信息

此時我們關(guān)閉客戶端程序,然后稍等一會刷新下監(jiān)控管理頁面(注意服務(wù)端發(fā)現(xiàn)客戶端離線是需要一定時間的),會發(fā)現(xiàn)監(jiān)控管理頁已經(jīng)顯示了離線項目實例信息。

圖片描述

監(jiān)控頁面展示離線客戶端信息

3. 監(jiān)控實例運行參數(shù)

使用 Spring Boot Admin 后,默認顯示的項目實例信息比較少。

圖片描述

CLIENT1 實例默認顯示信息

默認設(shè)置主要是為了保證項目實例的安全性,只展示了非常少的信息,我們可以通過配置文件指定展示哪些信息,如下。

實例:

# 配置客戶端展示哪些信息,*表示展示全部信息
management.endpoints.web.exposure.include=*

此時刷新監(jiān)控管理頁,會發(fā)現(xiàn)已經(jīng)展示各類運行參數(shù)信息。

圖片描述

全面展示項目實例運行參數(shù)信息

Tips:不同項目需要展示的信息不同,可以通過 management.endpoints.web.exposure.include 配置項進行設(shè)置,感興趣的同學(xué)可以自行查閱相關(guān)資料。

4. 自動報警

可視化監(jiān)控提供了全面了解項目運行狀況的手段,但是我們不可能 7*24 小時盯著界面看哪個應(yīng)用離線了。

最妙的效果是,項目離線時自動通知售后、運維等相關(guān)技術(shù)人員。

Spring Boot Admin 也提供了自動報警的功能,簡直太完美了,接下來我們來實現(xiàn)下。

4.1 引入依賴項

為監(jiān)控服務(wù)端項目引入郵件依賴。

實例:

		<!-- 郵件依賴 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

4.2 配置郵件發(fā)送所需信息

只需要配置常規(guī)的郵件收發(fā)信息即可。

實例:

# 網(wǎng)易郵箱發(fā)件服務(wù)器
spring.mail.host=smtp.163.com
# 網(wǎng)易郵箱發(fā)件端口
spring.mail.prot=25
# 發(fā)件人賬號
spring.mail.username=taqsxxkj@163.com
# 發(fā)件授權(quán)密碼,注意授權(quán)碼是用于登錄第三方郵件客戶端的專用密碼
spring.mail.password=123456
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# Spring Boot Admin 發(fā)件收件信息
spring.boot.admin.notify.mail.from=taqsxxkj@163.com
spring.boot.admin.notify.mail.to=taqsxxkj@163.com
spring.boot.admin.notify.mail.cc=taqsxxkj@163.com

此處特別注意發(fā)件授權(quán)密碼不是普通郵箱的登錄密碼,而是授權(quán)密碼,以網(wǎng)易郵箱為例在下圖位置設(shè)置。

圖片描述

網(wǎng)易郵箱授權(quán)密碼設(shè)置

4.3 項目實例離線郵件報警

啟動監(jiān)控服務(wù)端和客戶端,然后關(guān)閉客戶端,稍等一會檢查指定的報警接收郵箱,就會發(fā)現(xiàn)已收到報警郵件了。

圖片描述

項目實例離線郵件報警內(nèi)容

5. 視頻演示

6. 小結(jié)

報警和監(jiān)控機制可以為上線運行的項目提供額外的保障機制。

  • 可視化監(jiān)控可以提供一種總攬全局的監(jiān)控視角,眾多項目運行狀況一目了然,做到心里有底。
  • 對于重點項目,可以定期監(jiān)控項目實例的詳細運行參數(shù)。通過分析參數(shù)信息,預(yù)測性能瓶頸發(fā)生的時間節(jié)點,提前采取擴容等措施,防患于未然。
  • 當(dāng)發(fā)生嚴重錯誤,或者由于人為誤操作導(dǎo)致項目離線時,指定郵箱能夠及時收到報警信息。技術(shù)人員及時排查處理,作為項目運維方心里更有底。