# Health Check Endpoints

> Implement comprehensive health check endpoints for liveness, readiness, and dependency monitoring.

Implement comprehensive health check endpoints for liveness, readiness, and dependency monitoring. Use when deploying to Kubernetes, implementing load balancer health checks, or monitoring service availability.

- Page: https://ss33.ai/skills/aj-geddes/health-check-endpoints-71508142323
- Publisher: aj-geddes
- Category: [Software Development](https://ss33.ai/skills/category/software-development-t44z8z) › [DevOps & cloud](https://ss33.ai/skills/category/software-development-t44z8z/devops-and-cloud-unkt50)
- License: MIT
- Source: https://github.com/aj-geddes/useful-ai-prompts/blob/3f5182cfd739fc113f4af5244a1cf342ad7f7911/skills/health-check-endpoints/SKILL.md

## Skill

SKILL.md: https://ss33.ai/api/v1/ss33/download/aj-geddes/health-check-endpoints-71508142323

# Health Check Endpoints

## Table of Contents

- [Overview](#overview)
- [When to Use](#when-to-use)
- [Quick Start](#quick-start)
- [Reference Guides](#reference-guides)
- [Best Practices](#best-practices)

## Overview

Implement health check endpoints to monitor service health, dependencies, and readiness for traffic.

## When to Use

- Kubernetes liveness and readiness probes
- Load balancer health checks
- Service discovery and registration
- Monitoring and alerting systems
- Circuit breaker decisions
- Auto-scaling triggers
- Deployment verification

## Quick Start

Minimal working example:

```typescript
import express from "express";
import { Pool } from "pg";
import Redis from "ioredis";

interface HealthStatus {
  status: "healthy" | "degraded" | "unhealthy";
  timestamp: string;
  uptime: number;
  checks: Record<string, CheckResult>;
  version?: string;
  environment?: string;
}

interface CheckResult {
  status: "pass" | "fail" | "warn";
  time: number;
  output?: string;
  error?: string;
}

class HealthCheckService {
  private startTime = Date.now();
  private version = process.env.APP_VERSION || "1.0.0";
  private environment = process.env.NODE_ENV || "development";

// ... (see reference guides for full implementation)
```

## Reference Guides

Detailed implementations in the `references/` directory:

| Guide | Contents |
|---|---|
| [Express.js Health Checks](references/expressjs-health-checks.md) | Express.js Health Checks |
| [Spring Boot Actuator-Style (Java)](references/spring-boot-actuator-style-java.md) | Spring Boot Actuator-Style (Java) |
| [Python Flask Health Checks](references/python-flask-health-checks.md) | Python Flask Health Checks |

## Best Practices

### ✅ DO

- Implement separate liveness and readiness probes
- Keep liveness probes lightweight
- Check critical dependencies in readiness
- Return appropriate HTTP status codes
- Include response time metrics
- Set reasonable timeouts
- Cache health check results briefly
- Include version and environment info
- Monitor health check failures

### ❌ DON'T

- Make liveness probes check dependencies
- Return 200 for failed health checks
- Take too long to respond
- Skip important dependency checks
- Expose sensitive information
- Ignore health check failures
