一篇帶你了解Spring Boot Admin,賊好使!
作者 | 磊哥
來源 | Java中文社群(ID:javacn666)
轉(zhuǎn)載請聯(lián)系授權(quán)(微信ID:GG_Stone)
Spring Boot Admin(SBA)是一個(gè)開源的社區(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è)置和查看、定時(shí)任務(wù)查看、Spring Boot 緩存查看和管理等功能。接下來我們一起來搭建和使用吧。
它最終的展示效果如下:
1.搭建SBA監(jiān)控端
我們需要創(chuàng)建一個(gè) Spring Boot Admin 項(xiàng)目,用來監(jiān)控和管理我們的 Spring Boot 項(xiàng)目,搭建的方式和創(chuàng)建普通的 Spring Boot 項(xiàng)目類似,具體步驟如下。使用 Idea 創(chuàng)建一個(gè) Spring Boot 項(xiàng)目:
這里需要注意,需要添加 Spring Boot Admin(Server)服務(wù)端框架的支持,如下圖所示:
也就是創(chuàng)建的 Spring Boot 項(xiàng)目需要添加以下兩個(gè)重要的框架支持:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>de.codecentric</groupId>
- <artifactId>spring-boot-admin-starter-server</artifactId>
- </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 中配置一個(gè)項(xiàng)目的端口號就可以直接啟動了,我配置的端口號是 9001:
- server.port=9001
PS:配置端口號的主要目的是為了不和其他 Spring Boot 項(xiàng)目沖突,如果 SBA 是單獨(dú)部署此步驟可以忽略。
啟動項(xiàng)目之后,就可以看到 SBA 的主頁了,如下圖所示:
此時(shí) SBA 中還沒有添加任何需要監(jiān)控的項(xiàng)目,接下來我們再創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,加入到 SBA 中來進(jìn)行監(jiān)控和管理吧。
2.創(chuàng)建一個(gè)普通SpringBoot項(xiàng)目
首先,我們需要創(chuàng)建一個(gè)普通的 Spring Boot 項(xiàng)目,具體的創(chuàng)建步驟這里就不演示了。當(dāng)創(chuàng)建好 Spring Boot 項(xiàng)目之后,需要在這個(gè) Spring Boot 項(xiàng)目中需要添加 SBA 客戶端框架的支持,也就是在 pom.xml 中配置如下內(nèi)容:
- <dependency>
- <groupId>de.codecentric</groupId>
- <artifactId>spring-boot-admin-starter-client</artifactId>
- </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)控總覽
配置完以上信息之后,此時(shí)查看 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ā)生的時(shí)間,如下圖所示:
4.SpringBoot異常監(jiān)控
當(dāng)我們手動把被監(jiān)控的 Spring Boot 項(xiàng)目停止之后,在 Spring Boot Admin 中就可以查看到一個(gè)應(yīng)用已經(jīng)被停掉了,如下圖所示:
我們也可以通過事件日志查看 Spring Boot 宕機(jī)的具體時(shí)間,如下圖所示:
5.配置查看更多監(jiān)控項(xiàng)
通過上面的內(nèi)容我們可以看出,監(jiān)控的 Spring Boot 選項(xiàng)還是比較少的,怎么才能查看更多的監(jiān)控項(xiàng)呢?要解決這個(gè)問題,我們需要在被監(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.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </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)容了:
- 啟動時(shí)間、累計(jì)運(yùn)行時(shí)間;
- 進(jìn)程和線程數(shù)量和占用的 CPU 資源;
- 垃圾回收詳情信息,回收次數(shù)和花費(fèi)時(shí)間;
- 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 中的定時(shí)任務(wù);
- 查看和管理 Spring Boot 項(xiàng)目中的所有緩存。
以下是幾個(gè)重要頁面的截圖,我們一起來看。
5.3.1 查看運(yùn)行環(huán)境
5.3.2 查看定時(shí)任務(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í)時(shí)日志
想要查看監(jiān)控項(xiàng)目中的日志信息,有一個(gè)前提條件,前提條件是你被監(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í)我們就可以查看實(shí)時(shí)的日志信息了,當(dāng)然你也可以隨時(shí)下載日志,如果需要的話。
總結(jié)
Spring Boot Admin(SBA)是一個(gè)社區(qū)開源項(xiàng)目,用于管理和監(jiān)視 Spring Boot 應(yīng)用程序,它提供詳細(xì)的健康 (Health)信息、內(nèi)存信息、JVM 系統(tǒng)和環(huán)境屬性、垃圾回收信息、日志設(shè)置和查看、定時(shí)任務(wù)查看、Spring Boot 緩存查看和管理等功能。
我們需要創(chuàng)建一個(gè) SBA 服務(wù)器端用來監(jiān)控一個(gè)或多個(gè) Spring Boot 項(xiàng)目,被監(jiān)控的 Spring Boot 項(xiàng)目要添加 SBA Client 框架的支持,且添加 actuator 框架和相應(yīng)的配置,就可以實(shí)現(xiàn)對 Spring Boot 項(xiàng)目的完美監(jiān)控了。