當應用部署到遠程服務器後,爲了獲取應用的運行狀態,我們需要接入監控系統從而方便地實現對應用的管理,初步選擇的方案是大衆點評開發的CAT開源監控系統,自己所在公司也接入了該系統,功能強大,使用較爲熟悉。不料自己在接入過程中遇到很多坑,maven包沒有發佈在中央倉庫(在點評自己的倉庫下),引入本地倉庫,下載缺包,打包依賴失敗,啓動bean注入失敗等等,文檔也比較少,在鼓搗了一個下午後表示放棄,轉向spring官方提供的springboot admin 2.0,過程較爲順利,總結如下。
Spring Boot Admin 2.0初體驗
Spring Boot Admin 2.0 變化還是挺多的,具體參考 官網說明,這裏列幾條主要的:
-
使用Vue.js重寫了UI界面,界面扁平化,現代感十足,很nice
-
直接集成了基於 spring security 的認證,無需引入第三方模塊
-
加入 session endpoint 的監控支持
等等...
上圖!
當然自己並沒有用到很高級的功能,只是使用了一些基本功能。
搭建 Spring Boot Admin Server
通過maven形式引入依賴,springboot工程版本爲2.1.1(注意:springboot admin的版本號需要與當前工程springboot版本號保持一致,不然啓動會報classNotFoundException)
<!--springboot admin 2.0 monitor-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.1</version>
</dependency>
在啓動主類加入註解@EnableAdminServer
@SpringBootApplication(
scanBasePackages = {
"cn.jyycode",
"mapper"
})
@MapperScan(basePackages = "mapper")
@EnableCaching
@Import(value={SpringUtil.class})
@EnableAdminServer
public class PenguinApplication {
public static void main(String[] args) {
SpringApplication.run(PenguinApplication.class, args);
}
}
配置啓動參數,啓動應用,springboot admin 2.0成功啓動,但是原項目接口返回的頁面出現thymeleaf頁面解析錯誤, 且報錯標籤顯示是監控頁標籤,並沒有返回自己編寫的目標頁,初步推測springboot admin 2.0似乎是將直接將原有的頁面路徑給覆蓋了,故需要配置二級訪問目錄,這裏命名爲app,測試了下,暫時解決了這一問題。
spring
boot:
admin:
client:
url: http://localhost:8080/app
auto-registration: true
instance:
name: jiayuan application monitor
context-path: /app
management:
endpoints:
web:
exposure:
include: "*"
訪問http://localhost:8080/app,結果如下
應用上線推送通知
應用監控
打開Wallboard看板,顯示註冊的實例一個,如下(包括應用名,已運行時間,實例數)
點擊實例,進入監控詳情頁
點擊beans標籤,可以看到加載到spring容器中的所有bean對象
對jvm的監控也較爲完善,除了基本的虛擬機各區域的監控,線程狀態查看,還支持dump文件下載,以便在發生內存泄漏的時候幫助我們進行內存分析從而解決問題(ps:dump文件分析可下載Memory Analyzer (MAT))。
接口訪問的統計也是做的很不錯
其他方面瞭解不多,總體來說比同類產品(比如CAT)集成要方便很多,功能也十分強大,更多方面還是靠自己搭環境體驗一番吧。