Spring Boot Actuator: Production-ready Features
1. 添加依賴
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
</dependencies>
2. 端點
端點 | 描述 | 默認啟用 |
---|---|---|
health | 應用健康狀態 | 是 |
info | 應用信息 | 是 |
metrics | 應用度量指標 | 否 |
beans | 顯示所有Spring Beans | 否 |
mappings | 顯示所有@RequestMapping路徑 | 否 |
env | 顯示環境變量 | 否 |
shutdown | 優雅關閉應用 | 否 |
2.1. 啟用端點
默認情況下,除 之外的所有終結點都處于啟用狀態。若要配置終結點的啟用,請使用其屬性。以下示例啟用終結點:
management.endpoint.shutdown.enabled=true
如果您希望啟用端點是選擇加入而不是選擇退出,請將屬性設置為 ,并使用單個端點屬性重新選擇加入。以下示例啟用端點并禁用所有其他端點:
management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true
2.2. 公開端點
由于端點可能包含敏感信息,因此應仔細考慮何時公開它們。 下表顯示了內置終結點的默認公開:
ID | JMX | Web |
---|---|---|
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | Yes |
| N/A | No |
| Yes | No |
| Yes | Yes |
| Yes | No |
| N/A | No |
| N/A | No |
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | No |
| N/A | No |
| Yes | No |
| Yes | No |
| Yes | No |
| Yes | No |
若要更改公開的終結點,請使用以下特定于技術的 和 屬性:include?
exclude
Property | Default |
---|---|
| |
|
|
| |
|
|
例如,要通過 HTTP 公開除 env和endpoints 之外的所有內容
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
*
在 YAML 中具有特殊含義,因此如果要包含(或排除)所有端點,請務必添加引號,如以下示例所示:
management:endpoints:web:exposure:include: "*"
2.3. 保護 HTTP 端點
如果您希望為 HTTP 端點配置自定義安全性,例如,僅允許具有特定角色的用戶訪問它們,Spring Boot 提供了一些可以與 Spring Security 結合使用的方便對象。
@Configuration(proxyBeanMethods = false)
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) ->requests.anyRequest().hasRole("ENDPOINT_ADMIN"));http.httpBasic();}}
2.4. 配置端點
端點會自動緩存對不采用任何參數的讀取作的響應。 若要配置端點緩存響應的時間量,請使用其屬性。 以下示例將端點緩存的生存時間設置為 10 秒:
management.endpoint.beans.cache.time-to-live=10s
3. 通過 HTTP 進行監控和管理
? 3.1. 自定義管理端點路徑
management.endpoints.web.base-path=/manage
3.2. 自定義管理服務器端口
management.server.port=8081
3.4. 自定義管理服務器地址
以下示例不允許遠程管理連接
management.server.port=8081
management.server.address=127.0.0.1
3.5. 禁用 HTTP 端點
如果您不想通過 HTTP 公開端點,可以將管理端口設置為 ,如以下示例所示:-1
management.server.port=-1
這也可以使用該屬性來實現,如以下示例所示:management.endpoints.web.exposure.exclude
management.endpoints.web.exposure.exclude=*
示例:
1.默認情況

2.只開啟?
/actuator/beans 和 /actuator/mappings 這兩個?api
management:endpoints:web:exposure:include: beans,mappings
3.
3.只關閉
# 開啟所有的 api(但不包含 shutdown) management.endpoints.web.exposure.include=* # 關閉/actuator/beans 這個 api management.endpoints.web.exposure.exclude=beans
management:endpoints:web:exposure:include: '*'exclude: beans
4.禁用
management:endpoints:web:exposure:exclude: '*'
management:server:port: -1