springboot之actuator

An actuator is a manufacturing term that refers to a mechanical device for moving or controlling something. Actuators can generate a large amount of motion from a small change.

用于监控并管理应用程序,提供了http和jmx两种访问方式,依赖的jar是spring-boot-starter-actuator。

endpoint的暴露配置

默认endpoint都是开启的,除了shutdown。可以通过以下配置开启某个endpoint。

management.endpoint.{id}.enabled=true

//开启shutdown endpoint
management.endpoint.shutdown.enabled=true

可以通过includeexclude属性来配置endpoint的暴露与否。

springboot之actuator_第1张图片
endpoint暴露配置.png

include配置暴露的endpoint,exclude指定不能暴露的endpoint。

如只暴露jmx的health和info endpoint,其它都关闭。

management.endpoints.jmx.exposure.include=health,info

指定除了env,beans endpoint,其它都暴露。

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans

在YAML格式下,星号比较特殊,必须加双引号。

management:
  endpoints:
    web:
      exposure:
        include: "*"

安全控制

如果endpoint对外暴露,建议使用spring security增加安全保护。

如指定针对actuator的所有端点,Role必须是ENDPOINT_ADMIN。

@Configuration(proxyBeanMethods = false)
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) ->
                requests.anyRequest().hasRole("ENDPOINT_ADMIN"));
        http.httpBasic();
    }

}

CORS支持

跨域资源共享( CORS )机制允许Web应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。

CORS默认是关闭的,如果开启https://example.com的GET和POST CORS支持,可以如下配置:

management.endpoints.web.cors.allowed-origins=https://example.com
management.endpoints.web.cors.allowed-methods=GET,POST

通过HTTP访问endpoint

默认path是/actuator/{id},可以通过以下配置进行调整,如指定成manage

management.endpoints.web.base-path=/manage
//指定成不同的端口
management.server.port=8081 

如果想关闭HTTP endpoints,有以下几种方式

management.server.port=-1

management.endpoints.web.exposure.exclude=*

你可能感兴趣的:(springboot之actuator)