Spring Boot Actuator 生产级使用需配置暴露端点、定制健康指示器、接入 Prometheus 并强化安全控制;默认仅暴露 health 和 info,须显式配置 include 列表,通过 HealthIndicator 扩展业务健康检查,用 Micrometer 采集指标,配合 Spring Security 限制敏感端点访问。

在 Spring Boot 项目中引入 spring-boot-starter-actuator 很简单,但要真正用好它实现生产级健康检查与指标监控,关键在于配置暴露端点、定制健康指示器、接入监控系统(如 Prometheus)以及安全控制。
添加依赖并启用基础功能
只需在 pom.xml 中加入 starter 依赖,Spring Boot 2.0+ 默认只暴露 health 和 info 两个端点,其余需显式配置:
- Gradle 示例:
implementation 'org.springframework.boot:spring-boot-starter-actuator' - Maven 示例:确保版本与 Spring Boot 主版本一致(如 3.x 项目用 3.x 的 actuator)
- 默认端点路径为
/actuator/xxx,例如/actuator/health
暴露所需端点并调整访问路径
通过 application.yml 控制哪些端点可用、是否公开、是否重命名:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 用
management.endpoints.web.exposure.include显式列出要暴露的端点,如health,info,metrics,prometheus,threaddump,loggers - 用
management.endpoint.health.show-details设为always(生产环境建议设为when_authorized并配合权限控制) - 可自定义端点根路径:
management.endpoints.web.base-path=/manage,此时健康检查变为/manage/health
扩展健康检查与指标采集
内置健康检查只覆盖数据库、Redis 等常见组件;业务系统常需检查下游服务、文件目录、许可证状态等:
立即学习“Java免费学习笔记(深入)”;
- 实现
HealthIndicator接口,重写health()方法,返回Health.up().withDetail(...).build()或down() - 注册为
@Component即可被自动发现,健康聚合结果会在/actuator/health的components下显示 - 对指标,优先使用 Micrometer —— 它是 Actuator 的指标抽象层;直接注入
Counter、Gauge、Timer等记录业务维度数据 - 若接入 Prometheus,添加依赖
micrometer-registry-prometheus,并暴露/actuator/prometheus端点
生产环境必须的安全与调优
Actuator 端点含敏感信息(线程堆栈、环境变量、日志级别),未加防护直接暴露在线上等于裸奔:
- 用 Spring Security 限制访问:仅允许特定 IP 或角色访问
/actuator/**,例如配置requestMatchers("/actuator/**").hasRole("ACTUATOR") - 禁用危险端点:如
shutdown(已默认关闭)、env、heapdump,除非明确需要且有强认证 - 避免将所有端点映射到根路径(如
management.endpoints.web.base-path=设为空),防止与业务路由冲突 - 高并发场景下,
threaddump或heapdump可能引发卡顿,建议异步执行或限制触发频次

















