mcpField
H
health-check-endpoints

health-check-endpoints

github.com/secondskyCloud & DevOps240413 installsUpdated 5w ago
Repository

About health-check-endpoints

A guide for service developers implementing health-check endpoints. It distinguishes liveness, readiness, startup, and deep probes, with Express and Kubernetes examples.

Key features

  1. 01Distinguish four probe types
  2. 02Check critical dependencies and latency
  3. 03Provide an Express implementation example
  4. 04Configure Kubernetes probes
  5. 05Outline health-check practices

Use cases

  1. 01Configure liveness and readiness probes for containers
  2. 02Check the status of critical dependencies such as databases
  3. 03Monitor service availability and trigger alerts

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/secondsky/claude-skills --skill health-check-endpoints

After installing, type/health-check-endpointsin Claude Code to confirm it loaded.

Bundled filesreferences/implementations.md

Details

From the project README

Health Check Endpoints

Implement health checks for monitoring service availability and readiness.

Probe Types

ProbePurposeFailure Action
LivenessIs process alive?Restart container
ReadinessCan handle traffic?Remove from LB
StartupHas app started?Delay other probes
DeepAll deps healthy?Trigger alerts

Implementation (Express)

class HealthChecker {
  async checkDatabase() {
    const start = Date.now();
    try {
      await db.query('SELECT 1');
      return { status: 'healthy', latency: Date.now() - start };
    } catch (err) {
      return { status: 'unhealthy', error: String(err?.message || err) };
    }
  }

  async checkRedis() {
    try {
      await redis.ping();
      return { status: 'healthy' };
    } catch (err) {
      return { status: 'unhealthy', error: err.message };
    }
  }

  async getReadiness() {
    const checks = await Promise.all([
      this.checkDatabase(),
      this.checkRedis()
    ]);
    const healthy = checks.every(c => c.status === 'healthy');
    return { healthy, checks };
  }
}

// Liveness - lightweight
app.get('/health/live', (req, res) => {
  res.json({ status: 'ok', timestamp: new Date().toISOString() });
});

// Readiness - check dependencies
app.get('/health/ready', async (req, res) => {
  const health = await healthChecker.getReadiness();
  res.status(health.healthy ? 200 : 503).json(health);
});

Kubernetes Configuration

livenessProbe:
  httpGet:
    path: /health/live
    port: 3000
  initialDelaySeconds: 15
  periodSeconds: 10
  failureThreshold: 3

readinessProbe:
  httpGet:
    path: /health/ready
    port: 3000
  initialDelaySeconds: 5
  periodSeconds: 10

Best Practices

  • Keep liveness checks minimal (no external deps)
  • Check only critical systems in readiness
  • Return 200 for healthy, 503 for unhealthy
  • Set reasonable timeouts to prevent cascading failures
  • Include response time metrics

Additional Implementations

See references/implementations.md for:

  • Python Flask complete health checker
  • Java Spring Boot Actuator
  • Full Kubernetes deployment config

Never Do

  • Make liveness depend on external services
  • Return 200 when dependencies are down
  • Skip dependency checks in readiness

Comments

Markdown supported