Spring Boot 提供執行時的應用監控和管理功能。本文,我們通過 HTTP 實現對應用的監控和管理。
部落格地址:blog.720ui.com/
快速開始
Spring Boot 監控核心是 spring-boot-starter-actuator 依賴,增加依賴後, Spring Boot 會預設配置一些通用的監控,比如 jvm 監控、類載入、健康監控等。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>複製程式碼
如果,使用 HTTP 呼叫的方式,還需要 spring-boot-starter-web 依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>複製程式碼
監控和管理端點
以最新的 Spring Boot 的版本 1.4.3 為準,列出目前支援的監控。
HTTP方法 | 路徑 | 描述 |
---|---|---|
GET | /actuator | 檢視所有EndPoint的列表,需要加入 Spring HATEOAS 支援 |
GET | /autoconfig | 檢視應用的自動配置的使用情況 |
GET | /beans | 檢視應用的所有Bean的資訊 |
GET | /configprops | 檢視應用的所有配置屬性 |
GET | /dump | 檢視應用的執行緒狀態資訊 |
GET | /env | 檢視應用的所有環境資訊 |
GET | /flyway | 檢視已經有遷徙路線資料庫遷移 |
GET | /health | 檢視應用健康指標 |
GET | /info | 檢視應用資訊 |
GET | /liquibase | 檢視已經有liquibase資料庫遷移應用 |
GET | /mappings | 檢視所有url對映 |
GET | /metrics | 檢視應用基本指標 |
POST | /shutdown | 允許優雅關閉當前應用(預設情況下不啟用) |
GET | /trace | 檢視基本的HTTP跟蹤資訊 |
GET | /docs | 檢視文件,需要依賴 spring-boot-actuator-docs |
GET | /heapdump | 返回一個gzip壓縮 hprof 堆轉儲檔案 |
GET | /jolokia | 暴露JMX bean(當jolokia路徑) |
GET | /logfile | 檢視日誌檔案的內容(如果logging.file或logging.path屬性已設定)。支援使用對HTTP範圍標頭到日誌檔案的部分恢復內容。 |
health 應用健康指標
我們可以通過 http://localhost:8080/health , 統計系統的狀況,預設裡面目前只有系統狀況和磁碟狀況。這些檢測器都通過 HealthIndicator 介面實現,下篇文章,我會講解到通過 HealthIndicator 介面實現自定義健康檢測。
info 檢視應用資訊
預設情況下,只會返回一個空的 json 內容。我們可以在 application.properties 配置檔案中通過 info 字首來設定一些屬性。
info.author.realname=樑桂釗
info.author.nickname=LiangGzone複製程式碼
我們也可以在 application.yml 配置檔案中設定一些屬性。
info.author:
email: lianggzone@163.com
blog: http://blog.720ui.com複製程式碼
metrics 應用基本指標
我們可以通過 http://localhost:8080/metrics, 獲取當前應用的各類重要度量指標,比如:記憶體資訊、執行緒資訊、垃圾回收資訊等。
我們還可以通過 /metrics/{name} 介面來更細粒度的獲取度量資訊,比如我們可以通過訪問 /metrics/mem.free 來獲取當前可用記憶體數量。
trace 基本的HTTP跟蹤資訊
檢視基本的 HTTP 跟蹤資訊。預設情況下,跟蹤資訊的儲存採用 org.springframework.boot.actuate.trace.InMemoryTraceRepository 實現的記憶體方式,始終保留最近的 100 條請求記錄。
shutdown關閉當前應用
shutdown 端點預設是不啟用的,我們可以在 application.properties 中開啟。此外,shutdown 端點不支援 GET 請求,我們需要通過 POST 方法訪問。
endpoints.shutdown.enabled=true複製程式碼
定製端點
端點可以在 Spring Boot 配置檔案中進行定製。例如,上面,我們開啟 shutdown 端點。
endpoints.shutdown.enabled=true複製程式碼
端點的字首是,endpoints + “.”+ 端點名。
預設的端點訪問路徑是根目錄下,我們可以通過修改配置,進行定製。
management.context-path=/manage複製程式碼
此時,我們的訪問地址就變成: http://localhost:8080/manage/info
此外,預設監控的介面埠和業務的埠是一致的,我們出於安全性考慮,可以改變端點的訪問的埠。
management.port=9090複製程式碼
我們甚至可以關閉 http 端點。
management.port=-1複製程式碼
原始碼
相關示例完整程式碼: springboot-action
(完)
更多精彩文章,盡在「服務端思維」微信公眾號!