在 Spring Boot 应用开发中,指标监控日志管理是保障应用稳定运行的核心环节。指标监控能实时掌握应用健康状态、性能瓶颈,日志管理则用于问题排查和安全审计。本文基于 Spring Boot 提供的 Actuator 监控工具、Spring Boot Admin 可视化平台,以及日志管理最佳实践,详细讲解如何搭建完善的监控与日志体系,并规避常见安全风险。

一、指标监控:Actuator 核心功能与配置

Spring Boot Actuator 是官方提供的监控工具,能暴露应用内部状态指标(如健康检查、内存使用、请求映射等),帮助开发者实时掌握应用运行情况。

1. 快速集成 Actuator

步骤 1:添加依赖

pom.xml 中引入 Actuator 起步依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
步骤 2:配置监控端点

Actuator 默认只暴露少量端点(如 /health),需在配置文件中开启所有端点以获取完整监控数据:

# application.yml
management:endpoints:web:exposure:include: '*'  # 开启所有web端点
  • include: '*' 表示暴露所有监控端点(生产环境可按需指定,如 health,metrics,mappings)。
步骤 3:核心端点功能

启动应用后,通过 http://localhost:8080/actuator 可查看所有端点,常用端点及功能如下:

端点功能描述访问示例
/health应用健康状态(如数据库连接、磁盘空间)http://localhost:8080/actuator/health
/metrics系统指标(内存、CPU、线程等)http://localhost:8080/actuator/metrics
/mappings所有 @RequestMapping 路径映射http://localhost:8080/actuator/mappings
/env环境变量与配置信息http://localhost:8080/actuator/env
/loggers日志级别配置http://localhost:8080/actuator/loggers

2. 实战示例:查看健康状态与系统指标

  • 访问 /actuator/health,可查看应用健康状态(UP 表示正常,DOWN 表示异常):
    {"status": "UP","components": {"diskSpace": {"status": "UP","details": {"total": 107374182400,"free": 53687091200,"threshold": 10485760}}}
    }
    
  • 访问 /actuator/metrics/jvm.memory.used,可查看 JVM 已使用内存:
    {"name": "jvm.memory.used","measurements": [{"value": 150000000, "statistic": "VALUE"}],"availableTags": [{"tag": "area", "values": ["heap", "nonheap"]}]
    }
    

二、可视化监控:Spring Boot Admin 平台搭建

Actuator 提供的 JSON 格式数据不够直观,Spring Boot Admin 是一款开源可视化工具,可将 Actuator 指标以图表形式展示,支持健康预警、日志查看等功能。

1. 搭建 Spring Boot Admin 服务端

步骤 1:创建服务端项目

新建 Spring Boot 项目,添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>3.1.3</version>
</dependency>
步骤 2:开启 Admin 服务端功能

在启动类添加 @EnableAdminServer 注解:

@SpringBootApplication
@EnableAdminServer  // 开启Spring Boot Admin服务端
public class AdminServerApplication {public static void main(String[] args) {SpringApplication.run(AdminServerApplication.class, args);}
}
步骤 3:配置服务端端口
# 服务端端口(避免与客户端冲突)
server:port: 9090

2. 客户端接入 Admin 服务端

步骤 1:在被监控项目中添加客户端依赖
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>3.1.3</version>
</dependency>
步骤 2:配置服务端地址
# 指向Admin服务端地址
spring:boot:admin:client:url: http://localhost:9090
步骤 3:查看监控面板

启动服务端和客户端后,访问 http://localhost:9090 即可看到客户端应用的监控面板,包含:

  • 应用健康状态、CPU/内存使用率等实时指标;
  • 日志级别动态调整、线程栈查看;
  • 请求映射、环境变量等详细信息。

三、日志管理:自定义日志与安全风险规避

日志是排查问题的关键依据,Spring Boot 默认整合 Logback 日志框架,同时需注意规避 Log4j2 等组件的安全漏洞。

1. 打印自定义日志

步骤 1:获取 Logger 实例

通过 LoggerFactory 获取日志对象,调用 info()error() 等方法打印日志:

@Controller
public class LogController {// 获取当前类的Logger实例private static final Logger logger = LoggerFactory.getLogger(LogController.class);@RequestMapping("/printLog")@ResponseBodypublic String printLog() {logger.info("用户访问了printLog接口");  // 信息级日志logger.error("模拟错误日志");          // 错误级日志return "日志打印完成";}
}
步骤 2:控制日志输出

通过配置文件屏蔽指定包的日志(如减少第三方框架日志干扰):

logging:level:org.springframework: warn  # Spring框架日志级别为warn(只输出警告及以上级别)com.example: debug         # 自定义包日志级别为debug

2. Log4j2 安全漏洞与防护

漏洞背景

2021 年 Log4j2 爆出严重远程代码执行漏洞(CVE-2021-44228),攻击者可通过构造特殊日志内容执行任意代码,影响版本为 2.0~2.14.1。

解决方案
  • 升级版本:将 Log4j2 升级至 2.15.0 及以上(修复漏洞的最小版本);
  • 使用 Spring Boot 高版本:Spring Boot 2.6.2 及以上已将 Log4j2 升级至安全版本(2.17.0),Logback 升级至 1.2.9+(修复自身漏洞);
  • 避免直接使用 Log4j2:优先使用 Spring Boot 默认的 Logback 框架,减少第三方日志组件依赖。

四、最佳实践与注意事项

  1. Actuator 安全控制:生产环境需限制端点访问权限(如通过 Spring Security 认证),避免敏感信息泄露;
  2. 日志级别合理设置:开发环境用 debug 级,生产环境用 infowarn 级,减少日志量;
  3. 定期更新依赖:关注日志组件(Log4j2、Logback)的安全公告,及时升级至安全版本;
  4. Spring Boot Admin 高可用:生产环境可部署 Admin 服务端集群,避免单点故障。

总结

本文详解了 Spring Boot 指标监控(Actuator + Spring Boot Admin)和日志管理的核心用法,从 Actuator 端点配置、Admin 可视化监控,到自定义日志打印与安全漏洞防护,覆盖了应用运维的关键环节。合理利用这些工具,能实时掌握应用状态、快速排查问题,并规避安全风险,为应用稳定运行提供保障。

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

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

相关文章

【排序算法】②希尔排序

系列文章目录 第一篇&#xff1a;【排序算法】①直接插入排序-CSDN博客 第二篇&#xff1a;【排序算法】②希尔排序-CSDN博客 第三篇&#xff1a;【排序算法】③直接选择排序-CSDN博客 第四篇&#xff1a;【排序算法】④堆排序-CSDN博客 第五篇&#xff1a;【排序算法】⑤冒…

Linux Shell为文件添加BOM并自动转换为unix格式

1.添加并查看BOM添加bomvim -c "set bomb|set fileencodingutf-8|wq" ./gradlew查看bomhead -c 3 ./gradlew | hexdump -C2.安装dos2unix并转换为unix格式安装sudo apt install dos2unix转换dos2unix ./gradlew

华清远见25072班C语言学习day5

重点内容&#xff1a;数组&#xff1a;为什么有数组&#xff1f;为了便于存储多个数据特点&#xff1a;连续存储多个同种数据类型元素(连续指内存地址连续)数组名&#xff1a;数组中首元素的地址&#xff0c;是一个地址常量。一维整形数组&#xff1a;定义&#xff1a;数据类型…

安全守护,温情陪伴 — 智慧养老产品上新

- 养老智慧看护终端接入萤石开放平台 - 在2025 ECDC萤石云开发者大会&#xff0c;萤石产品经理已经介绍了基于萤石云服务AI能力适老化设备的养老智能能力开放。 而今天&#xff0c;养老智慧看护终端再升级&#xff0c;集成跌倒检测、物理隐私遮蔽、火柴人遮蔽、AI语音智能体…

鸿蒙flutter项目接入极光推送

推送的自分类权益 需要审核15个工作日&#xff0c;实际约3个工作日 项目使用极光推送flutter代码&#xff0c;代码端已经配置的东西&#xff08;需要配置flutter端和对应各自平台原生端&#xff09;&#xff0c;我的工程是多target&#xff0c;所以和单target有一点不同。 一、…

2025牛客多校第八场 根号-2进制 个人题解

J.根号-2进制 #数学 #FFT 思路 赛后发现身边的同学都是通过借位来解决进位问题的&#xff0c;在此提供一种全程不出现减法的顺推做法 首先A,BA,BA,B可以理解为两个多项式&#xff1a;A0A1−2A2(−2)2…A_{0}A_{1}\sqrt{ -2 }A_{2}(\sqrt{ -2 })^2\dotsA0​A1​−2​A2​(−…

DataEase官方出品丨SQLBot:基于大模型和RAG的智能问数系统

2025年8月7日&#xff0c;DataEase开源项目组发布SQLBot开源项目&#xff08;github.com/dataease/SQLBot&#xff09;。SQLBot是一款基于大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;和RAG&#xff08;Retrieval Augmented Generation&#xff0c;…

第十四节 代理模式

在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。介绍意图&#xff1a;为其他对象提供一种代理以控制对…

训推一体 | 暴雨X8848 G6服务器 x Intel®Gaudi® 2E AI加速卡

近日&#xff0c;暴雨信息携手英特尔&#xff0c;针对Gaudi 2E AI加速器HL-288 PCIe卡&#xff08;简称IntelGaudi 2E PCIe卡&#xff0c;下同&#xff09;完成专项调优与适配工作&#xff0c;并重磅推出Intel Eagle Stream平台4U8卡解决方案。该方案通过软硬件协同优化&#x…

GB17761-2024标准与电动自行车防火安全的技术革新

随着我国电动自行车保有量突破3.5亿辆&#xff0c;这一便捷的交通工具已成为城市出行的重要组成。然而&#xff0c;伴随市场规模扩大而来的是日益突出的安全问题——2023年全国电动自行车火灾事故高达2.5万起&#xff0c;年均增长率约20%&#xff0c;火灾中塑料件加速燃烧并释放…

利用容器编排完成haproxy和nginx负载均衡架构实施

1 创建测试目录和文件[rootdocker-a ~]# mkdir lee [rootdocker-a ~]# cd lee/ [rootdocker-a lee]# touch docker-compose.yml # 容器编排工具Docker Compose 默认识别docker-compose.yml文件2 编写docker-compose.yml文件和haproxy.cfg文件2.1 核心配置说明2.1.1 服务结构共定…

WinRAR v7.13 烈火汉化稳定版,解压缩全格式专家

[软件名称]: WinRAR v7.13 烈火汉化稳定版 [软件大小]: 3.8 MB [下载通道]: 夸克盘 | 迅雷盘 软件介绍 WinRAR 压缩文件管理器&#xff0c;知名解压缩软件&#xff0c;电脑装机必备软件&#xff0c;国内最流行最好用的压缩文件管理器、解压缩必备软件。它提供 RAR 和 ZIP 文…

强化学习常用数据集

强化学习常用数据集数学推理数据集数值标签GSM8K&#xff08;2021 OpenAI)问答数据集在LLM场景下进行强化学习训练的时候&#xff0c;时常会涉及到各种各样的数据集&#xff0c;容易记不住&#xff0c;因此开个帖子记录一下。可采取的分类方法有很多&#xff0c;这里直接按照领…

ROS2学习(1)—基础概念及环境搭建

文章目录核心框架环境搭建小乌龟机器人控制小乌龟启动键盘控制启动rqt查看ros节点关系核心框架 这里有几个比较重要的概念&#xff1a; 四大通信机制&#xff1a;话题&#xff08;Topic&#xff09;、服务&#xff08;Service&#xff09;、动作&#xff08;Action&#xff09…

基于STM32单片机超声波测速测距防撞报警设计

1 系统功能介绍 本设计是一套基于 STM32F103C8T6 单片机 的超声波测速测距防撞报警系统&#xff0c;能够实现对目标物体的实时测距与测速&#xff0c;并通过 TFT 彩屏进行动态显示&#xff0c;同时根据用户设定的距离与速度阈值进行报警提示。该系统不仅可以用于固定场景的安全…

麒麟系统播放 pptx

目录 python 操作 LibreOffice 控制pptx 一页一页播放 1. 安装 LibreOffice&#xff08;麒麟系统基于 Debian/Ubuntu&#xff09; 2. 如果只想安装 PPT 播放/转换&#xff08;Impress&#xff09; 1. 启动 LibreOffice UNO 服务 2. Python 控制播放uno安装方法&#xff1a…

嵌入式Linnux学习 -- 软件编程2

四、IO1. 概念1. IO 指 input / output2. Linux系统中一切皆是文件3. IO操作的对象是文件2. 文件1. 概念一段数据的集合2. 特点文件通常存放在外存中&#xff0c;掉点后数据不会丢3. 分类b&#xff08;block&#xff0c;块设备文件&#xff09;-- 按块扫描信息的文件&#x…

Spark02 - SparkContext介绍

一、应用入口&#xff1a;SparkContextSpark Application 程序入口为&#xff1a;SparkContext&#xff0c;任何一个应用首先需要构建 SparkContext 对象&#xff0c;如下两步构建&#xff1a;第一步、创建 SparkConf 对象设置 Spark Application 基本信息&#xff0c;比如应用…

Selenium动态元素定位

动态元素定位方法一&#xff1a;使用CSS选择器通过部分匹配操作符定位动态属性中的固定部分。*&#xff08;包含&#xff09;&#xff0c;^&#xff08;开头&#xff09;&#xff0c;$&#xff08;结尾&#xff09;。/* 匹配id前缀为user_的元素 */ cssdiv[id^"user_"…

OBOO鸥柏丨115寸商用屏/工业液晶显示器招标投标核心标底参数要求

整机参数要求&#xff1a;商用液晶显示器/工业LCD一体机/商业智能终端机/工业防爆显示器/招标投标核心标底参数要求1、整机屏幕采用≥采用115英寸超高清原厂原包原装工业LCD液晶屏面板&#xff1b;具有高色域&#xff0c;显示动态视频、web及3D动画时&#xff0c;保障运动画面流…