首页 > 其他分享 >SpringBoot健康检查机制讲解与实现

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

时间:2024-10-17 19:18:07浏览次数:11  
标签:SpringBoot Spring Boot actuator 应用程序 端点 讲解 Actuator 健康检查

目录

前言

什么是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 的健康检查功能,我们可以更好地监视应用程序的状态和性能,并及时发现和解决问题,提高应用程序的可靠性和稳定性。

标签:SpringBoot,Spring,Boot,actuator,应用程序,端点,讲解,Actuator,健康检查
From: https://blog.csdn.net/qq_59670390/article/details/143026370

相关文章

  • 基于Springboot技术的高校实验室教学管理系统的设计与实现---附源码 53564
    目 录摘要1绪论1.1研究背景与意义1.2国内外研究现状1.3论文结构与章节安排2 计算机实验室管理平台系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3社会可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分......
  • 基于SpringBoot及Vue的银行卡业务系统的设计与实现---附源码53473
    目 录摘 要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 银行卡业务系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析......
  • ES推荐搜索、自动补全,并且springBoot集成
    推荐搜索在搜索过程中,因为单词的拼写错误,没有得到任何的结果,希望ES能够给我们一个推荐搜索。GETmovies/_search{"suggest":{#title_suggestion为我们自定义的名字"title_suggestion":{"text":"drema","term......
  • 基于ssm+vue.js的二手车交易网站附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SSM前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • k8s部署Kafka集群超详细讲解
    准备部署环境Kubernetes集群信息NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2Kafka:3.7.1版本Zookeeper:3.6.3版本准备StorageClass#kubectlgetscNAMEPROVISIONERRECLAIMPOLICYVOLUMEBINDINGMODEALLOWVOLUMEEXPAN......
  • java毕业设计-基于Springboot的教学资源共享平台【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能成绩管理:记录和追踪学生课程成绩,便于......
  • 旁路电容和去耦合什么作用:【图文讲解】
    1:旁路和去耦旁路电容:BypassCapacitor去耦电容:DecouplingCapacitor这两个概念在电路中是常见的,但是真正理解起来并不容易。我们先回到英文语境里,来看它们的意思。Bypass:在英语中有抄小路的意思,在电路中也这个意思,如下图所示:couple:在英语中是一对的意思,引申为配对、耦合......
  • vue入门案例-基本使用----非常适合初学者。言简意赅,没有废话。附带springboot+vue前后
    Listitemvue1.vue介绍渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的Web前端框架地址:https://cn.vuejs.org/什么是vue?Vue(发音为/vjuː/,类似view)是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明......
  • java毕业设计-基于Springboot的小型企业客户关系管理系统【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能产品管理:集中维护产品信息,包括添加、......
  • Springboot缓存+定时提交优化频繁数据库表修改
    缘起最近在弄一个答题小程序,当用户选择的时候需要把用户选择的选项提交到服务器上,然后整个字段是个json格式的,更新的方法也就是解析json后添加选项进入json中。于是其中就涉及到频繁的数据库修改,因为用户答题速度根据题目不同嘛,所以我就寻思这样频繁的修改,数据量上来速度就会受......