Spring Boot健康监控核心是Actuator的/actuator/health端点,它聚合数据库、Redis等组件状态并支持自定义检查;需配置show-details: always才能显示完整诊断信息,返回分层JSON结构,且须注意生产环境的安全暴露策略。

Spring Boot 应用健康状态监控的核心是 Actuator 的 /actuator/health 端点,它不是简单返回“UP”或“DOWN”,而是聚合数据库、Redis、磁盘、自定义服务等组件的真实可用性。配置得当,它能在故障发生前就发出预警。
启用并暴露 health 端点
Actuator 默认只开放 /health 和 /info 两个端点,但仅暴露路径还不够——默认情况下,详细健康信息(比如哪个数据库连不上)只在本地显示。生产环境必须显式配置才能看到完整诊断数据:
- 在
application.yml中添加:management:<br> endpoint:<br> health:<br> show-details: always # 关键:强制显示所有组件的检查详情<br> endpoints:<br> web:<br> exposure:<br> include: health,info # 生产建议只开必要端点,避免敏感信息泄露
- 如果使用
application.properties,对应写为:management.endpoint.health.show-details=alwaysmanagement.endpoints.web.exposure.include=health,info
理解 health 端点的返回结构
访问 http://localhost:8080/actuator/health 后,响应不是简单的布尔值,而是一个分层 JSON:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
status是聚合结果(如UP或DOWN) -
components下列出每个被检查项的状态,例如:"db": {"status": "UP", "details": {"database": "MySQL", "validationQuery": "isValid()"}}<br>"redis": {"status": "DOWN", "details": {"error": "Cannot connect to redis"}} - 只要任一关键组件(如数据库)返回
DOWN,整体 status 就是DOWN,便于告警系统快速判断
添加自定义健康检查逻辑
内置检查覆盖常见中间件,但业务强依赖的服务(如第三方支付网关、内部风控接口)需要自己写检查器:
- 实现
HealthIndicator接口,例如检查订单服务是否能正常调用:@Component<br>public class OrderServiceHealthIndicator implements HealthIndicator {<br> @Override<br> public Health health() {<br> try {<br> // 模拟调用关键业务接口<br> boolean ok = orderClient.ping();<br> return ok ? Health.up().build() : Health.down().withDetail("reason", "order service unreachable").build();<br> } catch (Exception e) {<br> return Health.down().withException(e).build();<br> }<br> }<br>} - 注册后,它会自动出现在
/actuator/health的components中,名称默认为类名小写(orderServiceHealth)
安全与生产注意事项
health 端点虽属低敏感,但仍需防范信息泄露和滥用:
- 不要在生产环境开放
include: "*",尤其禁用env、beans、shutdown等高危端点 - 通过 API 网关或反向代理限制访问 IP,或配合 Spring Security 做 Basic Auth / JWT 鉴权
- 若集成 Prometheus,推荐使用
/actuator/prometheus替代/metrics,格式更标准、性能更好










