Spring Boot アプリ向けのステータスページと稼働監視
Spring Boot サービスを監視。Spring Boot Actuator のヘルスエンドポイントで標準対応。公開ステータスページまたは API でのヘッドレス。
Spring Boot のステータスページを公開する 3 つの方法
必要な制御レベルを選択 — ノーコード、ローコード、フルヘッドレス。
ホステッド
Spring Boot エンドポイントを追加し status.yourdomain.com に CNAME を向けるだけ。5 分で完成。
埋め込みバッジ
SVG の稼働率・ステータスバッジを README やランディングに埋め込み。5 分ごとに自動更新。
この health エンドポイントを Spring Boot アプリに貼り付けます
コピペして PulseAPI を URL に向けるだけ。健康なら 200、劣化なら 503 を返します。
# 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 スキーマで /actuator/health を公開します。`$.status == "UP"` をアサート。コンポーネント別に JSON-path を追加可能です。
Spring Boot アプリで壊れるもの — それを検知する方法
ダウンストリームが壊れているのに Actuator "UP"
クリティカルな Bean が断続的に失敗しても default ヘルスチェックは通過しうる。Custom HealthIndicator を追加しコンポーネント個別にアサート。
JVM メモリ圧迫
長い GC ポーズはレイテンシ急増として表れます。OOM 発生前にレスポンスタイム監視で検知。
Kafka コンシューマのラグ
無音のコンシューマ障害でキューが伸びます。ラグエンドポイントを公開して閾値アサート。
当社のステータスページが気に入らない? Spring Boot で自作してください。
当社 API はホステッド UI と同じデータを返します。完全な OpenAPI 仕様書は api.pulseapi.tech/docs.
@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 キーや IP 許可リストで。PulseAPI はエンドポイントごとのカスタムヘッダに対応します。
Kubernetes プローブへの対応は?
Actuator の liveness/readiness サブパスを使用。稼働監視は `/actuator/health/liveness`、依存は `/readiness`。
Spring アプリ内でステータスページを描画?
はい。@RestController で Public API をプロキシ、または Thymeleaf で描画。