serverpod-health-checks について
Serverpod のメイン API サーバーに HTTP ヘルスチェックエンドポイントを追加するスキルです。生存、準備完了、起動のチェックと、組み込み・カスタム指標によるプローブ応答を説明します。
主な機能
- 01/livez、/readyz、/startupz エンドポイントの提供
- 02起動・データベース・Redis 指標の確認
- 03カスタムヘルス指標の追加
- 04指標のタイムアウトと結果キャッシュの設定
- 05ステータスのみ、または認証済み JSON 詳細の返却
活用シーン
- 01Kubernetes の生存プローブ設定
- 02トラフィック処理前の依存サービス準備状況の確認
- 03サーバーの起動完了状態の報告
- 04カスタムサービスを準備完了チェックに追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ serverpod/ serverpod --skill serverpod-health-checksインストール後、Claude Code で/serverpod-health-checksを入力して読み込まれたか確認します。
詳細
Serverpod のヘルスチェック
メイン API サーバー(デフォルトポート 8080)上の Kubernetes スタイルの HTTP ヘルスエンドポイントです。オプションの Web サーバー(デフォルトポート 8082)上ではありません。認証なしの場合は、HTTP ステータスのみ(200/503)が返されます。認証済みリクエストには、サーバーの通常の認証ハンドラーを通じて詳細な JSON(RFC Health Check Response Format)が返されます。
エンドポイント
/livez— プロセスは稼働していますか?DB/Redis はチェックしません。ライブネスプローブに使用します。/readyz— 依存関係は正常ですか?正常でない場合は 503 を返します。レディネスプローブに使用します。/startupz— サーバーの初期化は完了していますか?スタートアッププローブに使用します。
組み込みインジケーター
- ServerpodStartupIndicator — 起動完了
- DatabaseHealthIndicator — 設定済みデータベース(有効な場合)
- RedisHealthIndicator — Redis(有効な場合)
カスタムヘルスインジケーター
class StripeApiIndicator extends HealthIndicator<double> {
@override String get name => 'stripe:api';
@override String get componentType => HealthComponentType.component.name;
@override String get observedUnit => 'ms';
@override Duration get timeout => const Duration(seconds: 3);
@override
Future<HealthCheckResult> check() async {
final sw = Stopwatch()..start();
try {
await stripeClient.ping();
return pass(observedValue: sw.elapsedMilliseconds.toDouble());
} catch (e) {
return fail(output: 'Stripe unavailable: $e');
}
}
}
登録
final pod = Serverpod(
args,
healthConfig: HealthConfig(
cacheTtl: Duration(seconds: 2), // default is 1 second
additionalReadinessIndicators: [StripeApiIndicator()],
additionalStartupIndicators: [CacheWarmupIndicator()],
),
);
各インジケーターでは timeout を上書きできます(デフォルトは 5s)。cacheTtl は結果をキャッシュし、頻繁なプローブによる負荷を軽減します。Serverpod には、異なるシンプルな契約に基づく従来の GET / ヘルスレスポンスもあります。Kubernetes プローブには /livez、/readyz、/startupz を使用してください。
コメント
Markdown 対応