1. 程式人生 > >Spring Boot: Actuator Endpoint

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框架下無法使用。


  1. Spring Boot Actuator Endpoint ↩︎