Spring Boot Admin,賊好使!

Spring Boot Admin(SBA)是一個開源的社區(qū)項(xiàng)目,用于管理和監(jiān)控 Spring Boot 應(yīng)用程序。應(yīng)用程序可以通過 http 的方式,或 Spring Cloud 服務(wù)發(fā)現(xiàn)機(jī)制注冊到 SBA 中,然后就可以實(shí)現(xiàn)對 Spring Boot 項(xiàng)目的可視化管理和查看了。
Spring Boot Admin 可以監(jiān)控 Spring Boot 單機(jī)或集群項(xiàng)目,它提供詳細(xì)的健康 (Health)信息、內(nèi)存信息、JVM 系統(tǒng)和環(huán)境屬性、垃圾回收信息、日志設(shè)置和查看、定時任務(wù)查看、Spring Boot 緩存查看和管理等功能。接下來我們一起來搭建和使用吧。
它最終的展示效果如下:

1.搭建SBA監(jiān)控端
我們需要創(chuàng)建一個 Spring Boot Admin 項(xiàng)目,用來監(jiān)控和管理我們的 Spring Boot 項(xiàng)目,搭建的方式和創(chuàng)建普通的 Spring Boot 項(xiàng)目類似,具體步驟如下。使用 Idea 創(chuàng)建一個 Spring Boot 項(xiàng)目:
這里需要注意,需要添加 Spring Boot Admin(Server)服務(wù)端框架的支持,如下圖所示:
也就是創(chuàng)建的 Spring Boot 項(xiàng)目需要添加以下兩個重要的框架支持:
<dependency>
???<groupId>org.springframework.bootgroupId>
???<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
??<groupId>de.codecentricgroupId>
??<artifactId>spring-boot-admin-starter-serverartifactId>
dependency>
1.1 開啟SBA服務(wù)
創(chuàng)建完項(xiàng)目之后,需要在啟動類上開啟 SBA 服務(wù):
import?de.codecentric.boot.admin.server.config.EnableAdminServer;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableAdminServer?//?添加此行代碼
@SpringBootApplication?
public?class?SbaserverApplication?{
????public?static?void?main(String[]?args)?{
????????SpringApplication.run(SbaserverApplication.class,?args);
????}
}
1.2 配置SBA端口號
在 application.properties 中配置一個項(xiàng)目的端口號就可以直接啟動了,我配置的端口號是 9001:
server.port=9001
PS:配置端口號的主要目的是為了不和其他 Spring Boot 項(xiàng)目沖突,如果 SBA 是單獨(dú)部署此步驟可以忽略。
啟動項(xiàng)目之后,就可以看到 SBA 的主頁了,如下圖所示:
此時 SBA 中還沒有添加任何需要監(jiān)控的項(xiàng)目,接下來我們再創(chuàng)建一個 Spring Boot 項(xiàng)目,加入到 SBA 中來進(jìn)行監(jiān)控和管理吧。
2.創(chuàng)建一個普通SpringBoot項(xiàng)目
首先,我們需要創(chuàng)建一個普通的 Spring Boot 項(xiàng)目,具體的創(chuàng)建步驟這里就不演示了。當(dāng)創(chuàng)建好 Spring Boot 項(xiàng)目之后,需要在這個 Spring Boot 項(xiàng)目中需要添加 SBA 客戶端框架的支持,也就是在 pom.xml 中配置如下內(nèi)容:
<dependency>
??<groupId>de.codecentricgroupId>
??<artifactId>spring-boot-admin-starter-clientartifactId>
dependency>
然后在 application.properties 文件中配置 SBA 服務(wù)器端地址,也就是咱們第一步創(chuàng)建 SBA 項(xiàng)目的地址,配置內(nèi)容如下:
#?當(dāng)前項(xiàng)目端口號
server.port=8080
#?Spring?Boot?Admin?監(jiān)控服務(wù)器端地址
spring.boot.admin.client.url=http://localhost:9001
其中“spring.boot.admin.client.url”為 SBA 監(jiān)控地址。
3.SpringBootAdmin監(jiān)控總覽
配置完以上信息之后,此時查看 Spring Boot Admin 頁面中就有被監(jiān)控的 Spring Boot 項(xiàng)目了,如下圖所示:
也可以點(diǎn)擊“應(yīng)用墻”查看 Spring Boot Admin 中所有被監(jiān)控的 Spring Boot 項(xiàng)目,如下圖所示:
點(diǎn)擊應(yīng)用進(jìn)入詳情頁面,如下圖所示:
事件日志中包含 Spring Boot 各種狀態(tài)的展示(UP 為正常、OFFLINE 為異常)和發(fā)生的時間,如下圖所示:
4.SpringBoot異常監(jiān)控
當(dāng)我們手動把被監(jiān)控的 Spring Boot 項(xiàng)目停止之后,在 Spring Boot Admin 中就可以查看到一個應(yīng)用已經(jīng)被停掉了,如下圖所示:
我們也可以通過事件日志查看 Spring Boot 宕機(jī)的具體時間,如下圖所示:
5.配置查看更多監(jiān)控項(xiàng)
通過上面的內(nèi)容我們可以看出,監(jiān)控的 Spring Boot 選項(xiàng)還是比較少的,怎么才能查看更多的監(jiān)控項(xiàng)呢?要解決這個問題,我們需要在被監(jiān)控的 Spring Boot 項(xiàng)目中添加 spring-boot-starter-actuator 框架的支持,并開啟查看所有監(jiān)控項(xiàng)的配置才行,最終展示效果如下:
接下來我們來配置一下這些監(jiān)控項(xiàng)。
5.1 添加actuator框架支持
在被監(jiān)控的 Spring Boot 項(xiàng)目中添加 actuator 框架支持,也就是在 pom.xml 中添加以下配置:
<dependency>
????<groupId>org.springframework.bootgroupId>
????<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
手動點(diǎn)擊 Maven 導(dǎo)入依賴包(如果開啟了自動導(dǎo)入,此步驟可忽略)。
5.2 配置開放所有監(jiān)控項(xiàng)
在被監(jiān)控的 Spring Boot 項(xiàng)目中添加以下配置:
#?開啟監(jiān)控所有項(xiàng)
management.endpoints.web.exposure.include=*
以上的配置是開放監(jiān)控所有選項(xiàng),配置完之后,重啟此 Spring Boot 項(xiàng)目,然后再刷新 Spring Boot Admin 更多的監(jiān)控項(xiàng)就展示出來了,如下圖所示:
5.3 監(jiān)控項(xiàng)目預(yù)覽
將 Spring Boot 的所有監(jiān)控項(xiàng)都開啟之后,通過 SBA 就可以查看以下內(nèi)容了:
啟動時間、累計運(yùn)行時間; 進(jìn)程和線程數(shù)量和占用的 CPU 資源; 垃圾回收詳情信息,回收次數(shù)和花費(fèi)時間; JVM 線程轉(zhuǎn)儲、內(nèi)存轉(zhuǎn)儲詳情和對應(yīng)的文件下載; 可以查看和配置 Spring Boot 項(xiàng)目中的日志級別; 查看 Spring Boot 項(xiàng)目性能監(jiān)控; 查看 Spring Boot 運(yùn)行環(huán)境信息; 查看 Spring Boot 所有類信息; 查看 Spring Boot 中的定時任務(wù); 查看和管理 Spring Boot 項(xiàng)目中的所有緩存。
以下是幾個重要頁面的截圖,我們一起來看。
5.3.1 查看運(yùn)行環(huán)境


5.3.2 查看定時任務(wù)

5.3.3 項(xiàng)目日志級別配置
我們可以通過 Spring Boot Admin 來動態(tài)的配置項(xiàng)目中的日志級別。
5.3.4 JVM線程和內(nèi)存查看

5.3.5 查看SpringBoot所有緩存
當(dāng)然我們還可以對這些緩存進(jìn)行刪除操作。
6.查看項(xiàng)目實(shí)時日志
想要查看監(jiān)控項(xiàng)目中的日志信息,有一個前提條件,前提條件是你被監(jiān)控的 Spring Boot 項(xiàng)目,必須配置了日志的保存路徑或者日志保存文件名,只有配置這兩項(xiàng)中的任意一項(xiàng),你的 Spring Boot 項(xiàng)目才會將日志保存到磁盤上,這樣才能通過 SBA 查看到,我配置的是日志路徑,在 Spring Boot 的 application.properties 配置文件中添加以下配置:
#?設(shè)置日志保存路徑
logging.file.path=C:\\work\\log
設(shè)置完成之后,重啟你的 Spring Boot 項(xiàng)目,然后刷新 SBA 頁面,最終展示效果如下:
此時我們就可以查看實(shí)時的日志信息了,當(dāng)然你也可以隨時下載日志,如果需要的話。
總結(jié)
Spring Boot Admin(SBA)是一個社區(qū)開源項(xiàng)目,用于管理和監(jiān)視 Spring Boot 應(yīng)用程序,它提供詳細(xì)的健康 (Health)信息、內(nèi)存信息、JVM 系統(tǒng)和環(huán)境屬性、垃圾回收信息、日志設(shè)置和查看、定時任務(wù)查看、Spring Boot 緩存查看和管理等功能。
我們需要創(chuàng)建一個 SBA 服務(wù)器端用來監(jiān)控一個或多個 Spring Boot 項(xiàng)目,被監(jiān)控的 Spring Boot 項(xiàng)目要添加 SBA Client 框架的支持,且添加 actuator 框架和相應(yīng)的配置,就可以實(shí)現(xiàn)對 Spring Boot 項(xiàng)目的完美監(jiān)控了。

沒有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不系之舟。
推薦閱讀:
