mcpField
S
serverpod-health-checks

serverpod-health-checks

github.com/serverpodクラウド・DevOps3.3k43 回インストール1 日前に更新
リポジトリ

serverpod-health-checks について

Serverpod のメイン API サーバーに HTTP ヘルスチェックエンドポイントを追加するスキルです。生存、準備完了、起動のチェックと、組み込み・カスタム指標によるプローブ応答を説明します。

主な機能

  1. 01/livez、/readyz、/startupz エンドポイントの提供
  2. 02起動・データベース・Redis 指標の確認
  3. 03カスタムヘルス指標の追加
  4. 04指標のタイムアウトと結果キャッシュの設定
  5. 05ステータスのみ、または認証済み JSON 詳細の返却

活用シーン

  1. 01Kubernetes の生存プローブ設定
  2. 02トラフィック処理前の依存サービス準備状況の確認
  3. 03サーバーの起動完了状態の報告
  4. 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 を使用してください。

コメント