文章目錄
Spring Boot 提供運行時的應用監控和管理功能。本文,我們通過 HTTP 實現對應用的監控和管理。
快速開始
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
(完)
