データベースヘルスチェックコンポーネント設計

PostgreSQL、MySQL、またはMongoDBのコネクションプールステータス、クエリレイテンシ、レプリケーションラグを検証するデータベースヘルスチェックコンポーネントを設計します。

Component Checks

詳細な説明

データベースヘルスチェック

データベースヘルスチェックは、ヘルスチェックエンドポイントで最も重要なコンポーネントです。データベースの障害は通常、サービスが機能できないことを意味します。

レスポンスコンポーネント

{
  "database": {
    "status": "UP",
    "duration": "12ms",
    "message": "PostgreSQL connection pool active",
    "details": {
      "type": "postgresql",
      "poolSize": 20,
      "activeConnections": 5,
      "idleConnections": 15
    }
  }
}

チェック項目

  1. 接続可用性: プールからコネクションを取得できるか?
  2. クエリ実行: シンプルなSELECT 1クエリを実行
  3. レイテンシ: 応答時間が許容範囲内か?
  4. プール状態: コネクションが適切に作成・リサイクルされているか?
  5. レプリケーションラグ: リードレプリカのデータが十分に最新か?

実装パターン

async function checkDatabase() {
  const start = Date.now();
  try {
    await pool.query('SELECT 1');
    const duration = Date.now() - start;
    return {
      status: duration < 100 ? 'UP' : 'DEGRADED',
      duration: `${duration}ms`,
      message: `Query completed in ${duration}ms`
    };
  } catch (error) {
    return {
      status: 'DOWN',
      duration: `${Date.now() - start}ms`,
      message: error.message
    };
  }
}

しきい値ガイドライン

メトリクス 健全 劣化 異常
クエリレイテンシ < 50ms 50-500ms > 500ms
プール使用率 < 70% 70-90% > 90%
レプリケーションラグ < 1秒 1-10秒 > 10秒

ユースケース

リレーショナルまたはドキュメントデータベースに依存するサービス。特にクライアントリクエストが失敗する前にデータベース障害を検出する必要があるマイクロサービス。

試してみる — Health Check Endpoint Designer

フルツールを開く