actuator可快速获取微服务健康状态,需配置暴露端点、启用详情、自定义检查并加强安全控制;默认仅开放基础端点,须配置management.endpoints.web.exposure.include和management.endpoint.health.show-details,通过/actuator/health查看聚合状态,支持up/down等语义化值,k8s探针依赖此结果,业务检查需实现healthindicator接口,生产环境须限制暴露范围并结合spring security鉴权。

直接用 Actuator 就能快速获取微服务的健康状态,关键不是“能不能”,而是“怎么暴露、怎么看、怎么扩展”。默认只开基础端点,必须配置才能看到详细信息,还要注意生产环境的安全控制。
基础配置:让健康端点可用
先加依赖,再改配置,这是最简路径:
- 在 pom.xml 中引入 spring-boot-starter-actuator
- application.yml 中至少配置两项:
management.endpoints.web.exposure.include 设为health,info(或*仅限开发)
management.endpoint.health.show-details 设为always(否则返回空详情) - 启动后访问
/actuator/health,返回 JSON 包含整体状态(UP/DOWN)和各组件明细(如 db、diskSpace)
理解健康状态的聚合逻辑
Actuator 不是简单地“通”或“不通”,它按组件分层判断:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 每个子系统(数据库、Redis、磁盘)由独立的 HealthIndicator 检查
- 整体状态 = 所有组件状态的聚合结果:只要一个核心组件 DOWN,整体就 DOWN
- 状态值有明确语义:
UP(正常)、DOWN(故障)、UNKNOWN(无法判定)、OUT_OF_SERVICE(主动下线) - Kubernetes 的 liveness/readiness 探针正是依赖这个分级结果做自动扩缩容或流量切换
自定义业务健康检查
内置检查覆盖基础设施,但业务逻辑需自己写:
- 新建类实现 HealthIndicator 接口,加上
@Component - 在
health()方法里执行业务校验(比如第三方 API 可达性、关键队列积压量、缓存命中率) - 用
Health.up().withDetail("key", value).build()或Health.down().build()返回结果 - 注册后自动纳入
/actuator/health响应,也可单独访问/actuator/health/{id}
安全与生产约束
暴露端点等于开放系统内部视图,必须收口:
- 禁用敏感端点:如
env、beans、metrics默认不暴露,切勿在生产环境设include: "*" - 用 Spring Security 控制 /actuator/** 路径权限,至少要求认证
- 对健康端点本身可设白名单 IP 或反向代理鉴权,避免被恶意探测
- 若集成 Prometheus,建议只暴露
health和metrics,且health保持show-details: never防止泄露细节
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










