mcpField
H
health-check-endpoints

health-check-endpoints

github.com/secondsky云与 DevOps240413 次安装5 周前更新
代码仓库

关于 health-check-endpoints

面向服务开发者的健康检查端点实现指南,说明如何区分存活、就绪、启动和深度检查,并提供 Express 与 Kubernetes 示例。

主要功能

  1. 01区分四类探针用途
  2. 02检查关键依赖及延迟
  3. 03提供 Express 实现示例
  4. 04配置 Kubernetes 探针
  5. 05给出健康检查实践建议

适用场景

  1. 01为容器配置存活与就绪探针
  2. 02检查数据库等关键依赖状态
  3. 03监控服务可用性并触发告警

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/health-check-endpoints确认已加载。

附带文件references/implementations.md

详细介绍

健康检查端点

实现健康检查,用于监控服务的可用性和就绪状态。

探针类型

探针用途失败时的操作
存活性进程是否存活?重启容器
就绪性是否可以处理流量?从负载均衡器中移除
启动应用是否已启动?延迟其他探针
深度检查所有依赖项是否健康?触发警报

实现(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 配置

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

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

最佳实践

  • 保持存活性检查精简(不依赖外部服务)
  • 就绪性检查只检查关键系统
  • 健康时返回 200,不健康时返回 503
  • 设置合理的超时时间,防止故障级联
  • 包含响应时间指标

其他实现

参见 references/implementations.md,了解以下内容:

  • 完整的 Python Flask 健康检查器
  • Java Spring Boot Actuator
  • 完整的 Kubernetes 部署配置

切勿这样做

  • 让存活性检查依赖外部服务
  • 依赖项不可用时仍返回 200
  • 在就绪性检查中跳过依赖项检查

评论

支持 Markdown