【SpringBoot Actuator】⭐️Actuator 依赖实现服务健康检查,线程信息收集

本文主要是介绍【SpringBoot Actuator】⭐️Actuator 依赖实现服务健康检查,线程信息收集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

🍸前言

🍻一、Actuator 了解

🍺二、使用

        2.1 依赖引入 

        2.2 测试场景搭建

🍹三、测试

        3.1 项目启动测试

        3.2  服务健康检查

        3.3  线程转储

        3.4 内存使用,垃圾回收信息获取

💞️四、章末


🍸前言

        小伙伴们大家好,之前主要是接触了 Spring EL 表达式,学习了表达式的一些语法规范,以及使用方式,并且通过本地项目测试完成结合 AOP 注解实现一些公共服务的功能,之前的文章链接在下面;今天来了解一个很熟悉却又不怎么了解的一个外部包,为什么说熟悉呢,因为是我们项目中常见的 Springboot 框架中可配置的基础依赖中的一个,但是估计很少有用到,就是提供监控和管理的 Actuator 依赖。

【Spring EL<一>✈️ 】SL 表达式的应用-CSDN博客

【Spring EL<二>✈️✈️ 】SL 表达式结合 AOP 注解实现鉴权-CSDN博客

🍻一、Actuator 了解

        Spring Boot Actuator是一个用于监控和管理Spring Boot应用程序的库。提供了一系列内置的端点,用于检查应用程序的各项状态、性能指标和配置信息。使用Actuator可以轻松集成健康检查、指标收集和应用程序管理等功能。

        具体功能如下:

  1. 健康检查(Health Checks)

    • GET http://localhost:8081/actuator/health:返回应用程序的健康状况,包括数据库连接、消息队列等各个组件的状态,这里可以通过 Apipost 等接口测试工具发送请求
  2. 应用信息(Info)

    • GET /actuator/info:提供应用程序的基本信息,如版本号、构建时间等。
  3. 环境属性(Environment Properties)

    • GET /actuator/env:返回应用程序的环境属性,包括系统属性、环境变量和配置文件中的属性。
  4. 指标(Metrics)

    • GET /actuator/metrics:返回所有可用的度量指标名称。
    • GET /actuator/metrics/{metricName}:返回指定指标的详细信息,如内存使用、CPU使用、垃圾回收等。
  5. HTTP跟踪(HTTP Tracing)

    • GET /actuator/httptrace:跟踪HTTP请求,显示最近的一些HTTP请求和响应情况。
  6. 线程转储(Thread Dump)

    • GET /actuator/threaddump:获取当前JVM的线程快照,有助于诊断线程相关问题。

🍺二、使用

        环境准备:简易的可以启动的SpringBoot项目,postMan 接口请求工具

        2.1 依赖引入 

        在pom.xml文件中引入以下依赖,maven 刷新下载依赖即可

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

         注:如果Maven工具之前没有调整的话,可能每次更新的时候回非常耗时,是因为默认地址是要访问国外的网站,速度很慢,解决方案就是使用镜像比如阿里云地址,具体配置就是修改 .xml文件中的 mirror 配置,加入以下配置之后保存,在IDEA中刷新下即可

    <mirror><id>aliyun</id><name>Aliyun Maven Repository</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>central</mirrorOf></mirror>

        2.2 测试场景搭建

               2.2.1 自定义线程池

        这里定义了一个全局的线程池,用于执行线程任务,方便测试信息收集

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;/*** @author HuangBen */
@Configuration
public class ThreadPoolConfig {@Beanpublic ThreadPoolTaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 配置线程池属性executor.setCorePoolSize(10);executor.setMaxPoolSize(20);executor.setQueueCapacity(30);executor.setThreadNamePrefix("TestThread-");executor.initialize();return executor;}
}

                2.2.2 项目初始化打印日志

                使用线程池提交一个项目启动时打印日志的任务,这里使用了 @PostConstruct 注解,注明当前bean 初始化之后执行指定的方法,也就是控制台打印日志

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.annotation.Resource;/*** @author HuangBen */
@Component
public class SomeComponent {@Resourceprivate ThreadPoolTaskExecutor threadPoolTaskExecutor;@PostConstructpublic void someMethod() {threadPoolTaskExecutor.execute(() -> {// 任务逻辑System.out.println("Task is running in: " + Thread.currentThread().getName());});}
}

🍹三、测试

        3.1 项目启动测试

        启动成功的话会在控制台发现自定义的线程日志

        3.2  服务健康检查

        这里只需发送 Get 请求,端口号注意按照自己设置的监听端口号

        "status": "UP" 表示项目的健康状态为正常。也就是说各项组件和依赖项(例如数据库连接)都处于正常状态

        3.3  线程转储

        通过该请求可以获取项目中线程的快照,比如我们之前自定义的线程就可以查到,并且处于等待状态,因为任务执行完成后了,并且属于线程池中的核心线程并不会销毁

        3.4 内存使用,垃圾回收信息获取

                 3.4.1 内存获取可以如下:

  1. jvm.memory.used - JVM 已使用的内存
  2. jvm.memory.max - JVM 最大可用内存
  3. jvm.memory.committed - JVM 提交的内存

                3.4.2 垃圾回收信息

                垃圾回收信息可以通过在 url 访问地址后面加上如下配置

  1. jvm.gc.pause - 垃圾回收暂停时间
  2. jvm.gc.memory.allocated - 分配的内存量
  3. jvm.gc.live.data.size - 存活数据大小

 

💞️四、章末

        文章到这里就结束了~ 

这篇关于【SpringBoot Actuator】⭐️Actuator 依赖实现服务健康检查,线程信息收集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086456

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2