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 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章