mcpField
L
ln-774-healthcheck-setup

ln-774-healthcheck-setup

github.com/levnikolaevichクラウド・DevOps584385 回インストール2 日前に更新
リポジトリ

ln-774-healthcheck-setup について

プロジェクトの初期設定向けスキルで、.NET または Python プロジェクトにヘルスチェックエンドポイントと Kubernetes プローブ設定を追加します。既知の依存関係を検出し、設定済みの場合は変更をスキップします。

主な機能

  1. 01.NET と Python のヘルスチェック設定
  2. 02ライブ、レディネス、スタートアップ用エンドポイント
  3. 03プロジェクトファイルから依存関係を検出
  4. 04Kubernetes プローブ設定
  5. 05構文とエンドポイントの検証

活用シーン

  1. 01新しい .NET サービスへのプローブ追加
  2. 02FastAPI のヘルスチェックルート設定
  3. 03依存関係の準備状態と稼働状態の個別確認

MCP 対応

MCP ツールを使い、ASP.NET Core と FastAPI のヘルスチェックに関する最新ドキュメントを参照します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-774-healthcheck-setup

インストール後、Claude Code で/ln-774-healthcheck-setupを入力して読み込まれたか確認します。

詳細

ln-774-healthcheck-setup

タイプ: L3 Worker カテゴリ: 7XX Project Bootstrap

Kubernetes のプローブとモニタリング用のヘルスチェックエンドポイントを設定します。


概要

項目詳細
入力ln-770 の Context Store
出力ヘルスチェックエンドポイントと Kubernetes プローブ設定
スタック.NET(AspNetCore.Diagnostics.HealthChecks)、Python(FastAPI ルート)

フェーズ 1:コンテキストの受信と依存関係の特定

Context Store を受け取り、監視対象の依存関係をスキャンします。

必須コンテキスト:

  • STACK:.NET または Python
  • PROJECT_ROOT:プロジェクトディレクトリのパス

冪等性チェック:

  • .NET:AddHealthChecks または MapHealthChecks を検索します
  • Python:/health ルートを検索します
  • 見つかった場合:{ "status": "skipped" } を返します

依存関係の検出:

依存関係.NET での検出方法Python での検出方法
PostgreSQLcsproj 内の Npgsqlrequirements 内の psycopg2 または asyncpg
MySQLcsproj 内の MySql.Datarequirements 内の mysql-connector-python
Rediscsproj 内の StackExchange.Redisrequirements 内の redis
RabbitMQcsproj 内の RabbitMQ.Clientrequirements 内の pika または aio-pika
MongoDBcsproj 内の MongoDB.Driverrequirements 内の pymongo

フェーズ 2:ヘルスチェック戦略の設計

Kubernetes のベストプラクティスに従って、3 種類のヘルスエンドポイントを定義します。

エンドポイントの種類
エンドポイントプローブの種類目的チェック内容
/health/liveLivenessアプリは稼働しているか?アプリが応答する(依存関係のチェックなし)
/health/readyReadinessアプリはトラフィックを処理できるか?すべての依存関係が正常
/health/startupStartup(K8s 1.16+)アプリの初期化は完了しているか?初期ウォームアップの完了
各プローブが失敗した場合
プローブ失敗時のアクションKubernetes の動作
Livenessコンテナーを再起動kubelet がコンテナーを再起動
Readinessサービスから除外トラフィックを停止し、再起動はしない
Startup他のプローブを遅延Liveness/Readiness を一時停止

フェーズ 3:ヘルスチェックのパターンを調査

最新のドキュメントを MCP ツールで確認します。

.NET の場合:

MCP ref: "ASP.NET Core health checks Kubernetes probes"
Context7: /dotnet/aspnetcore

Python の場合:

MCP ref: "FastAPI health check endpoint Kubernetes"
Context7: /tiangolo/fastapi

調査する主なパターン:

  1. データベースのヘルスチェック(接続プール)
  2. Redis の接続チェック
  3. カスタムヘルスチェックの実装
  4. ヘルスチェックのレスポンスライターのカスタマイズ

フェーズ 4:Kubernetes プローブの設定

アプリケーションの特性に基づいて、プローブのタイミングを決定します。

プローブの設定
パラメーターLivenessReadinessStartup
initialDelaySeconds1050
periodSeconds1055
timeoutSeconds533
failureThreshold3330
successThreshold111

Startup プローブの計算:

Max startup time = initialDelaySeconds + (periodSeconds × failureThreshold)
Default: 0 + (5 × 30) = 150 seconds

フェーズ 5:実装の生成

.NET の出力ファイル
ファイル目的
Extensions/HealthCheckExtensions.csヘルスチェックの登録
HealthChecks/StartupHealthCheck.csカスタム起動チェック

生成手順:

  1. 現行の ASP.NET Core ヘルスチェック API について、MCP ref を使用します
  2. 次の内容を含む HealthCheckExtensions を生成します。
    • AddHealthChecks の登録
    • データベースのヘルスチェック(検出された場合)
    • Redis のヘルスチェック(検出された場合)
    • カスタム StartupHealthCheck
  3. 適切なタグを設定して、3 つのエンドポイントを構成します

追加するパッケージ:

  • AspNetCore.HealthChecks.NpgSql(PostgreSQL の場合)
  • AspNetCore.HealthChecks.Redis(Redis の場合)
  • AspNetCore.HealthChecks.MySql(MySQL の場合)

登録コード:

builder.Services.AddHealthCheckServices(builder.Configuration);
// ...
app.MapHealthCheckEndpoints();
Python 出力ファイル
ファイル目的
routes/health.pyヘルスチェックルーター
services/health_checker.py依存関係のヘルスチェック

生成プロセス:

  1. FastAPI のヘルスチェックパターンについて MCP のリファレンスを使用します
  2. 次の機能を備えたヘルスチェックルーターを生成します:
    • /health/live エンドポイント(シンプル)
    • /health/ready エンドポイント(依存関係のチェック付き)
    • /health/startup エンドポイント
  3. 依存関係を検証する health_checker サービスを生成します

登録コード:

from routes.health import health_router
app.include_router(health_router)
Kubernetes マニフェストのスニペット

deployment.yaml に含めるために生成します:

livenessProbe:
  httpGet:
    path: /health/live
    port: 5000
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 3

readinessProbe:
  httpGet:
    path: /health/ready
    port: 5000
  initialDelaySeconds: 5
  periodSeconds: 5
  timeoutSeconds: 3
  failureThreshold: 3

startupProbe:
  httpGet:
    path: /health/startup
    port: 5000
  periodSeconds: 5
  failureThreshold: 30

フェーズ 6:検証

検証手順:

  1. 構文チェック:

    • .NET:dotnet build --no-restore
    • Python:python -m py_compile routes/health.py
  2. エンドポイントのテスト:

    curl http://localhost:5000/health/live
    curl http://localhost:5000/health/ready
    curl http://localhost:5000/health/startup
    
  3. レスポンス形式の確認:

    {
      "status": "Healthy",
      "checks": {
        "database": { "status": "Healthy", "duration": "00:00:00.0234" },
        "redis": { "status": "Healthy", "duration": "00:00:00.0012" }
      },
      "totalDuration": "00:00:00.0250"
    }
    
  4. 依存関係の障害テスト:

    • データベースを停止します
    • /health/ready が 503 を返すことを確認します
    • /health/live が引き続き 200 を返すことを確認します

コーディネーターに返す

{
  "status": "success",
  "files_created": [
    "Extensions/HealthCheckExtensions.cs",
    "HealthChecks/StartupHealthCheck.cs"
  ],
  "packages_added": [
    "AspNetCore.HealthChecks.NpgSql"
  ],
  "registration_code": "builder.Services.AddHealthCheckServices(configuration);",
  "message": "Configured health checks with liveness, readiness, and startup probes"
}

参考リンク


重要なルール

  • 3 つの独立したエンドポイント — Kubernetes のベストプラクティスに従い、/health/live、/health/ready、/health/startup を使用します
  • Liveness では依存関係をチェックしないでください — アプリが稼働していることだけを確認します(連鎖的な再起動を防ぎます)
  • Readiness ではすべての依存関係をチェックします — DB、Redis、RabbitMQ への接続を検証します
  • プロジェクトファイルから依存関係を自動検出します — csproj/requirements をスキャンし、既知のパッケージを特定します
  • べき等性 — AddHealthChecks/MapHealthChecks または /health ルートがすでに存在する場合は、status: "skipped" を返します

完了の定義

  • コンテキストストアを受信済み(スタック、プロジェクトルート)
  • 依存関係を検出済み(PostgreSQL、MySQL、Redis、RabbitMQ、MongoDB)
  • 検出されたスタック向けのヘルスチェックエンドポイント(live、ready、startup)を生成済み
  • 適切なタイミングパラメーターを設定した Kubernetes プローブのマニフェストスニペットを生成済み
  • 構文を検証済み(dotnet build または py_compile)
  • 構造化 JSON レスポンスを ln-770 コーディネーターに返却済み

バージョン: 2.0.0 最終更新日: 2026-01-10

コメント