Spring Boot设置健康检查

DevOps JDK评论275字数 1647阅读5分29秒阅读模式

背景信息

         对于Spring Boot的应用,除了使用HTTP或TCP端口检测来进行应用健康检查之外,您也可以使用Actuator组件实现定制化健康检查。本文介绍如何通过Actuator组件为Spring Boot应用设置健康检查。Actuator组件是Spring Boot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator,您可以很方便地查看并统计应用系统的某些监控指标。您也可以通过Actuator组件自定义您的健康检查程序。更多信息,请参见Spring Boot Actuator官方文档

操作步骤

  • 在Maven中添加所需依赖
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 设置application.properties配置文件,显示健康检查详细信息
management.endpoints.web.base-path= /           # Actuator 2.0之前默认基础访问路径是"/"(则健康检查为“/health”),2.0及之后默认访问路径是"/actuator" (则健康检查为“/actuator/health”)。
management.endpoint.health.show-details=always  # 显示健康检查详细信息,默认为never,即不显示。
  • 您可以通过Actuator组件提供的自动配置的健康指示器或者自定义检查程序对应用进行检查
  • 通过自动配置的健康检查器。
  • Actuator有些自动配置加载的健康检查指示器(HealthIndicator),例如若应用中使用了Redis、MongoDB,那么RedisHealthIndicator以及MongoHealthIndicator就会被作为健康检查的一部分。更多关于自动加载的配置信息,请参见自动配置加载
management.health.defaults.enable=false   # 禁用所有默认健康检查指示器。  
management.health.mongo.enable=false      # 禁用MongoDB健康检查指示器。
  • 通过自定义检查程序。此时您可以通过/health/custom路径来单独获取这个健康指示器的结果。

    新建CustomHealthIndicator.java文件,输入代码,实现您业务中特定的检查内容。例如检查数据库连接是否正常,线程池状态等。示例代码如下所示:

@Component
public class CustomHealthIndicator extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
       # 实现您业务中特定的检查内容。
       if (checkSomething()) {  
           builder.up().withDetail("Item", "xxx").withDetail("error", "null");
       } else {
           builder.down().withDetail("Item", "xxx").withDetail("error", "xxxErrorCode");
        }
    }
}
  • 设置完成后,运行应用,进行健康检查。
curl 127.0.0.21:8080/health/custom  # custom为健康检查指示器类名前缀,请以您定义的类名为准。
  • 返回示例如下:
{"status":"UP","details":{"custom":{"status":"UP","details":{"Item","xxx","error","null"}}}}

状态说明如下:

  • UP:HTTP状态码为200,说明健康检查成功。

  • DOWN:HTTP状态码为503,说明健康检查失败。

继续阅读
历史上的今天
7 月
10
DevOps
  • 本文由 发表于 2024年7月10日 17:30:26
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
yum安装JDK17 JDK

yum安装JDK17

安装 [root@test-service-1 ~]# yum install java-17-openjdk.x86_64 -y [root@test-service-1 ~]# vim /...
二进制安装JAVA13 JDK

二进制安装JAVA13

安装JAVA 下载java 下载地址https://www.oracle.com/java/technologies/javase/jdk13-archive-downloads.ht...
二进制安装JDK11 JDK

二进制安装JDK11

下载jdk [root@i-obqe21ce ~]# wget https://repo.huaweicloud.com/openjdk/11.0.2/openjdk-11.0.2_linux-...
评论  0  访客  0

发表评论