Spring Boot: Actuator Endpoint
2018.11.14
文章目錄
前言
翻譯自Spring Boot官方文件——Spring Boot Actuator Endpoint1。
介紹
Spring Boot的Actuator執行器endpoints端點,可以用於應用程式的監控和互動。Spring Boot內建了許多端點,使用者也可以自定義端點。比如health
每個端點都可以單獨地開啟和關閉。若要遠端訪問端點,才需要開通JMX或HTTP訪問。HTTP的訪問方式,就是訪問由/actuator/<endpoint-id>
拼接成的URL。如health
端點的URL為/actuator/health
。
技術透明( technology-agnostic)的端點
ID | 說明 | 預設是否開啟 |
---|---|---|
beans | 整理並展示應用中所有的Spring beans列表 | 是 |
mappings | 整理並展示應用中所有@RequestMappings |
是 |
scheduledtasks | 展示應用中所有排程任務 | 是 |
sessions | 支援使用者會話的回收和刪除,但不支援Spring reactive web應用 | 是 |
shutdown | 支援應用優雅退出 | 否 |
如果是Web應用(Spring MVC、Spring WebFlux等),則還有如下端點:
ID | 說明 | 是否預設開啟 |
---|---|---|
logfile | 返回logfile檔案內容(需要配置logging.file或logging.path) | 是 |
端點使用
端點開啟
預設配置下,除了shutdown
外所有端點都是開啟的。開啟一個端點,使用端點的management.endpoint.<id>.enabled
屬性。
如果希望端點的開啟是“選擇進入”(opt-in)而非“選擇退出”(opt-out),那麼可以設定management.endpoints.enabled-by-default
屬性為false,所有的端點就會預設關閉。
端點公開方式
端點可能包含敏感資訊,應謹慎選擇端點公開(Exposure)方式。
ID | JMX | Web |
---|---|---|
beans | 是 | 否 |
mappings | 是 | 否 |
scheduledtasks | 是 | 否 |
sessions | 是 | 否 |
shutdown | 是 | 否 |
logfile | N/A | 否 |
可修改配置修改端點的公開方式。
屬性 | 預設值 |
---|---|
management.endpoints.jmx.exposure.exclude |
|
management.endpoints.jmx.exposure.include |
* |
management.endpoints.web.exposure.exclude |
|
management.endpoints.web.exposure.include |
info,health |
加固HTTP端點訪問
對於包含敏感資訊的端點,可以通過Spring Security實現授權訪問。
自定義端點
新增一個@Bean
並且附上@Endpoint
註解,bean裡任何方法,只要帶@ReadOperation
、@WriteOperation
或@DeleteOperation
註解的都會自動地通過JMX公開,或者通過HTTP公開(前提它是Web應用)。還可以通過@JmxEndpoint
或@WebEndpoint
直接指明公開方式。如果是特定Web框架下的應用,還可以直接實現Servlet或Spring @Controller
或@RestController
,這種做法的代價就是不能通過JMX公開以及在別的Web框架下無法使用。