Spring Boot 版本:3.3.2
Actuator 是 Spring Boot 所提供的監控功能,可以用來查看當前的 Spring Boot 程式運行的情況,像是可以查看當前運行的健康指標、查看 Spring Boot 所創建的 beans、以及獲取當前的 applicaiton.properties 的屬性的值。
如果要使用 SpringBoot Actuator 提供的監控功能,需要先加入相關的 maven dependency。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
只要加上了這個 maven dependency,Spring Boot 在運行時,就會自動開啟 /actuator/health
這個 api 給我們使用,因此當我們去請求
http://localhost:8080/actuator/health
這個 api 時,就可以查看當前 Spring Boot 程式的運行狀況。
像是下圖中就顯示,當前的 Spring Boot 運行狀態為 UP,UP 即為正常運行的意思。
除了上述自動開啟的 /actuator/health
api 之外,Actuator 其實還提供更多樣化的 api,讓我們可以從不同的角度,去監控 Spring Boot 程式(不過因為安全因素考量,大部分的 api 都需要另外設定才能夠開啟,詳細的設定方式在下方介紹)。
因為監控 api 眾多,以下僅列出常用的監控 api,所有監控 api 可查閱 Spring 官方文件
HTTP 方法 | Endpoint | 描述 |
---|---|---|
GET | /actuator | 查看有哪些監控的 api 有開放使用 |
GET | /actuator/env | 查看此 Spring Boot 程式載入了哪些 application.properties 的值(不過為了保護安全資訊,所以會自動碼掉帶有 key、password、secret 等關鍵字的 properties 的值) |
GET | /actuator/flyway | 查看 flyway DB 的 migration 資訊 |
GET | /actuator/health | 查看當前 Spring Boot 程式的運行健康指標,UP 即為正常運行 |
GET | /actuator/heapdump | 取得 JVM 當下的 heap dump,會下載一個檔案 |
GET | /actuator/metrics | 查看有哪些指標的數據可以看(ex: jvm.memory.max、system.cpu.usage),可再使用 /actuator/metrics/{metric.name} 分別查看各個指標的詳細資訊 |
GET | /actuator/scheduledtasks | 查看定時任務的資訊 |
POST | /actuator/shutdown | 唯一一個需要 POST 請求的 api,關閉這個 Spring Boot 程式 |
因為安全的因素,所以 Actuator 預設只會開啟 /actuator/health
這個監控的 api 讓我們使用,如果要開放其他的 api 的話,需要額外在 application.properties 中進行設定
# 可以這樣寫,就會開啟所有的 api(但不包含 shutdown)
management.endpoints.web.exposure.include=*
# 也可以這樣寫,就只會開啟指定的 api,像是此處就只會再額外開啟 /actuator/beans 和 /actuator/mappings 這兩個 api
management.endpoints.web.exposure.include=beans,mappings
# exclude 可以用來關閉某些 api
# exclude 通常會和 include 一起搭配使用,就是先去 include 全部進來,然後再 exclude 想要關閉的部分
# 像是此處就是關閉 /actuator/info 這個 api
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=info
# 如果要開啟 /actuator/shutdown api 的話,需要額外再加這一行
management.endpoint.shutdown.enabled=true
除此之外,也可以改變 /actuator
的路徑,自定義成自己想要的 url 路徑
# 這樣寫的話,原本內建的 /actuator/xxx 的 url 路徑,就都會變成 /my/xxx
# 這樣做可以防止 Actuator 的監控 api 路徑被其他人猜到
management.endpoints.web.base-path=/my
本篇文章介紹了 Spring Boot Actuator 的用法,以及列出的常見好用的監控 api 有哪些,提供給大家參考。
如果你對後端技術有興趣的話,也歡迎免費訂閱 《古古的後端筆記》電子報 ,每週二為你送上一篇後端技術分享,那我們就下一篇文章見啦!