Spring Boot參考教程(三)內部應用監控(Actuator)


3. 內部應用監控(Actuator)

如上2.4中所述,傳統spring工程中工程的初始化過程,bean的生命周期,應用的內部健康情況均無法監控,為了解決這個問題,spring boot提供了Actuator執行器。

下面具體介紹什么是Actuator,以及怎么使用。

1 啟用Actuator

 

3.1.1. 加入依賴

 

加入如下Starter pom:

 

       <dependency>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-actuator</artifactId>

       </dependency>

 

3.1.2.配置

 

application.properties配置文件中加入配置:

management.security.enabled=false

 

注:因Actuator會將應用內部信息的端點暴露出來,這樣就會產生安全問題,

Spring Boot默認將Springsecurity加入了工程,因此默認此配置是true,禁用安全以便測試。

 

3.1.3.啟動

直接Run as JavaApplication啟動即可。

 

3.1.4 測試

測試結果如上

直接訪問http://localhost:8080/beans即可。

返回的json文檔為應用內上下文所有的Bean以及相互關系等。

 

2 Endpoints(端點)

Spring Boot Actuator的關鍵特性是在應用程序里提供眾多Web端點,通過它們了解應用程序運行時的內部狀況。有了Actuator,你可以知道Bean在Spring應用程序上下文里是如何組裝在一起的,掌握應用程序可以獲取的環境屬性信息,獲取運行時度量信息的快照等等。

Actuator提供了13個端點:

HTTP方法 路 徑 描 述

GET/autoconfig提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過

GET/configprops描述配置屬性(包含默認值)如何注入Bean

GET/beans描述應用程序上下文里全部的Bean,以及它們的關系

GET/dump獲取線程活動的快照

GET/env獲取全部環境屬性

GET/env/{name}根據名稱獲取特定的環境屬性值

GET/health報告應用程序的健康指標,這些值由HealthIndicator的實現類提供

GET/info獲取應用程序的定制信息,這些信息由info打頭的屬性提供

GET/mappings描述全部的URI路徑,以及它們和控制器(包含Actuator端點)的映射關系

GET/metrics報告各種應用程序度量信息,比如內存用量和HTTP請求計數

GET/metrics/{name}報告指定名稱的應用程序度量值

POST/shutdown關閉應用程序,要求endpoints.shutdown.enabled設置為true

GET/trace提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等)

具體每一個端點的詳細情況請閱讀《Spring Boot實戰》—丁雪豐 第七章 深入Actuator。

筆者提供電子版書籍,在此不再贅述。本章筆者着重介紹如何配置使用Actuator。

 

3 配置使用

關於Actuator的配置項,可查看Spring官網Spring Boot ReferenceGuide 中Commonapplication properties章節。

3.1 啟用禁用端點

雖然Actuator的端點都很有用,但你不一定需要全部這些端點。默認情況下,所有端點(除

/shutdown)都啟用。將endpoints.endpoint-id.enabled設置為false,即可禁用端點,將endpoints.endpoint-id.enabled設置為true,即可啟動端點。

測試禁用端點:修改配置文件,加入endpoints.beans.enabled=false。啟動后訪問:

3.2 修改端點ID

如果想修改端點的固定id為定制id,加入配置:endpoints.*.id=newId即可。

測試:配置文件中加入endpoints.beans.id=springbeans啟動后訪問:

3.3 通過JMX監控應用

 

Actuator還把它的端點以MBean的方式發布了出來,可以通過JMX來查看和管理。Actuator的端點都發布在org.springframework.boot域下。使用jcnsole.exe查看如下:

3.4 添加自定義度量信息

/metrics端點獲得運行中應用程序的內部度量信息,包括內存、垃圾回收和線程信息等,如果還想定義自己的度量,方式如下:

Spring提供如下兩個接口及其用途:

CounterService這個接口里定義了三個方法,分別用來增加、減少或重置特定名稱的度量值,代碼如下:

packageorg.springframework.boot.actuate.metrics;

publicinterface CounterService {

voidincrement(String metricName);

voiddecrement(String metricName);

voidreset(String metricName);

}

GaugeService接口與CounterService類似,能將某個值記錄到特定名稱的度量值里。

packageorg.springframework.boot.actuate.metrics;

publicinterface GaugeService {

voidsubmit(String metricName, double value);

}

Spring Boot已經提供了兩者的實現。我們所要做的就是把它們的實例注入所需的Bean,在適當的時候調用其中的方法,更新想要的度量值即可。

 

編寫代碼如下:

l 啟動測試

 

另:關於Bean的注入可以使用另外一種方式:

 

關於Actuator還有更多的使用方式,如添加自定義跟蹤倉庫,插入自定義健康指標等。

筆者不在演示,如有興趣,可參考《Spring Boot實戰》。

3.5 更改端點路徑

 

實際應用中為了將暴露的端點與應用的業務接口區分開,或者便於進行安全控制,以及便於根據端點深入開發使用監控信息,可能需要將暴露的端點進行分組。

在配置文件中加入配置:

management.context-path=/endpoints

啟動測試:

3.6 端點保護

3.3.6.1使用SpringSecurity配置項

 

應用的安全機制,我們可以使用Spring Security,Spring Security是針對整個應用的,使用后訪問應用,會彈出HTTP基礎身份驗證對話框。

l 加入依賴

       <dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-security</artifactId>

       </dependency>

l 加入配置

security.user.name=admin

security.user.password=admin

management.security.roles=SUPERUSER

l 啟動測試

輸入配置密碼即可,一般開發中不會使用配置文件進行應用權限的管理,而是會結合數據庫或LDAP使用。

 

3.3.6.2自定義安全配置

 

我們可以使用自定義安全配置覆蓋自動配置的選項,此處不在詳細介紹,后續章節將詳細價紹SpringBoot集成Spring Security的具體使用。

 

 

<實例代碼>

Github:https://github.com/chunyuding/SpringBoot-Demo

https://github.com/chunyuding/SpringBoot-Demo.git

碼雲:https://gitee.com/dingchunyu/SpringBoot-Demo

      https://gitee.com/dingchunyu/SpringBoot-Demo.git

 

<推薦書籍>

 百度雲:http://pan.baidu.com/s/1qYA0Nxi

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM