当前位置: 首页 > news >正文

SpringBoot:SpringBoot中如何实现对Http接口进行监控

一、前言

  Spring Boot Actuator是Spring Boot提供的一个模块,用于监控和管理Spring Boot应用程序的运行时信息。它提供了一组监控端点(endpoints),用于获取应用程序的健康状态、性能指标、配置信息等,并支持通过 HTTP 或 JMX 进行访问。

  使用 Actuator 可以方便地了解应用程序的运行状况,监控等关键指标,并根据需要采取相应的措施。它为开发人员和运维人员提供了一种简单而有效的方式来监控和管理Spring Boot应用程序。例如:在项目中监控记录接口请求的相关信息,它对于提升系统稳定性、优化性能、快速定位问题以及保障数据安全等方面都起着至关重要的作用。

  本文将介绍一下Spring Boot Actuator以及代码示例,以及如何进行接口请求监控。

二、Spring Boot Actuator主要特性和功能

  1. 健康检查(Health Checks):通过 /actuator/health 端点暴露应用程序的健康状态。这可以包括数据库连接、外部服务可达性等多种健康指标。支持自定义健康检查指标。

    ①. 配置健康检查的详细程度(通过 management.endpoint.health.show-details 属性)。可配置的值有 never(默认,不显示详细信息)、when-authorized(详细信息将展示给通过认证的用户)和 always(对所有用户暴露详细信息)。

    ②. 可以通过 management.health.defaults.enabled 或针对特定组件的 management.health.xxxx.enabled 配置项来启用或禁用默认的健康指示器。

  2. 信息端点:通过 /actuator/info 端点展示应用程序的自定义信息,如版本号、构建信息等。允许在 application.properties 或 application.yml 文件中配置这些信息。

  3. 度量指标(Metrics):提供应用程序的度量指标,如 JVM 内存使用情况、系统 CPU 负载、HTTP 请求统计等。可以通过 /actuator/metrics 端点获取度量指标信息。

  4. 日志管理(Logging Management):通过 /actuator/loggers 端点动态调整日志级别。允许在运行时查看和修改日志配置,而无需重启应用程序。

  5. 环境属性(Environment Properties):通过 /actuator/env 端点展示配置的属性来源,如系统属性、环境变量、配置文件等。

  6. 线程转储(Thread Dump):通过 /actuator/threaddump 端点生成当前线程的转储快照,有助于诊断性能问题或死锁情况。

  7. HTTP 跟踪(HTTP Trace):通过 /actuator/httptrace 端点展示最近的 HTTP 请求和响应的跟踪信息,有助于分析请求处理流程。

  8. 审计事件(Audit Events):通过 /actuator/auditevents 端点访问应用程序的审计事件,如安全事件。

  9. JMX Beans:除了 HTTP 端点外,Actuator 还提供了 JMX Beans,允许通过 JMX 控制台来访问和管理应用程序。

  10. 关机和重启(Shutdown and Restart):在某些配置下,可以通过 /actuator/shutdown 或 /actuator/restart 端点来安全地关闭或重启应用程序。但请注意,这些功能通常不推荐在生产环境中使用,因为它们可能带来安全风险。

  11. 自定义端点(Custom Endpoints):允许开发者创建自定义的 Actuator 端点,以扩展监控和管理功能。

三、Actuator监控分类

Actuator 监控分成两类:原生端点和用户自定义端点

  ①. 自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。

  ②. 原生端点是在应用程序里提供众多Web接口,通过它们了解应用程序运行时的内部状况

原生端点又可以分成三类

  ①. 应用配置类 :可以查看应用在运行期的静态信息:例如自动配置信息、加载的 springbean 信息、yml 文件配置信息、环境信息、请求映射信息。

  ②. 度量指标类 :主要是运行期的动态信息,例如堆栈、请求连、一些健康指标、metrics 信息等。

  ③. 操作控制类 :主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭。

Actuator 提供了13 个接口,具体如下表所示

在这里插入图片描述

四、代码示例

1. 引入依赖

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

2. 添加application.properties配置

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

3. 定义一些请求接口

@GetMapping("/v1/test")public Object Test1() {String name = "hello";return name;}// 异常情况下@GetMapping("/v2/test2")public Object Test2() {String name = "hello new";System.out.println(1 / 0) ;return name;}

4. 浏览器访问

访问http://localhost:8027/actuator

在这里插入图片描述

①查看项目运行情况,通过访问 /actuator/health
  health 主要用来检查应用的运行状态,这是我们使用最高频的一个监控点。通常使用此接口提醒我们应用实例的运行状态,以及应用不”健康“的原因,比如数据库连接、磁盘空间不够等。

在这里插入图片描述

②.查看日志级别情况

在这里插入图片描述
  比如我们生产环境日志级别一般都是 info,但是现在有一个bug通过info级别无法排查,那么我们就可以临时修改 log 级别。

在这里插入图片描述

五、http接口监控

  1. 要使用Actuator的http接口监控功能,需要注册一个HttpTraceRepository类型的Bean
package com.example.yddemo.actuator;import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class HttpActuatorConfig {@BeanInMemoryHttpTraceRepository inMemoryHttpTraceRepository() {return new InMemoryHttpTraceRepository() ;}}
  1. 添加application.properties配置
management.endpoints.web.exposure.include=httptrace
  1. 访问http://localhost:8027/actuator

  出现下面链接,表示配置成功

在这里插入图片描述
4. 访问http://localhost:8027/actuator/httptrace

请求一些上面我们定义的接口,然后访问/actuator/httptrace,展示如下信息
在这里插入图片描述

列如:timeTaken属性记录的是该接口请求的耗时情况(单位:毫秒)

  1. 自定义记录的信息,可以通过如下配置

访问/actuator/httptrace,展示的信息,也可以自定义展示需要的信息。

management.trace.http.include=

在这里插入图片描述

六、安全管理

1.在application.properties禁用接口

management.endpoint.health.enabled=false

2. 配置访问权限验证,这时再访问actuator功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。例如Spring Security,shiro等

3. 使用Filter对访问actuator做限制

  以上就是对SpringBoot中Actuator的介绍以及代码示例,了解了如何查看健康检查,如何使用Actuator来实现对Http接口进行监控。

相关文章:

SpringBoot:SpringBoot中如何实现对Http接口进行监控

一、前言 Spring Boot Actuator是Spring Boot提供的一个模块&#xff0c;用于监控和管理Spring Boot应用程序的运行时信息。它提供了一组监控端点&#xff08;endpoints&#xff09;&#xff0c;用于获取应用程序的健康状态、性能指标、配置信息等&#xff0c;并支持通过 HTTP …...

STM32-I2C硬件外设

本博文建议与我上一篇I2C 通信协议​​​​​​共同理解 合成一套关于I2C软硬件体系 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担 特点&#xff1a; 多主机功能&#x…...

暑假第一次作业

第一步&#xff1a;给R1,R2,R3,R4配IP [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24 [R1-Serial4/0/0]ip address 15.0.0.1 24 [R2-GigabitEthernet0/0/0]ip address 192.168.2.1 24 [R2-Serial4/0/0]ip address 25.0.0.1 24 [R3-GigabitEthernet0/0/0]ip address 192.…...

【算法专题】快速排序

1. 颜色分类 75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 依据题意&#xff0c;我们需要把只包含0、1、2的数组划分为三个部分&#xff0c;事实上&#xff0c;在我们前面学习过的【算法专题】双指针算法-CSDN博客中&#xff0c;有一道题叫做移动零&#xff0c;题目要…...

debian 12 PXE Server 批量部署系统

pxe server 前言 PXE&#xff08;Preboot eXecution Environment&#xff0c;预启动执行环境&#xff09;是一种网络启动协议&#xff0c;允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器&#xff0c;它提供了启动镜像和引导加载程序&#xff0c;…...

【Pytorch】RNN for Image Classification

文章目录 1 RNN 的定义2 RNN 输入 input, h_03 RNN 输出 output, h_n4 多层5 小试牛刀 学习参考来自 pytorch中nn.RNN()总结RNN for Image Classification(RNN图片分类–MNIST数据集)pytorch使用-nn.RNNBuilding RNNs is Fun with PyTorch and Google Colab 1 RNN 的定义 nn.…...

基于Java的飞机大战游戏的设计与实现论文

点击下载源码 基于Java的飞机大战游戏的设计与实现 摘 要 现如今&#xff0c;随着智能手机的兴起与普及&#xff0c;加上4G&#xff08;the 4th Generation mobile communication &#xff0c;第四代移动通信技术&#xff09;网络的深入&#xff0c;越来越多的IT行业开始向手机…...

初识影刀:EXCEL根据部门筛选低值易耗品

第一次知道这个办公自动化的软件还是在招聘网站上&#xff0c;了解之后发现对于办公中重复性的工作还是挺有帮助的&#xff0c;特别是那些操作非EXCEL的重复性工作&#xff0c;当然用在EXCEL上更加方便&#xff0c;有些操作比写VBA便捷。 下面就是一个了解基本操作后&#xff…...

nginx的四层负载均衡实战

目录 1 环境准备 1.1 mysql 部署 1.2 nginx 部署 1.3 关闭防火墙和selinux 2 nginx配置 2.1 修改nginx主配置文件 2.2 创建stream配置文件 2.3 重启nginx 3 测试四层代理是否轮循成功 3.1 远程链接通过代理服务器访问 3.2 动图演示 4 四层反向代理算法介绍 4.1 轮询&#xff0…...

中职网络安全B模块Cenots6.8数据库

任务环境说明&#xff1a; ✓ 服务器场景&#xff1a;CentOS6.8&#xff08;开放链接&#xff09; ✓ 用户名&#xff1a;root&#xff1b;密码&#xff1a;123456 进入虚拟机操作系统&#xff1a;CentOS 6.8&#xff0c;登陆数据库&#xff08;用户名&#xff1a;root&#x…...

BGP笔记的基本概要

技术背景&#xff1a; 在只有IGP&#xff08;诸如OSPF、IS-IS、RIP等协议&#xff0c;因为最初是被设计在一个单域中进行一个路由操纵&#xff0c;因此被统一称为Interior Gateway Protocol&#xff0c;内部网关协议&#xff09;的时代&#xff0c;域间路由无法实现一个全局路由…...

【Redis】复制(Replica)

文章目录 一、复制是什么&#xff1f;二、 基本命令三、 配置&#xff08;分为配置文件和命令配置&#xff09;3.1 配置文件3.2 命令配置3.3 嵌套连接3.4 关闭从属关系 四、 复制原理五、 缺点 以下是本篇文章正文内容 一、复制是什么&#xff1f; 主从复制 master&#xff…...

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗&#xff0c;支持滑动消失&#xff0c; 滑动查看评论 效果如下图 思路 创建一个视图&#xff0c;该视图上面放置一个tableView, 该视图上添加一个滑动手势&#xff0c;同时设置代理&#xff0c;实现代理方法 (BOOL)gestur…...

【JavaWeb程序设计】Servlet(二)

目录 一、改进上一篇博客Servlet&#xff08;一&#xff09;的第一题 1. 运行截图 2. 建表 3. 实体类 4. JSP页面 4.1 login.jsp 4.2 loginSuccess.jsp 4.3 loginFail.jsp 5. mybatis-config.xml 6. 工具类&#xff1a;创建SqlSessionFactory实例&#xff0c;进行 My…...

php探针

php探针是用来探测空间、服务器运行状况和PHP信息用的&#xff0c;探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。 下面就分享下我是怎样利用php探针来探测服务器网站空间速度、性能、安全功能等。 具体步骤如下&#xff1a; 1.从网上下…...

泰勒级数 (Taylor Series) 动画展示 包括源码

泰勒级数 (Taylor Series) 动画展示 包括源码 flyfish 泰勒级数&#xff08;英语&#xff1a;Taylor series&#xff09;用无限项连加式 - 级数来表示一个函数&#xff0c;这些相加的项由函数在某一点的导数求得。 定义了一个函数f(x)表示要近似的函数 sin ⁡ ( x ) \sin(x) …...

蔚来汽车:拥抱TiDB,实现数据库性能与稳定性的飞跃

作者&#xff1a; Billdi表弟 原文来源&#xff1a; https://tidb.net/blog/449c3f5b 演讲嘉宾&#xff1a;吴记 蔚来汽车Tidb爱好者 整理编辑&#xff1a;黄漫绅&#xff08;表妹&#xff09;、李仲舒、吴记 本文来自 TiDB 社区合肥站走进蔚来汽车——来自吴记老师的演讲…...

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块

文章目录 前言一、导航功能实现a.效果图&#xff1a;b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…...

对比 UUIDv1 和 UUIDv6

UUIDv6是UUIDv1的字段兼容版本&#xff0c;重新排序以改善数据库局部性。UUIDv6主要在使用UUIDv1的上下文中实现。不涉及遗留UUIDv1的系统应该改用UUIDv7。 与 UUIDv1 将时间戳分割成低、中、高三个部分不同&#xff0c;UUIDv6 改变了这一序列&#xff0c;使时间戳字节从最重要…...

记一次饱经挫折的阿里云ROS部署经历

前言 最近在参加的几个项目测评里&#xff0c;我发现**“一键部署”这功能真心好用&#xff0c;省下了不少宝贵时间和力气&#xff0c;再加上看到阿里云现在有个开源上云**的活动。趁着这波热潮&#xff0c;今天就聊聊怎么从头开始&#xff0c;一步步搞定阿里云的资源编排服务…...

告别API依赖!实测具备“看屏幕”能力的Agent,实在Agent如何重构企业自动化天花板?

在2026年这个被业界公认为“智能体元年”的当下&#xff0c;企业数字化转型已从简单的“系统上线”演进到“全量自动化”的深水区。然而&#xff0c;传统API接口的局限性与老旧系统的数据孤岛&#xff0c;始终是横亘在降本增效路上的大山。本文由「企服AI产品测评局」带来深度实…...

2026上海紧固件专业展6月24-26日国家会展中心(上海)举办

2026第十六届上海紧固件专业展&#xff08;Fastener Expo Shanghai 2026&#xff09;将于6月24日至26日在国家会展中心&#xff08;上海&#xff09;举办。本届展会围绕紧固件全产业链展开&#xff0c;涵盖紧固件成品、冷镦成型设备、模具耗材、检测包装、表面处理以及原材料供…...

Lab4-Lab: traps MIT6.1810操作系统工程【持续更新】

kernel/trap.c当中是处理所有中断的代码。 RISC-V assembly (简单) ​ 在这个lab当中&#xff0c;要求我们阅读一些汇编代码&#xff0c;并且了解c语言的某些语句对应的汇编是怎样的&#xff0c;同时了解不同寄存器的不同职责&#xff08;例如ra寄存器是存放返回地址的寄存器…...

重新定义AI时代的敏态与稳态:ArkClaw与HiAgent的双轮进化

4月2日&#xff0c;2026火山引擎AI创新巡展・武汉站正式启幕。火山引擎总裁谭待在宣布截至2026年3月&#xff0c;豆包大模型日均Token使用量突破120万亿&#xff0c;三个月翻倍、较2024年5月豆包问世增长了1000倍的同时&#xff0c;提出了以ArkClaw为敏态Agent、HiAgent为稳态A…...

嵌入式系统高可靠存储模块(Store)设计与实现

在嵌入式系统开发中&#xff0c;数据持久化是保障设备稳定性、连续性运行的核心支撑&#xff0c;尤其对于物联网网关、工业控制器、智能家居终端等设备&#xff0c;需长期存储设备配置、运行参数、网络信息等关键数据&#xff0c;且要求掉电不丢失、读写高效、容错性强。基于此…...

借助快马平台AI能力打造智能自适应的contextmenumanager管理系统

最近在做一个需要频繁使用右键菜单的项目&#xff0c;发现传统contextmenu管理方式实在太麻烦了。每次新增功能都要手动写一堆配置代码&#xff0c;维护起来也头疼。正好看到InsCode(快马)平台的AI辅助开发功能&#xff0c;尝试用它打造了一个智能自适应的contextmenumanager系…...

利用快马平台快速构建openclaw101机器人抓手控制原型,十分钟完成代码框架

最近在做一个机器人抓手的控制项目&#xff0c;正好尝试了用InsCode(快马)平台来快速搭建原型&#xff0c;整个过程比想象中顺利很多。作为一个开源硬件爱好者&#xff0c;我想分享一下如何用这个平台十分钟搞定openclaw101机器人抓手的控制程序框架。 项目背景与需求分析 open…...

AI辅助开发C语言项目,让快马平台智能生成学生成绩管理系统

最近尝试用AI辅助开发一个C语言的学生成绩管理系统&#xff0c;整个过程比想象中顺利很多。这个项目虽然不算复杂&#xff0c;但涉及模块化设计、文件操作、指针管理等知识点&#xff0c;正好可以验证AI在辅助开发中的实际效果。下面分享我的具体实践过程&#xff1a; 需求分析…...

2026 年,DD4 内存条平台为何仍备受关注?

在内存技术飞速发展的今天&#xff0c;DDR5内存条逐渐成为了市场的主流。然而&#xff0c;令人意外的是&#xff0c;DDR4内存条平台在2026年仍然备受关注。究竟是什么原因让DDR4内存条在新时代依然占据一席之地呢&#xff1f;本文将从多个角度为您深入剖析。一、性价比之选对于…...

实战应用指南:基于快马平台开发养龙虾产销一体化管理平台

今天想和大家分享一个最近用InsCode(快马)平台做的养龙虾产销管理系统的开发经历。作为一个养殖户出身的技术爱好者&#xff0c;我深知传统养殖业在数字化管理上的痛点&#xff0c;这次尝试用低代码方式解决实际问题&#xff0c;效果出乎意料的好。 系统设计思路 整个平台围绕四…...