| Spring Boot 包含多个附加功能,以帮助你监控和管理应用程序,当你将其推到生产时。你可以选择使用 HTTP 节点或 JMX 管理和监控应用程序。审计、健康和度量收集也可以自动应用到你的应用程序中。 
                             若要将执行器添加到基于 Maven 的项目中,请添加以下 ‘Starter’ 依赖: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> 对于 Gradle,使用以下声明: dependencies {
	compile("org.springframework.boot:spring-boot-starter-actuator")
}
                            执行器节点让你监控和与应用程序交互。Spring Boot 包含许多内置节点,并允许你添加自己的节点。例如, 
                            每个节点可以被启用和禁用。这控制节点是否被创建,它的 bean 是否存在于应用程序上下文中。为了远程访问,节点也必须通过 JMX 或 HTTP 公开。大多数应用程序选择 HTTP,其中节点的 ID 以  下列技术不可知论的节点是可用的: 
 如果你的应用程序是 web 应用程序(Spring MVC、Spring WebFlux 或 Jersey),则可以使用以下附加节点: 
 要了解更多关于执行器的节点及其请求和响应格式的信息,请参考单独的 API 文档( HTML 或 PDF)。 
                                默认情况下,启用除  management.endpoint.shutdown.enabled=true
                                如果希望节点启用是 opt-in 而不是 opt-out,请将  management.endpoints.enabled-by-default=false management.endpoint.info.enabled=true 
 由于节点可能包含敏感信息,因此应该仔细考虑何时公开它们。下表展示内置节点的默认暴露: 
 
                                要更改暴露哪些节点,请使用以下特定技术的  
 
                                 
                                例如,要停止通过 JMX 暴露所有节点,并且只暴露  management.endpoints.jmx.exposure.include=health,info
                                 management.endpoints.web.exposure.include=* management.endpoints.web.exposure.exclude=env,beans 
 
 
 
                                你应该像保护其它敏感 URL 一样,注意保护 HTTP 节点。如果存在 Spring Security,则默认情况下使用 Spring Security 的内容协商策略来保护节点。例如,如果希望为 HTTP 节点配置自定义安全性,则只允许具有特定角色的用户访问它们,Spring Boot 提供了一些方便的  典型的 Spring Security 配置可能看起来像下面的示例: @Configuration public class ActuatorSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests() .anyRequest().hasRole("ENDPOINT_ADMIN") .and() .httpBasic(); } } 
                                前面的示例使用  
                                如果你在防火墙后部署应用程序,那么你可能更希望无需身份验证即可访问所有执行器节点。你可以通过改变  application.properties. management.endpoints.web.exposure.include=*此外,如果存在 Spring Security,则需要添加允许对节点进行未经身份验证访问的自定义安全配置,如下例所示: @Configuration public class ActuatorSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests() .anyRequest().permitAll(); } } 
                                节点自动缓存对不接受任何参数的读取操作的响应。要配置节点缓存响应的时间量,可以使用它的  application.properties. management.endpoint.beans.cache.time-to-live=10s
 
 
                                在发现页中添加指向所有节点的链接。默认情况下,发现页可在  
                                当配置自定义管理上下文路径时,发现页自动从  
                                默认情况下,节点使用的 ID 在  
                                下面的示例将  application.properties. management.endpoints.web.base-path=/ management.endpoints.web.path-mapping.health=healthcheck 跨域资源共享(CORS)是一个 W3C 规范,它允许你以灵活的方式指定授权的跨域请求的种类。如果使用 Spring MVC 或 Spring WebFlux,则可以将执行器的 web 节点配置为支持这样的场景。 
                                跨域支持在默认情况下是禁用的,并且仅在设置了  management.endpoints.web.cors.allowed-origins=http://example.com management.endpoints.web.cors.allowed-methods=GET,POST 
 
                                如果添加了  
                                还可以使用  
                                可以使用  
                                最后,如果需要访问特定 web 框架的功能,则可以实现 Servlet 或 Spring  
                                    节点上的操作通过它们的参数接收输入。当通过 web 暴露时,这些参数的值取自 URL 的查询参数和 JSON 请求主体。当通过 JMX 暴露时,参数被映射到 MBean 操作的参数。默认情况下需要参数,可以通过  
 
                                     
                                        谓词的路径由节点 ID 和 Web 暴露节点的基路径决定。默认的基本路径是  
                                        通过使用  谓词的 HTTP 方法由操作类型决定,如下表所示: 
 
                                        对于使用请求体的  
                                        谓词的提供者子句可以由  
                                        如果操作方法返回  节点操作的默认响应状态取决于操作类型(读、写或删除),以及操作返回的内容(如果有的话)。 
                                         
                                        如果  如果调用操作时没有必需的参数,或者参数不能转换为所需的类型,则不会调用操作方法,响应状态将为 400(Bad Request)。 
                                        HTTP 范围请求可用于请求 HTTP 资源的一部分。当使用 Spring MV C或 Spring Web Flux 时,返回  
 
                                     
                                你可以使用健康信息来检查运行的应用程序状态。当生产系统下降时,它经常被监控软件用来提醒某人。健康节点暴露的信息取决于  
 
                                默认值为  
 
                                健康信息是从  
 
                                    Spring Boot 在适时自动配置下列  
 
 
                                    为了提供自定义的健康信息,可以注册实现  import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.stereotype.Component; @Component public class MyHealthIndicator implements HealthIndicator { @Override public Health health() { int errorCode = check(); // perform some specific health check if (errorCode != 0) { return Health.down().withDetail("Error Code", errorCode).build(); } return Health.up().build(); } } 
 
                                    除了 Spring Boot 的预定义  
                                    例如,假设在你的  management.health.status.order=FATAL, DOWN, OUT_OF_SERVICE, UNKNOWN, UP
                                    响应中的 HTTP 状态代码反映总体健康状态(例如, management.health.status.http-mapping.FATAL=503
 下表展示内置状态的默认状态映射: 
 
                                    对于响应式应用程序,例如使用 Spring WebFlux 的应用程序, 
 
                                    为了从响应式 API 提供定制的健康信息,你可以注册实现  @Component public class MyReactiveHealthIndicator implements ReactiveHealthIndicator { @Override public Mono<Health> health() { return doHealthCheck() //perform some specific health check that returns a Mono<Health> .onErrorResume(ex -> Mono.just(new Health.Builder().down(ex).build()))); } } 
 
                                    下列反应性健康指标在适当的时候由弹簧引导自动配置:
                                    Spring Boot 在适当的时候自动配下列  
 
 
                                应用程序信息暴露从  
                                    在适当的时候,Spring Boot 自动配置下列  
 
 
                                    通过设置  info.app.encoding=UTF-8 info.app.java.source=1.8 info.app.java.target=1.8 
 
                                     
 
                                    如果希望显示完整的 git 信息(即, management.info.git.mode=full
                                    如果  
 
                                    为了提供自定义的应用程序信息,你可以注册实现  
                                    下面的示例贡献了一个具有单个值的  import java.util.Collections; import org.springframework.boot.actuate.info.Info; import org.springframework.boot.actuate.info.InfoContributor; import org.springframework.stereotype.Component; @Component public class ExampleInfoContributor implements InfoContributor { @Override public void contribute(Info.Builder builder) { builder.withDetail("example", Collections.singletonMap("key", "value")); } } 
                                    如果你到达了  { "example": { "key" : "value" } } |