Spring Boot 揭祕與實戰(九) 應用監控篇 - HTTP 應用監控

樑桂釗發表於2017-01-17

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

(完)

更多精彩文章,盡在「服務端思維」微信公眾號!

Spring Boot 揭祕與實戰(九) 應用監控篇 - HTTP 應用監控

相關文章