使用 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