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

使用 Spring Boot Actuator 实现应用实时监控

1. 引言

1.1 什么是 Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot 提供的一组生产级功能模块,用于帮助开发者对 Spring Boot 应用进行监控和管理。它提供了一系列 REST API 端点(Endpoints),可以获取应用程序的运行状态、健康检查、度量指标等信息。

这些端点开箱即用,适用于本地开发、测试环境以及生产部署。

1.2 为什么需要应用实时监控

在微服务架构中,系统复杂度高、服务数量多且分布广泛。为了快速定位问题、优化性能、保障系统稳定性,必须具备完善的监控能力。

Spring Boot Actuator 提供了以下关键优势:

  • 开箱即用的健康检查
  • 实时查看 JVM 和系统指标
  • 快速排查配置和 Bean 注入问题
  • 支持自定义监控逻辑和集成主流监控平台

2. Spring Boot Actuator 简介

2.1 Actuator 的核心功能概述

Actuator 提供的功能包括但不限于:

功能描述
健康检查检查应用是否正常运行
指标收集获取 JVM、HTTP 请求次数、线程数等运行数据
配置查看查看当前环境变量与配置属性
请求映射查看 URL 与 Controller 方法的映射关系

2.2 常用内置端点(Endpoints)介绍

端点名称描述
/actuator/health查看应用健康状态
/actuator/metrics获取 JVM 和系统运行时指标
/actuator/info显示自定义项目信息
/actuator/env查看当前环境变量和配置
/actuator/beans查看 Spring 容器中的 Bean 列表
/actuator/mappings查看请求路径与控制器方法的映射关系

2.3 Actuator 在生产环境中的典型用途

  • Kubernetes 或 Consul 中的服务健康检查探针
  • Prometheus + Grafana 的可视化监控接入
  • 日志与报警系统的数据源
  • 运维人员快速诊断问题的依据

3. 快速开始:集成 Spring Boot Actuator

3.1 创建一个基础的 Spring Boot 应用

使用 Spring Initializr 创建一个 Spring Boot 项目,选择以下依赖:

  • Spring Web
  • Spring Boot Actuator

下载并导入项目到 IDE 中。

3.2 引入 Actuator 依赖(Maven / Gradle)

Maven:

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

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-actuator'

3.3 启用所有端点并访问健康状态接口

默认情况下,并非所有端点都启用。我们可以在 application.yml 中开启所有端点:

management:endpoints:web:exposure:include: "*"

启动应用后,访问:

http://localhost:8080/actuator/health

响应示例:

{"status": "UP"
}

3.4 自定义管理端口与路径配置

你可以在 application.yml 中修改 Actuator 的访问端口和路径:

server:port: 8081management:server:port: 8082endpoints:web:base-path: /manageexposure:include: "*"

现在可以通过:

http://localhost:8082/manage/health

访问健康检查接口。

4. 核心功能详解

4.1 /actuator/health:应用健康状态监控

Actuator 默认提供了一个简单的健康检查接口。你可以通过添加数据库依赖让其自动检测数据库是否可用。

添加数据库依赖(如 MySQL):

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId

相关文章:

  • 《TCP/IP详解 卷1:协议》之第九章:IP选路
  • 项目管理进阶:详解华为研发项目管理(IPD流程管理)【附全文阅读】
  • 机器视觉开发-打开摄像头
  • Selenium:模拟真实用户的爬虫
  • Python与深度学习:自动驾驶中的物体检测,如何让汽车“看懂”世界
  • 前端函数防抖(Debounce)完整讲解 - 从原理、应用到完整实现
  • Arduino程序函数详解与实际案例
  • Qt二维码demo
  • vscode 的空格和 tab 设置 与 Rime 自建词库
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 18)
  • react学习笔记2——基于React脚手架与ajax
  • 数据可视化入门:画一只会动的星空折线图
  • 基于hr2管理系统的学习
  • 并发设计模式实战系列(11):两阶段终止(Two-Phase Termination)
  • 计算机操作系统知识集合
  • 【c++】【STL】queue详解
  • 小白如何入门Python爬虫
  • Qt connect第五个参数
  • 冒泡排序:从入门到入土(不是)的奇妙旅程
  • 【软件设计师:复习】上午题核心知识点总结(三)
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套
  • 徐徕任上海浦东新区副区长,此前已任区委常委
  • 辽宁辽阳市白塔区一饭店火灾事故举行新闻发布会,现场为遇难者默哀
  • 在岸、离岸人民币对美元汇率双双升破7.26关口
  • 这座“蚌埠住了”的城市不仅会接流量,也在努力成为文旅实力派
  • 第二十届中国电影华表奖揭晓!完整获奖名单来了