health-checks

nexus-labs-automation's avatarfrom nexus-labs-automation

Implement liveness, readiness, and dependency health checks

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 26, 2025

When & Why to Use This Skill

This Claude skill provides a comprehensive framework for implementing robust health check mechanisms, including liveness, readiness, and startup probes. It helps developers ensure high availability and system reliability in containerized environments like Kubernetes by establishing clear standards for process responsiveness and dependency management, effectively preventing cascading failures.

Use Cases

  • Kubernetes Probe Configuration: Setting up liveness and readiness probes to ensure pods are automatically restarted when unresponsive or removed from load balancers when dependencies fail.
  • Dependency Health Management: Implementing logic to verify critical dependencies like databases and caches before a service signals readiness to handle traffic.
  • Microservice Reliability: Designing standardized health check endpoints that provide detailed diagnostic information in a consistent JSON format for monitoring tools.
  • System Stability: Applying best practices to avoid common anti-patterns, such as preventing liveness probes from checking external dependencies to avoid unnecessary service-wide restarts.
namehealth-checks
description"Implement liveness, readiness, and dependency health checks"
priority1

Health Checks

Different checks serve different purposes. Don't conflate them.

Check Types

Endpoint Purpose On Failure Should Check
/health/live Process alive? K8s restarts pod Only process responsiveness
/health/ready Can handle traffic? K8s removes from LB DB, cache, critical deps
/health/startup Init complete? K8s waits Initialization status

Liveness (Simple)

Return 200 OK immediately. Never check dependencies.

Checking DB in liveness = pod restarts when DB is down = cascading failure.

Readiness (Dependency Checks)

For each dependency:
  → Check with timeout (1-2s)
  → Record healthy/unhealthy status
Return 503 if any critical dependency unhealthy

Response Format

{
  "status": "healthy|unhealthy",
  "version": "1.2.3",
  "dependencies": {
    "database": "healthy",
    "cache": "unhealthy: connection refused"
  }
}

Kubernetes Config

livenessProbe:
  httpGet: { path: /health/live, port: 8080 }
  periodSeconds: 10
  failureThreshold: 3

readinessProbe:
  httpGet: { path: /health/ready, port: 8080 }
  periodSeconds: 5
  failureThreshold: 3

startupProbe:
  httpGet: { path: /health/startup, port: 8080 }
  periodSeconds: 5
  failureThreshold: 30  # 150s max startup

Anti-Patterns

  • Liveness checks dependencies → Cascading restarts
  • No timeout on checks → Health endpoint hangs
  • No caching → Thundering herd on health endpoints

References

  • references/platforms/{platform}/health-checks.md