你应该知道的Spring Boot Actuator


1:简介

2:基于Maven的项目:

3.端点

3.1 端点简介

3.2 端点开启

3.3 默认暴露的

3.4控制暴露的端点:

4: 保护端点

4.1 加入POM 依赖

4.2 配置用户名密码

配置权限:

4.3 通过配置的方式允许所有匿名用户访问

4:健康信息与自定义健康状况:

4.1 健康信息显示设置

4.2 spring boot 自动配置的健康指标

4.3自定义健康状况

5: 自定义应用程序信息

6: 自定义管理端点路径

1:简介

将应用程序投入生产时帮助您监视和管理应用程序。您可以选择使用HTTP端点或JMX(Java Management Extensions)管理和监视应用程序。审核,运行状况和指标收集也可以自动应用于您的应用程序。

目的: 实现对服务的监控与管理

DevOps: 是开发 与 运维的总称

2:基于Maven的项目:

<code><dependencies> <dependency> <groupid>org.springframework.boot/<groupid> <artifactid>spring-boot-starter-actuator/<artifactid> /<dependency>/<dependencies>/<code>
<code>dependencies { compile("org.springframework.boot:spring-boot-starter-actuator")}/<code>

3.端点

health端点映射 访问: http://localhost:8888/actuator/health

3.1 端点简介

如果您的应用程序是Web应用程序(Spring MVC,Spring WebFlux或Jersey),则可以使用以下附加端点:


你应该知道的Spring Boot Actuator


3.2 端点开启

除shutdown端点均处于启用状态。要配置端点的启用,请使用其management.endpoint..enabled属性。以下示例启用shutdown端点:

management.endpoint.shutdown.enabled=true

management.endpoints.enabled-by-default=false # 禁用所有端点management.endpoint.info.enabled=true #开启info端点

3.3 默认暴露的


你应该知道的Spring Boot Actuator

3.4控制暴露的端点:

默认暴露 health info 端点

# 公开端点

management.endpoints.jmx.exposure.include=health,info# 闭塞端点management.endpoints.web.exposure.include=* // 暴露所有端点management.endpoints.web.exposure.exclude=env,beans //开放自定义端点


4: 保护端点

4.1 加入POM 依赖

<code><dependencies> <dependency> <groupid>org.springframework.boot/<groupid> <artifactid>spring-boot-starter-actuator/<artifactid> /<dependency>/<dependencies>/<code>

4.2 配置用户名密码

<code>dependencies { compile("org.springframework.boot:spring-boot-starter-actuator")}/<code>

配置权限:

继承 WebSecurityConfigurerAdapter

<code>@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();    }}/<code>

然后配置 ENDPOINT_ADMIN

<code>spring.security.user.roles=ENDPOINT_ADMINmanagement.endpoints.web.exposure.include=*spring.security.user.name=rootspring.security.user.password=root/<code>

4.3 通过配置的方式允许所有匿名用户访问

该配置允许未经身份验证的端点访问

<code>该配置允许未经身份验证的端点访问@Configuration(proxyBeanMethods = false)public class ActuatorSecurity extends WebSecurityConfigurerAdapter {    @Override    protected void configure(HttpSecurity http) throws Exception {        http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) ->            requests.anyRequest().permitAll());    }}/<code>


4:健康信息与自定义健康状况:

4.1 健康信息显示设置

<code>management.endpoint.health.show-details=always // 显示详细信息management.endpoint.health.show-details=when_authorized // 授权后才能访问management.endpoint.health.show-details=never // 不显示/<code>

4.2 spring boot 自动配置的健康指标

HealthIndicators在适当的情况下,Spring Boot会自动配置以下内容:


你应该知道的Spring Boot Actuator


4.2.1: 禁用它们。

# 禁用全部management.health.defaults.enabled=false

# 禁用rabbitmanagement.health.rabbit.enabled=false


4.3自定义健康状况

注册实现该HealthIndicator接口的Spring bean 。您需要提供该health()方法的实现并返回Health响应

<code><dependency>     <groupid>org.springframework.boot/<groupid>     <artifactid>spring-boot-starter-security/<artifactid> /<dependency>/<code>


下表显示了内置状态的默认状态映射:


你应该知道的Spring Boot Actuator


5: 自定义应用程序信息

<code># 通过info 关键字定义 info.* = xxxinfo.helloworld=helloworldinfo.jdk.version=1.8返回:{"helloworld":"helloworld","jdk":{"version":"1.8"}}/<code>


6: 自定义管理端点路径

<code>management.endpoints.web.base-path=/manager# 原地址http://localhost:8080/actuator/health# 改变后地址http://localhost:8080/manager/health/<code>


分享到:


相關文章: