CtrlK
BlogDocsLog inGet started
Tessl Logo

health-check-endpoints

Health check endpoints for liveness, readiness, dependency monitoring. Use for Kubernetes, load balancers, auto-scaling, or encountering probe failures, startup delays, dependency checks, timeout configuration errors.

95

1.33x
Quality

93%

Does it follow best practices?

Impact

95%

1.33x

Average score across 3 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

SKILL.md
Quality
Evals
Security

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
Repository
secondsky/claude-skills
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.