SpringBoot健康检查机制讲解与实现

目录

前言

什么是Spring Boot健康检查

如何实现Spring Boot健康检查

通过官方模块Spring Boot Actuator

什么是Spring Boot Actuator

快速入门Spring Boot Actuator

引入依赖

添加.yml文件配置

运行项目访问健康检查地址

重要端点解析

/health端点

注意

/loggers端点

/info端点

/httptrace

/threaddump端点

/metrics端点

/beans端点

总结


前言

官方介绍文档:Production-ready Features :: Spring Boot

详细介绍文档https://docs.spring.io/spring-boot/docs/current/actuator-api/htmlsingle/

中文版(非官方) Spring Boot Actuator - spring 中文网 (springdoc.cn)

什么是Spring Boot健康检查

Spring Boot 健康检查(Health Check)是 Spring Boot Actuator 模块提供的一种功能,用于监控和管理应用程序的运行状况。它通过实施 HealthIndicator 接口或通过集成的监控工具来定期检查应用程序的各个组件(如数据库连接、缓存、消息队列等)的健康状况。健康检查的目的是提供一个快速而简便的方法来判断应用程序是否运行正常,以及识别可能影响应用程序稳定性和性能的问题。

如何实现Spring Boot健康检查

通过官方模块Spring Boot Actuator

什么是Spring Boot Actuator

从本质上讲,Actuator 为应用带来了生产就绪的功能。
有了 Actuator 后,监控应用程序、收集指标、了解流量或数据库状态就变得易如反掌。
这个库的主要好处是,可以获得生产级工具,而无需自己实际实现这些功能。
Actuator 主要公开应用的运行信息 - 健康状况、指标、信息、转储(dump)、环境等。它使用 HTTP 端点或 JMX Bean 与客户端进行交互。
一旦在 classpath 中添加了该依赖,多个端点就已经开箱即用。与大多数 Spring 模块一样,可以通过多种方式轻松配置或扩展它。

快速入门Spring Boot Actuator

引入依赖
    1. 在 Spring Boot 项目中添加 spring-boot-actuator 依赖,以启用 Spring Boot Actuator。

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
该依赖的版本号已经在 spring-boot-starter-parent 中声明了,所以只要你继承了 Parent 项目,不需要手动声明版本号。
添加.yml文件配置
management:
  endpoints:
    web:
      exposure:
        include: '*'
  info:
    env:
      enabled: true

说明:在yml文件中的写法即为上述,include:'*’为打开所有端点,或者只暴露部分端点,如果指定多个端点,用","分开

application.properties 文件中的写法如下

//打开所有的监控点
management.endpoints.web.exposure.include=*

//也可以选择打开部分,“*” 代表暴露所有的端点,如果指定多个端点,用","分开
management.endpoints.web.exposure.exclude=beans,trace

//Actuator 默认所有的监控点路径都在/actuator/*,当然如果有需要这个路径也支持定制。
management.endpoints.web.base-path=/minitor

//也可以单独设置其端口:
//修改默认的端口,如果不修改,和项目端口一样
management.server.port=45679
运行项目访问健康检查地址
 http://localhost:8080/actuator

上述为一般情况或者通用

http://ip:port/xxx/actuator/health

其中XXX为yml文件中定义的context-path

访问后由于Spring Boot 添加了一个发现端点,可返回所有可用 Actuator 端点的链接。这有助于发现 Actuator 端点及其相应的 URL。

默认情况下,可通过 /actuator 端点访问该发现端点,向这个 URL 发送 GET 请求,它就会返回各个端点的 Actuator 链接

例如内容如下:

{
  "_links": {
    "self": {
      "href": "http://localhost:8080/actuator",
      "templated": false
    },
    "features-arg0": {
      "href": "http://localhost:8080/actuator/features/{arg0}",
      "templated": true
    },
    "features": {
      "href": "http://localhost:8080/actuator/features",
      "templated": false
    },
    "beans": {
      "href": "http://localhost:8080/actuator/beans",
      "templated": false
    },
    "caches-cache": {
      "href": "http://localhost:8080/actuator/caches/{cache}",
      "templated": true
    },
    // 省略其他的 ...
}

重要端点解析

/health端点

访问 http://localhost:8080/actuator/health

health端点会聚合你程序的健康指标,来检查程序的健康情况。端点公开的应用健康信息取决于:

management:
  endpoints:
    health:
      show-details: always
    web:
      exposure:
        include: health,info,env,loggers

show-details这个属性的值

该属性可以使用以下值之一进行配置:
| never | 不展示详细信息,up或者down的状态,默认配置
| when-authorized | 详细信息将会展示给通过认证的用户。授权的角色可以通过management.endpoint.health.roles配置 |
| always | 对所有用户暴露详细信息 |

访问后会出现项目的详细健康信息

健康检查的状态可以是以下三种之一:

UP:表示应用程序或服务正常运行。

DOWN:表示应用程序或服务已经停止或无法访问。

UNKNOWN:表示健康检查无法确定状态。

在 Actuator 中,健康检查的状态是通过一个名为 Health 的类来表示的。Health 类有一个名为 status 的属性,用来表示健康检查的状态。status 属性的类型是一个枚举值,可以是 UP、DOWN 或 UNKNOWN 中的任意一个。

注意

请注意此处存在一个问题,当SpringBoot版本比较低时,此时无法正常显示健康信息只有一个简单的

{
    "status": "DOWN"
}

即使配置了show-details:always为所有人可见。

解决方法为升级SpringBoot版本,因为低版本将代码中的显示详情写死了为False

/loggers端点

访问 http://localhost:8080/actuator/loggers

/loggers 端点暴露了我们程序内部配置的所有logger的信息。

/info端点

访问 http://localhost:8080/actuator/info

用于提供关于应用程序的静态信息的端点。这些信息通常是人工设置的,用于描述应用程序的版本、环境、构建信息等。

/httptrace

访问 http://localhost:8080/actuator/httptrace

显示应用程序的 HTTP 跟踪信息,可以记录进入应用程序的所有 HTTP 请求,包括请求的方法、URI、头部信息以及远程地址等。

/threaddump端点

访问 http://localhost:8080/actuator/threaddump

显示应用程序的线程转储信息。它能够生成并返回当前 JVM 中所有线程的快照。这个快照包括了线程的状态、是否等待锁资源、线程堆栈等详细信息

/metrics端点

访问 http://localhost:8080/actuator/metrics

显示应用程序的度量信息,如请求速率、响应时间等,提供了对应用程序当前状态的洞察。这个端点暴露了应用程序的实时数据,包括各种关键的性能指标

/beans端点

/beans端点会返回Spring 容器中所有bean的别名、类型、是否单例、依赖等信息。

总结

在本文中,我们介绍了 Spring Boot 中的健康检查是什么,以及如何使用它来监视应用程序的状态。我们了解了健康检查的状态和自定义健康检查的方法,并介绍了 Spring Boot Actuator 插件,它可以帮助我们监视应用程序的状态和性能。通过使用 Spring Boot 的健康检查功能,我们可以更好地监视应用程序的状态和性能,并及时发现和解决问题,提高应用程序的可靠性和稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值