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接口进行监控。

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

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

相关文章

windows下使用编译opencv在qt中使用

记录一下&#xff1a;在windows下qt使用opencv 1、涉及需要下载的软件 CMake 下载地址opecnv下载地址mingw(需要配置环境变量) 这个在下载qt的时候可以直接安装一般在qt的安装路径下的tool里比如我的安装路径 (C:\zz\ProgramFiles\QT5.12\Tools\mingw730_64) 2、在安装好CMake…

ChatGPT对话:Scratch编程中一个单词,如balloon,每个字母行为一致,如何优化编程

【编者按】balloon 7个字母具有相同的行为&#xff0c;根据ChatGPT提供的方法&#xff0c;优化了代码&#xff0c;方便代码维护与复用。初学者可以使用7个字母精灵&#xff0c;复制代码到不同精灵&#xff0c;也能完成这个功能&#xff0c;但不是优化方法&#xff0c;也没有提高…

ENSP软件中DHCP的相关配置以及终端通过域名访问服务器

新建拓扑 配置路由器网关IP 设备配置命令&#xff1a;<Huawei> Huawei部分为设备名 <>代表当下所在的模式&#xff0c;不同模式下具有不同的配置权限<Huawei> 第一级模式&#xff0c;最低级模式 查看所有参数<Huawei>system-view 键入系统视图…

Python中的null是什么?

在知乎上遇到一个问题&#xff0c;说&#xff1a;计算机中的「null」怎么读&#xff1f; null正确的发音是/n^l/&#xff0c;有点类似四声‘纳儿’&#xff0c;在计算机中null是一种类型&#xff0c;代表空字符&#xff0c;没有与任何一个值绑定并且存储空间也没有存储值。 P…

STM32的独立看门狗详解

目录 1.独立看门狗是什么&#xff1f; 2.独立看门狗的作用 3.独立看门狗的实现原理 4.独立看门狗用到的寄存器 4.1 IWDG_KR &#xff08;关键字计时器&#xff09; 4.2 IWDG_PR&#xff08;预分频寄存器&#xff09; 4.3 IWDG_RLR&#xff08;重装载寄存器&#xff09…

程序的控制结构——if-else语句(双分支结构)【互三互三】

目录 &#x1f341; 引言 &#x1f341;if-else语句&#xff08;双分支结构&#xff09; &#x1f449;格式1&#xff1a; &#x1f449;功能&#xff1a; &#x1f449;程序设计风格提示&#xff1a; &#x1f449;例题 &#x1f449;格式2&#xff1a; &#x1f449;…

ENSP防火墙综合配置

综合拓扑&#xff1a; 实验要求&#xff1a; 要求一 生产区的安全策略配置 办公区的安全策略 要求二 生产区的安全策略 游客和办公区的安全策略 因为ISP返回的数据包会被防火墙最后的默认安全策略给拒绝&#xff0c;所以&#xff0c;把要ISP返回的数据给允许通过 要求三 增加…

《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

location匹配的优先级和重定向

nginx的重定向&#xff08;rewrite&#xff09; location 匹配 location匹配的就是后面的uri /wordpress 192.168.233.10/wordpress location匹配的分类和优先级 1.精确匹配 location / 对字符串进行完全匹配&#xff0c;必须完全符合 2.正则匹配 ^-前缀级别&#xff…

【MYSQL】如何解决 bin log 与 redo log 的一致性问题

该问题问的其实就是redo log 的两阶段提交 为什么说redo log 具有崩溃恢复的能力 MySQL Server 层拥有的 bin log 只能用于归档&#xff0c;不足以实现崩溃恢复&#xff08;crash-safe&#xff09;&#xff0c;需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩…

Java毕业设计 基于SSM vue电影订票系统小程序 微信小程序

Java毕业设计 基于SSM vue电影订票系统小程序 微信小程序 SSM 电影订票系统小程序 功能介绍 用户 登录 注册 忘记密码 首页 图片轮播 电影信息 电影详情 评论 收藏 预订 电影资讯 资讯详情 用户信息修改 电影评价 我的收藏管理 用户充值 在线客服 我的订单 管理员 登录 个人…

sqlite 数据库 介绍

文章目录 前言一、什么是 SQLite &#xff1f;二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了&#xff0c; Version 3.46.0 SQLite&#xff0c;是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中。它是…

STM32-OC输出比较和PWM

本内容基于江协科技STM32视频内容&#xff0c;整理而得。 文章目录 1. OC输出比较和PWM1.1 OC输出比较1.2 PWM&#xff08;脉冲宽度调制&#xff09;1.3 输出比较通道&#xff08;高级&#xff09;1.4 输出比较通道&#xff08;通用&#xff09;1.5 输出比较模式1.6 PWM基本结…

批量制作word表格

问题背景 将excel表中的成绩内容制作为成绩单&#xff0c;每页对应一个学员的成绩&#xff0c;方便打印 代码实现 ## 导入包 import pandas as pd from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING# 读取 Excel 内容 df pd.read_e…

docker基础知识以及windows上的docker desktop 安装

记录以供备忘 基础概念&#xff1a; 什么是docker 将程序和环境一起打包&#xff0c;以在不同操作系统上运行的工具软件 什么是基础镜像 选一个基础操作系统和语言后&#xff0c;将对应的文件系统、依赖库、配置等打包为一个类似压缩包的文件&#xff0c;就是基础镜像 什么是…

基于FPGA的数字信号处理(15)--定点数的舍入模式(6)向0取整fix

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式&#xff1a;向上取整fix。 10进制数的fix fix&#xff1a;也叫 向0取整。它的舍入方式是数据往0的方向&#xff0c;舍入到最近的整数&#xff0c;比如1.75 fix到2&#xf…

【SQL】如何用SQL写透视表

【背景】 报表中有一大需求是透视表,目前有很多分析类应用也搭载了此类功能,那么我们能不能直接用SQL做透视表呢? 【分析】 BI类软件将透视表功能做在了前端,但是数据本身还是存储在数据库中,所以必然有方法可以用SQL直接实现透视表。 【心法】 透视表是任意选取一个…

LVS集群及其它的NAT模式

1.lvs集群作用&#xff1a;是linux的内核层面实现负载均衡的软件&#xff1b;将多个后端服务器组成一个高可用、高性能的服务器的集群&#xff0c;通过负载均衡的算法将客户端的请求分发到后端的服务器上&#xff0c;通过这种方式实现高可用和负载均衡。 2.集群和分布式&#…

开源项目的认识理解

目录 开源项目有哪些机遇与挑战&#xff1f; 1.开源项目的发展趋势 2.开源的经验分享&#xff08;向大佬请教与上网查询&#xff09; 3.开源项目的挑战 开源项目有哪些机遇与挑战&#xff1f; 1.开源项目的发展趋势 1. 持续增长与普及 - 开源项目将继续增长&#xff0c…

Java客户端调用SOAP方式的WebService服务实现方式分析

简介 在多系统交互中&#xff0c;有时候需要以Java作为客户端来调用SOAP方式的WebService服务&#xff0c;本文通过分析不同的调用方式&#xff0c;以Demo的形式&#xff0c;帮助读者在生产实践中选择合适的调用方式。 本文JDK环境为JDK17。 结论 推荐使用Axis2或者Jaxws&#…