/actuator/health接口可实时查看数据库、redis、磁盘等组件状态,前提是集成spring boot actuator并配置健康指示器;默认自动注册常见依赖检查,需配置show-details参数暴露详情,支持自定义业务检查及对接prometheus、k8s等监控体系。
直接用 /actuator/health 接口就能看到数据库、redis、磁盘等组件的实时状态,前提是服务已集成 spring boot actuator 并正确配置健康指示器。
让基础组件自动被检查
Spring Boot Actuator 会自动注册常见依赖的健康检查,比如:
- 有
spring-boot-starter-jdbc且配置了数据源 → 自动添加DataSourceHealthIndicator - 引入
spring-boot-starter-data-redis→ 自动启用RedisHealthIndicator - 应用在 Linux 上运行 →
DiskSpaceHealthIndicator默认检测根路径剩余空间
这些检查默认开启,无需额外编码。访问 /actuator/health 就能看到类似 "database":"UP"、"redis":"DOWN" 的结构化响应。
暴露详细信息用于定位问题
默认情况下,健康端点只返回总体状态(如 {"status":"UP"}),不显示各组件详情。要看到具体组件状态,需显式配置:
-
management.endpoint.health.show-details=always(开发/测试环境) -
management.endpoint.health.show-details=when_authorized(生产环境,配合 Spring Security)
这样返回的 JSON 中会包含 checks 字段,列出每个 HealthIndicator 的名称、状态和可选的错误原因或指标值,比如连接池使用率、响应延迟等。
加入业务关键逻辑的自定义检查
标准检查覆盖不了业务强依赖项,比如第三方支付网关连通性、核心缓存预热完成状态、定时任务调度器是否活跃。这时要实现 HealthIndicator 接口:
- 创建一个
@Component类,重写health()方法 - 方法内执行轻量探测(如 HTTP HEAD 请求、简单 SQL 查询、内存标志位判断)
- 成功时返回
Health.up().build(),失败时用Health.down().withDetail("reason", "timeout")
Actuator 会自动发现并聚合这个检查结果到整体健康视图中,不影响其他组件判断逻辑。
对接外部监控系统做持续跟踪
仅靠人工访问接口无法实现真正监控。需要把健康状态变成可观测信号:
- 用 Prometheus 定期抓取
/actuator/health(配合micrometer-registry-prometheus可导出为指标) - 在 Grafana 中配置告警规则:当
health_status{component="redis"} == 0持续 2 分钟就触发通知 - Kubernetes 中将
livenessProbe和readinessProbe指向该接口,让编排系统自动剔除异常实例
注意:避免在健康检查里做耗时操作(如全表扫描、大文件读取),否则会拖慢探针响应,导致误判服务不可用。











