mcpField
S
serverpod-health-checks

serverpod-health-checks

github.com/serverpod云与 DevOps3.3k43 次安装1 天前更新
代码仓库

关于 serverpod-health-checks

用于为 Serverpod 主 API 服务器添加 HTTP 健康检查端点的技能,介绍存活、就绪和启动检查,以及内置依赖指标、自定义指标和探针响应。

主要功能

  1. 01提供 /livez、/readyz 和 /startupz 端点
  2. 02检查启动、数据库和 Redis 指标
  3. 03添加自定义健康指标
  4. 04配置指标超时和结果缓存
  5. 05返回纯状态码或经认证的 JSON 详情

适用场景

  1. 01配置 Kubernetes 存活探针
  2. 02在处理流量前检查依赖就绪状态
  3. 03报告服务器启动完成状态
  4. 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