spring boot 通过 actuator 实现健康检查与监控,需配置暴露策略、理解端点语义、按需启用并做好安全控制;基础接入需添加 starter-actuator 依赖并在 application.yml 中配置 exposure.include;/health 默认聚合 datasource、redis 等内置检查,支持自定义 healthindicator;/metrics 由 micrometer 采集,可对接 prometheus;生产环境须最小暴露、路径隔离、访问控制。

Spring Boot 通过 Actuator 实现健康检查与监控,核心是暴露结构化、可访问的运行时端点,而不是写一堆自定义接口。它不是“加个注解就完事”,而是需要配置暴露策略、理解端点语义、按需启用并做好安全控制。
基础接入:依赖 + 最小配置
只需两步启动基本能力:
- 在 pom.xml 中添加依赖:
<dependency><br><groupid>org.springframework.boot</groupid><br><artifactid>spring-boot-starter-actuator</artifactid><br></dependency>
- 在 application.yml 中显式开启所需端点(Spring Boot 2.x+ 默认只暴露 /actuator/health 和 /actuator/info):
management:<br> endpoints:<br> web:<br> exposure:<br> include: health,info,metrics
此时访问 http://localhost:8080/actuator/health 就能看到 {"status":"UP"};加上 show-details: when_authorized 可在认证后查看各组件详情。
健康检查:不只是“UP/DOWN”
Actuator 的 /health 端点默认聚合多个内置 HealthIndicator,比如:
-
DataSourceHealthIndicator(检查数据库连通性) -
RedisHealthIndicator(检查 Redis 连接) -
DiskSpaceHealthIndicator(检查磁盘剩余空间)
只要其中任意一个返回 DOWN,整体状态就是 DOWN。你还可以自定义业务级健康检查:
- 实现
HealthIndicator接口,重写health()方法 - 用
Health.up().withDetail("key", value).build()或Health.down().build()返回结果 - Spring 容器会自动发现并注册该 Bean 到
HealthContributorRegistry
例如检查第三方用户服务是否可用,失败时让整个健康检查快速失败,避免流量继续打过去。
指标监控:从 JVM 到 HTTP 请求
/actuator/metrics 提供指标列表,/actuator/metrics/{name} 查看具体值,常见指标包括:
-
jvm.memory.used、jvm.threads.live(JVM 层面) -
http.server.requests(按 URI、method、status 统计请求耗时与次数) -
process.cpu.usage(进程 CPU 使用率)
这些数据默认由 Micrometer 自动采集。如需对接 Prometheus,额外引入 micrometer-registry-prometheus,再配置 management.endpoints.web.exposure.include: metrics,prometheus,Prometheus 就能直接抓取 /actuator/prometheus 端点。
生产环境必须做的三件事
Actuator 强大但敏感,不加固等于裸奔:
-
最小暴露:禁用高危端点,如
shutdown、env、beans,除非绝对必要且有强认证 -
路径隔离:通过
management.endpoints.web.base-path把所有端点移到非根路径(如/manage),避免和业务路由冲突 -
访问控制:配合 Spring Security,限制
/actuator/**只允许运维 IP 或特定角色访问,例如仅允许ACTUATOR角色调用/threaddump
健康检查不是上线后才开始的事——它应该成为 CI/CD 流水线中就绪探针(readiness probe)和存活探针(liveness probe)的数据来源,真正嵌入到容器生命周期里。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











