描述

Spring Boot 包含许多附加功能,可帮助您在将应用程序推送到生产环境时监控和管理应用程序。您可以选择使用 HTTP 端点或 JMX 来管理和监控您的应用程序。审计、健康和指标收集也可以自动应用于您的应用程序。

官方文档 : SpringBootActuator文档

启用

在pom中加入 依赖,那么就默认启用了actuator,进行健康检查的功能。

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

启动项目,如果看一下日志那么就表示配置成功了,接下来我们就来深入的了解 actuator模块

Root WebApplicationContext: initialization completed in 1767 ms
Exposing 13 endpoint(s) beneath base path '/actuator'

端点

Actuator 端点可让您监控应用程序并与之交互。Spring Boot 包含许多内置端点,并允许您添加自己的端点。例如,health端点提供基本的应用程序健康信息。

如下重要端点:

命令

描述

beans

显示应用程序中所有 Spring bean 的完整列表

caches

公开可用的缓存

conditions

显示对配置和自动配置类评估的条件以及它们匹配或不匹配的原因。

configprops

显示所有 的整理列表@ConfigurationProperties

health

显示应用程序运行状况信息。

info

显示任意应用程序信息。

loggers

显示和修改应用程序中记录器的配置。

mappings

显示所有@RequestMapping路径的整理列表。

threaddump

执行线程转储。

heapdump

返回hprof堆转储文件。需要一个 HotSpot JVM。

启用端点

management:
  endpoint:
    shutdown:
      enabled: true

使用 include 暴露断点 exclude 排除断点。

开发所有web 端点 排除 env,beans。

management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: "env,beans"

由于开放了所有端点,导致谁都可以访问,这是很不安全的,所有要加上安全来保护端点。

安全保护

加入 spring security 依赖做安全登录。

<!-- 增加安全保护 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>

yml文件配置:

spring:
  security:
    user:
      name: root
      password: root

登录的用户名和密码都是root,这里大家可以自行设置。

启动项目,再次访问: http://localhost:8080/actuator

java 健康检查设置多久合适 spring boot 健康检查_spring

输入配置的 用户名和密码即可访问端点。

CORS 跨域支持

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

自定义端点

/**
     * 自定义端点:
     * @return
     */
    @ReadOperation
    public CustomData getData() {
        return new CustomData("test", 5);
    }

自定义健康指标

/**
 * @Author qrn
 * @Title
 * @Date 2021/6/4 11:55
 * @time 11:55
 * 编写自定义健康指标
 *
 * DOWN 503
 * OUT_OF_SERVICE 503
 * UP 默认没有映射,所以 HTTP 状态是 200
 * UNKNOWN 默认没有映射,所以 HTTP 状态是 200
 *
 */
@Component
public class MyHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        int errorCode = check();
        if (errorCode != 0) {
            return Health.down().withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }

    private int check() {
        // perform some specific health check
        return 1;
    }

}

自定义服务端口

management:
  server:
    port: 8081

配置指定的SSL

server:
  port: 8443
  ssl:
    enabled: true
    key-store: "classpath:store.jks"
    key-password: secret
management:
  server:
    port: 8080
    ssl:
      enabled: false

以上就是完整的健康检查,项目的代码已经上传到 github上面。

实例代码在github上面需要的请自行拉取:spring-boot-integrate 然后后续会集成更多的模块进去,需要请点个star。后续会集成更多的接口实现,有需要的请保存。

如果这篇文章,有帮助到大家的,请给作者一个一键三连,谢谢