关于 health-check-endpoints
面向服务开发者的健康检查端点实现指南,说明如何区分存活、就绪、启动和深度检查,并提供 Express 与 Kubernetes 示例。
主要功能
- 01区分四类探针用途
- 02检查关键依赖及延迟
- 03提供 Express 实现示例
- 04配置 Kubernetes 探针
- 05给出健康检查实践建议
适用场景
- 01为容器配置存活与就绪探针
- 02检查数据库等关键依赖状态
- 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