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

news2024/12/24 3:03:29

目录

🍸前言

🍻一、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 {

    @Bean
    public 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 {

    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;

    @PostConstruct
    public 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.coloradmin.cn/o/1865143.html

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

相关文章

程序猿大战Python——正则表达式——正则概述

正则表达式的概述 基本介绍 目标&#xff1a;了解什么是正则表达式&#xff1f; 正则表达式&#xff0c;也叫做规则表达式&#xff0c;通常会说成【正则】。 实际上&#xff0c;正则表达式就是指符合一定规则的字符串&#xff0c;同时它能用于检查一段文本数据是否与某种模式…

IND87520芯片介绍(二)

六、内部模拟调光 一个精确的10位DAC作为BUCK电流调节回路的参考发生器。与SPI通信时&#xff0c;DAC参考电压可由主机改变并调节电流在BUCK不断切换的同时&#xff0c;也会发生相应的变化。10位分辨率的DAC正在设计中满足电流变化平稳的要求。一个1.713mA电流步使光亮度连续变…

首次30米空间分辨率生成中国年度耕地栅格数据1986-2021

中国1986-2021年30米分辨率年度耕地数据集 数据介绍 精确、详细且及时的耕地范围信息对于粮食安全保障和环境可持续性至关重要。然而&#xff0c;由于农业景观的复杂性和足够训练样本的缺乏&#xff0c;在大范围下进行高时空分辨率的耕地动态监测仍然具有挑战性&#xff0c;尤其…

Matlab|【免费】含氢气氨气综合能源系统优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序参考《_基于氨储能技术的电转氨耦合风–光–火综合能源系统双层优化调度》模型&#xff0c;对制氨工厂、风力发电、电制氢、燃气轮机、火电机组等主体进行建模分析&#xff0c;以火电机组启停成本、煤耗…

ubuntu中共享文件夹看不到了,解决方法

1、检查共享文件夹配置 2、创建 3、查看共享文件夹 4、另一问题&#xff0c;每次重启虚拟机后&#xff0c;共享文件夹又没了&#xff1f;

三大办公软件实用小技巧 沈阳办公软件白领必修班

Word 学好办公软件能大大的提升我们的工作效率。下面让我们一起学习一下Word办公软件时几个实用小技巧&#xff01; 01.快速插入当前日期或时间 在使用Word办公软件进行文档的编辑处理时&#xff0c;如果需要在文章的末尾插入系统的当前日期或时间。通常情况下&#xff0c;我…

洞察用户需求,Xinstall数据统计App让你的App运营如虎添翼

在互联网时代&#xff0c;App推广和运营面临着前所未有的挑战。流量红利逐渐衰退&#xff0c;用户获取成本不断攀升&#xff0c;如何确保在多变的互联网环境下&#xff0c;迅速搭建起能时刻满足用户需求的运营体系&#xff0c;成为众多企业急待解决的问题。今天&#xff0c;我们…

disableSplitter(false)和requestInputBufSize(0)一样吗?

编译omx文件时&#xff0c;在disableSplitter(false)前加了requestInputBufSize(0)导致报错 hardware/media/hardware/omx/vdec/omx_vdec3.cpp" vendor/realtek/common/ATV/hardware/media/hardware/omx/vdec/omx_vdec3.cpp:245:3: error: field requestInputBufSize wi…

ONLYOFFICE 8.1:引领桌面办公新潮流,功能升级全面提升

目录 一、ONLYOFFICE是什么&#xff1f; 二、功能完善的PDF编辑器 三、幻灯片版式升级 四、改进从右至左显示 五、新的本地化选项 六、多媒体功能增强 七、应用价值探讨 一、ONLYOFFICE是什么&#xff1f; ONLYOFFICE 是一款功能强大的办公套件&#xff0c;旨在提供全面…

如何从0构建一款类似pytest的工具

Pytest主要模块 Pytest 是一个强大且灵活的测试框架&#xff0c;它通过一系列步骤来发现和运行测试。其核心工作原理包括以下几个方面&#xff1a;测试发现&#xff1a;Pytest 会遍历指定目录下的所有文件&#xff0c;找到以 test_ 开头或 _test.py 结尾的文件&#xff0c;并且…

ozon测评自养号必备技巧:提升账号质量,降低测评成本

OZON测评自养号技巧 1.提高店铺权重 自主测评&#xff1a;通过自养号的方式&#xff0c;卖家可以自主控制测评的时间和数量&#xff0c;为自己的listing进行测评&#xff0c;提高店铺权重。 策略调整&#xff1a;根据市场情况和商品特点&#xff0c;灵活调整测评策略&#x…

如何编写时区源文件

0、背景 ① 修改TZ环境变量改变时区不能立即生效。要求设置时区后立即生效&#xff0c;只能用修改/etc/localtime方式。 ② 原文作者 Bill Seymour&#xff0c;想要查看原文&#xff0c;点击官网地址https://www.iana.org/time-zones下载 zic 源码&#xff0c;源码目录中的 tz…

VS Code修改菜单栏字体大小

修改方法 打开VS Code&#xff0c;快捷键 CtrlShiftP&#xff0c;在弹出的输入框中输入 setting&#xff0c;找到带有JSON的一项&#xff0c;如图所示&#xff1a; 原文链接 window.zoomLevel 前后变化 终端字体大小 File -> Preferences -> Settings -> Features…

Linux驱动开发-02字符设备驱动开发初步

一、驱动开发的前期准备 在进入驱动开发之前&#xff0c;需要烧写UBoot、内核、设备树&#xff0c;做一些前期的准备工作&#xff0c;确保我们开发板上的内核版本和Ubuntu上是一致的才能进行正式开发 1.U-Boot 2.内核版本 3.使用TFTP挂载的内核和设备树 二、Linux驱动开发与裸机…

acme.sh泛证书申请

说明: 1、想每个项目都接入域名+端口访问,所以通过acme.sh申请泛域名证书 2、阿里云域名解析,并且指定公网ip地址对应的公共Nginx服务 3、acme.sh证书只有3个月,所以要用shell自动续签证书 4、阿里云域名已解析,所以二级域名、三级域名能正常解析,如下图所示, 一、阿里云…

大厂面试官问我:Redis内存淘汰,LRU维护整个队列吗?【后端八股文四:Redis内存淘汰策略八股文合集】

往期内容&#xff1a; 大厂面试官问我&#xff1a;Redis处理点赞&#xff0c;如果瞬时涌入大量用户点赞&#xff08;千万级&#xff09;&#xff0c;应当如何进行处理&#xff1f;【后端八股文一&#xff1a;Redis点赞八股文合集】-CSDN博客 大厂面试官问我&#xff1a;布隆过滤…

SpringBoot集成Druid数据库连接池并配置可视化界面和监控慢SQL

pom.xml <!-- Druid 数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.23</version></dependency>application.yml spring:jackson:date-…

【Qt之·类QTableWidget】

系列文章目录 文章目录 前言一、常用属性二、成员函数2.1 左上角空白区域 三、实例演示总结 前言 一、常用属性 二、成员函数 方法描述selectRow选中行removeRow移除行insertRow插入行rowCount总行数 2.1 左上角空白区域 QTableCornerButton即不属于列表头&#xff0c;也不…

病理性不对称引导的渐进学习用于急性缺血性脑卒中梗死分割| 文献速递-先进深度学习疾病诊断

Title 题目 Pathological Asymmetry-Guided Progressive Learning for Acute Ischemic Stroke Infarct Segmentation 病理性不对称引导的渐进学习用于急性缺血性脑卒中梗死分割 01 文献速递介绍 中风已经成为第二大致命疾病&#xff0c;大约70%的中风是缺血性的。众所周知…

Java家教系统小程序APP公众号h5源码

让学习更高效&#xff0c;更便捷 &#x1f31f; 引言&#xff1a;家教新选择&#xff0c;小程序来助力 在快节奏的现代生活中&#xff0c;家长们越来越注重孩子的教育问题。然而&#xff0c;如何为孩子找到一位合适的家教老师&#xff0c;成为了许多家长头疼的问题。现在&…