为 Spring Boot 发布状态页的三种方式
选择所需的控制级别 — 零代码、低代码或完全 headless。
托管
添加 Spring Boot 端点,把 CNAME 指向 status.yourdomain.com,完成。5 分钟搞定。
嵌入式徽章
将 SVG 正常运行时间和状态徽章放入 README 或落地页。每 5 分钟自动更新。
把这个 health 端点加入你的 Spring Boot 应用
复制、粘贴、把 PulseAPI 指向 URL。健康时返回 200,降级时返回 503。
application.yml
# application.yml
management:
endpoints:
web:
exposure:
include: health, info
endpoint:
health:
show-details: always
probes:
enabled: true
health:
db:
enabled: true
redis:
enabled: true
diskspace:
enabled: trueSpring Boot Actuator 以稳定 JSON schema 暴露 /actuator/health。断言 `$.status == "UP"`。针对特定组件添加 JSON-path 规则。
Spring Boot 应用会出什么故障 — 如何捕获
下游损坏但 Actuator "UP"
关键 bean 间歇失败时 default 健康检查仍可能通过。添加自定义 HealthIndicators 并断言具体组件。
JVM 内存压力
长 GC 停顿表现为延迟突增。响应时间告警在 OOM 发生前捕获。
Kafka 消费者 lag
静默消费者故障让队列堆积。暴露 lag 端点并断言阈值。
Headless 视角
不喜欢我们的状态页? 用 Spring Boot 自己构建。
我们的 API 返回的数据与托管 UI 完全一致。完整 OpenAPI 规范见 api.pulseapi.tech/docs.
为自定义页面代理我们状态 API 的 Spring @RestController。
@RestController
public class StatusController {
private final RestTemplate rest = new RestTemplate();
@GetMapping("/status")
public ResponseEntity<String> status() {
String body = rest.getForObject(
"https://api.pulseapi.tech/status/acme",
String.class
);
return ResponseEntity.ok(body);
}
}Spring Boot 监控 — FAQ
能与 Spring Boot 2、3 或 Micronaut 一起使用吗?
都可以。/actuator/health 形式在 Spring 版本间稳定,Micronaut 类似。
能保护 /actuator/health 吗?
可以。使用 API key 或 IP 白名单。PulseAPI 支持每个端点自定义 header。
如何处理 Kubernetes 探针?
使用 Actuator 的 liveness 和 readiness 子路径。把 `/actuator/health/liveness` 用于外部 uptime,`/readiness` 用于依赖健康。
能否在 Spring 应用内渲染状态页?
可以。在 @RestController 中代理公共 API,或用 Thymeleaf 渲染。