為應用程序添加系統(tǒng)監(jiān)控-Spring Boot Actuator組件
在本節(jié)中,我們將介紹Spring Boot自帶的系統(tǒng)監(jiān)控功能。系統(tǒng)監(jiān)控在傳統(tǒng)Spring中是缺失的,而Spring Boot考慮到了這方面需求并提供了Actuator組件。Actuator組件對外暴露的是一系列HTTP端點,請注意訪問這些端點時返回的數(shù)據(jù)的風格跟平時常見的RESTful風格有所不同,這是因為該組件在構(gòu)建HTTP端點時使用的就是我們在第4章介紹的HATEOAS。
Actuator組件
初始化Spring Boot監(jiān)控需要引入Spring Boot Actuator組件,而SpringBoot Actuator組件又依賴于Spring HATEOAS組件,所以需要在pom中添加兩個Maven依賴,如代碼清單12-1所示。

當啟動Spring Boot應用程序時,我們在啟動日志里會發(fā)現(xiàn)自動添加了autoconfig、dump、beans、actuator、health等HTTP的端點。但是請注意,并不是所有端點都是對外暴露的。如果想要獲取當前系統(tǒng)暴露的Actuator端點,可以訪問http://localhost:8080/actuator并得到如代碼清單12-2所示的結(jié)果。

這種結(jié)果就是HATEOAS風格的HTTP響應,可以看到,默認情況下SpringBoot Actuator只暴露了info和health這兩個最基本的監(jiān)控端點。如果我們想要看到默認情況下看不到的所有端點,則需要在配置文件中添加如代碼清單12-3所示的配置信息。

重啟Spring Boot應用程序,這時就能獲取Spring Boot Actuator所暴露的所有端點,如代碼清單12-4所示。



我們可以訪問上述結(jié)果中的各個端點以獲取自己感興趣的監(jiān)控信息,例如訪問http://localhost:8080/actuator/health端點可以得到當前服務的基本狀態(tài),如代碼清單12-5所示。

上述配置項指定了需要顯示health這個端點的詳細信息。同樣的配置方法也適用于其他各個端點。本書不對Spring Boot Actuator提供的所有端點都進行詳細討論,根據(jù)各個端點所起到的作用,將它們分為三大類。第一類是應用配置類,用來獲取應用程序中加載的應用配置、環(huán)境變量、自動化配置報告等與Spring Boot應用密切相關(guān)的配置類信息,典型的包括info、beans、env等端點。第二類是度量指標類,用來獲取應用程序運行過程中的內(nèi)存信息、線程池信息、HTTP請求統(tǒng)計等度量指標,常見的包括前面提到的health,以及metrics和threaddump等端點。第三類是操作控制類,用于對Spring Boot應用程序進行操作,包括用來關(guān)閉應用的shutdown端點。
Spring Boot Actuator內(nèi)置的這些端點已經(jīng)能夠很大程度上滿足日常開發(fā)的需求。但如果這些默認端點信息還不夠豐富,我們也可以對其進行修改和擴展。常見實現(xiàn)方案有兩種,一種是擴展現(xiàn)有的監(jiān)控端點,另一種是自定義新的監(jiān)控端點。在接下來的內(nèi)容中,我們將通過案例來實現(xiàn)這一目標。我們先來關(guān)注如何在現(xiàn)有的監(jiān)控端點上添加定制化功能。
本文就是愿天堂沒有BUG給大家分享的內(nèi)容,大家有收獲的話可以分享下,想學習更多的話可以到微信公眾號里找我,我等你哦。
