【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 - 存活数据大小

 

💞️四、章末

        文章到这里就结束了~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的自增 ID 用完了,怎么办?

MySQL 自增 ID 一般用的数据类型是 INT 或 BIGINT&#xff0c;正常情况下这两种类型可以满足大多数应用的需求。 当然也有不正常的情况&#xff0c;当达到其最大值时&#xff0c;尝试插入新的记录会导致错误&#xff0c;错误信息类似于&#xff1a; ERROR 167 (22003): Out o…

使用SpringBootTest测试项目

当我们开发项目后&#xff0c;通常需要进行单元测试&#xff0c;确保开发符合预期。但是对于Springboot项目&#xff0c;依赖部分IOC容器对象的注入。比如代码中存在Autowired、Service、Mapper等。 1、确保pom.xml中包含了依赖&#xff0c;其中的version和scope&#xff0c;大…

【科普】半导体制造过程的步骤、技术、流程

在这篇文章中&#xff0c;我们将学习基本的半导体制造过程。为了将晶圆转化为半导体芯片&#xff0c;它需要经历一系列复杂的制造过程&#xff0c;包括氧化、光刻、刻蚀、沉积、离子注入、金属布线、电气检测和封装等。 基本的半导体制造过程 1.晶圆&#xff08;Wafer&#xf…

发送ajax请求时由于click事件重复绑定导致的请求重复发送问题

问题场景 项目背景&#xff1a;CRM练习项目&#xff0c;通过复选框选择列表中的数据&#xff0c;用户点击删除按钮&#xff0c;弹出确认弹窗&#xff0c;用户点击确认后&#xff0c;前端分装数据到数组&#xff0c;发送ajax请求&#xff0c;将数据传递至Controller进行处理。 …

《计算机英语》测试练习题

作业3 一、单选题 内存条 的英文翻译是 A. memory chip (内存条通常指的是内存条上的存储芯片&#xff0c;但整个内存条的英文翻译应为 "RAM"&#xff0c;即 Random Access Memory 随机存取存储器) capacitor的中文意思是 D. 电容器 relay 的解释是 A. 继电器 por…

基于CDMA的多用户水下无线光通信(2)——系统模型和基于子空间的延时估计

本文首先介绍了基于CDMA的多用户UOWC系统模型&#xff0c;并给出了多用户收发信号的数学模型。然后介绍基于子空间的延时估计算法&#xff0c;该算法只需要已知所有用户的扩频码&#xff0c;然后根据扩频波形的循环移位在观测空间的信号子空间上的投影进行延时估计。 1、基于C…

matplotlib之savefig函数

savefig函数 Matplotlib中&#xff0c;savefig函数用于保存图形为文件。通过该函数&#xff0c;你可以将绘制的图形保存为常见的图像文件格式&#xff0c;如PNG、JPEG、SVG等。 matplotlib.pyplot.savefig(fname, dpiNone, bbox_inchestight, pad_inches0.1, formatNone, tra…

分类接口开发

文章目录 1.查询所有一级分类1.sun-club-application-controller 控制层1.SubjectCategoryController.java 定义基础的queryPrimaryCategory&#xff0c;调用领域层 2.sun-club-domain 领域层1.SubjectCategoryDomainService.java2.SubjectCategoryConverter.java3.SubjectCate…

Python 算法交易实验72 QTV200第一步: 获取原始数据并存入队列

说明 最近的数据流往前进了一步&#xff0c;我觉得基本可以开始同步的推进QTV200了。上次规划了整体的数据流&#xff0c;现在开始第一步。 内容 1 结构位置 这是上次的总体图&#xff1a; 以下是这次要实现的一小部分&#xff1a; 从结构上&#xff0c;这个是整体数据流的…

力扣-接雨水

文章目录 概要题解解释代码比较左右高度处理右侧为什么双指针法有效 概要 原题链接&#xff1a;接雨水 题解 思路&#xff1a;双指针 核心思想&#xff1a;对于任意位置 i&#xff0c;能够存储的雨水量取决于位置 i 左侧和右侧的最大高度中的较小值减去 height[i]。即 min(le…

使用MySQL WorkBbench 连接远程服务器上的mysql教程(包含踩过的坑)

最近在学习MySQL&#xff0c;想要装一个可视化程序&#xff0c;但是希望把脏活累活留给服务器&#xff0c;于是自己电脑上安装了一个MySQL Workbench作为Client。下面记录一下配置的过程。 服务器端MySQL配置 安装MySQL这里就不赘述啦&#xff0c;可以参考 https://segmentfa…

路经总和-二叉树题

112. 路径总和 - 力扣&#xff08;LeetCode&#xff09; 1、用队列 两个队列&#xff0c;先进先出 node队列存节点&#xff1b; sum队列存每条路径走到这个节点的val的总和&#xff1b; 节点和总和对应着同时存入队列&#xff0c;同时出队列&#xff1b; class Solution …

springboot+vue+mybatis旅游管理+PPT+论文+讲解+售后

随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游管理系统将使旅游相关信息管理工作规范化、信息化、程序化,提供旅游景点、旅游线路,旅游新闻等服务本文以jsp…

压力测试Monkey命令参数和报告分析

目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …

如何使用ig507金融数据库的股票接口,股票API来获取MACD指标

一、MACD指标简介 MACD&#xff08;Moving Average Convergence Divergence&#xff0c;移动平均收敛/发散&#xff09;是一种趋势跟踪动量指标&#xff0c;用于分析股票或其他金融产品的价格趋势。MACD由两部分组成&#xff1a;差离值&#xff08;DIF&#xff09;和信号线&am…

借助ChatGPT降低学术论文重复率,使用技巧全攻略,实用有效,快速上手

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步。 经常有学术同…

Python编程技巧:如何正确使用with语句(Python中with用法详解)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 基本语法📝 处理文件📝 处理网络连接📝 管理线程锁📝 管理数据库连接📝 管理临时目录和文件📝 使用上下文装饰器📝 自定义上下文管理器🎯 示例1🎯 示例2📝 使用多个上下文管理器📝 上下…

Visual Studio开发环境搭建

原文&#xff1a;https://blog.c12th.cn/archives/25.html Visual Studio开发环境搭建 测试&#xff1a;笔记本原装操作系统&#xff1a;Windows 10 家庭中文版 资源分享链接&#xff1a;提取码&#xff1a;qbt2 注意事项&#xff1a;注意查看本地硬盘是否够用&#xff0c;建议…

UE5开发游戏Tutorial

文章目录 PlayerStart 初始化设置默认 LevelBP_Character 初始化BP_Character 添加动画BP_Character 攻击BP_Enemy 初始化 以及 AI 运动Camera Collision 相机碰撞BP_Character 生命以及伤害Wave Spawner 波生成UI 初始化以及 Damage Screen指定位置随机生成添加声音环境 Envir…

茴香豆的使用

RAG RAG 模型的核心在于两大部分&#xff1a;检索器&#xff08;Retriever&#xff09;和生成器&#xff08;Generator&#xff09;。检索器的作用是从一个庞大的数据集中&#xff0c;根据输入的问题或者提示&#xff0c;快速有效地检索出最相关的信息或文档。这一步骤通常利用…