SuperAPI AI 工具集

dotnet-health-checks

部署与运维

查看项目

更新于 10-16 02:10

技能介绍

用途

dotnet-health-checks 用于为 .NET 应用配置健康检查,监控应用依赖项的状态。它覆盖以下检查类型:

  • 存活(Liveness):应用是否正在运行。
  • 就绪(Readiness):应用是否已准备好接收流量。
  • 数据库检查:PostgreSQL 连通性。
  • 外部服务检查:API、缓存、队列。
  • 自定义检查:业务逻辑校验。

主要能力

技能提供注册各类检查的映射方式,包括:

  • AddNpgSql:PostgreSQL 数据库检查。
  • AddUrlGroup:外部 HTTP 端点检查。
  • AddRedis:Redis 缓存检查。
  • AddRabbitMQ:RabbitMQ 消息代理检查。
  • AddCheck<T>:应用特定的自定义检查。

每种检查可配置名称、失败状态(如 Unhealthy、Degraded)和标签(如 db、sql、postgresql、ready),标签用于在端点映射时进行过滤。

使用方式

技能提供多段模板代码:

  1. 健康检查注册(HealthCheckExtensions.cs):通过 AddHealthChecks() 链式注册数据库、外部服务、Redis(注释示例)和自定义检查,返回 IServiceCollection。
  2. 自定义健康检查(DatabaseMigrationHealthCheck.cs):实现 IHealthCheck 接口,在 CheckHealthAsync 中调用 GetPendingMigrationsAsync 检查待应用迁移,存在待迁移时返回 Degraded,全部应用时返回 Healthy,异常时返回 Unhealthy,并通过 data 字典返回待迁移数量和迁移列表。
  3. Program.cs 配置:通过 MapHealthChecks 暴露三个端点:
    • /health/live:Predicate = _ => false,不执行检查,仅确认应用运行。
    • /health/ready:Predicate = check => check.Tags.Contains("ready"),过滤就绪标签的检查。
    • /health:执行全部健康检查。 三个端点均使用 UIResponseWriter.WriteHealthCheckUIResponse 作为响应写入器。
  4. Kubernetes 配置:在 deployment.yaml 中为容器配置 livenessProbe(路径 /health/live,端口 8080,initialDelaySeconds 10,periodSeconds 30)和 readinessProbe(路径 /health/ready,端口 8080,initialDelaySeconds 5,periodSeconds 10)。

适用场景

  • 需要为 .NET 应用添加健康检查端点。
  • 使用 Kubernetes 等容器编排系统,需要配置存活和就绪探针。
  • 需要监控 PostgreSQL、外部 HTTP 服务、Redis、RabbitMQ 等依赖。
  • 需要在健康检查中校验业务逻辑(如数据库迁移状态)。

限制

资料中未提供该技能的安装命令、版本要求、支持框架版本、收费或价格信息。代码示例中的 Redis 检查部分被注释,需自行按需启用。相关技能包括 dotnet-clean-architecture(基础设施层设置)和 dotnet-jwt-authentication(认证服务健康检查)。