关于 serverpod-health-checks
用于为 Serverpod 主 API 服务器添加 HTTP 健康检查端点的技能,介绍存活、就绪和启动检查,以及内置依赖指标、自定义指标和探针响应。
主要功能
- 01提供 /livez、/readyz 和 /startupz 端点
- 02检查启动、数据库和 Redis 指标
- 03添加自定义健康指标
- 04配置指标超时和结果缓存
- 05返回纯状态码或经认证的 JSON 详情
适用场景
- 01配置 Kubernetes 存活探针
- 02在处理流量前检查依赖就绪状态
- 03报告服务器启动完成状态
- 04将自定义服务纳入就绪检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ serverpod/ serverpod --skill serverpod-health-checks安装后在 Claude Code 中输入/serverpod-health-checks确认已加载。
详细介绍
Serverpod 健康检查
主 API 服务(默认端口为 8080)上的 Kubernetes 风格 HTTP 健康检查端点,不在可选的 Web 服务(默认端口为 8082)上。无需身份验证:仅返回 HTTP 状态码(200/503)。经过身份验证的请求会通过服务的常规身份验证处理程序,获取详细的 JSON(RFC 健康检查响应格式)。
端点
/livez— 进程是否存活?不会检查 DB/Redis。用于存活探针。/readyz— 依赖项是否健康?如果不健康则返回 503。用于就绪探针。/startupz— 服务是否已完成初始化?用于启动探针。
内置指标
- ServerpodStartupIndicator — 启动已完成
- DatabaseHealthIndicator — 已配置的数据库(如果已启用)
- RedisHealthIndicator — Redis(如果已启用)
自定义健康指标
class StripeApiIndicator extends HealthIndicator<double> {
@override String get name => 'stripe:api';
@override String get componentType => HealthComponentType.component.name;
@override String get observedUnit => 'ms';
@override Duration get timeout => const Duration(seconds: 3);
@override
Future<HealthCheckResult> check() async {
final sw = Stopwatch()..start();
try {
await stripeClient.ping();
return pass(observedValue: sw.elapsedMilliseconds.toDouble());
} catch (e) {
return fail(output: 'Stripe unavailable: $e');
}
}
}
注册
final pod = Serverpod(
args,
healthConfig: HealthConfig(
cacheTtl: Duration(seconds: 2), // default is 1 second
additionalReadinessIndicators: [StripeApiIndicator()],
additionalStartupIndicators: [CacheWarmupIndicator()],
),
);
每个指标都可以覆盖 timeout(默认值为 5s)。cacheTtl 会缓存结果,以减少频繁探测时的负载。Serverpod 还提供旧版 GET / 健康检查响应,其约定更简单且不同;Kubernetes 探针请使用 /livez、/readyz 和 /startupz。
评论
支持 Markdown