用途
dotnet-health-checks 用于为 .NET 应用配置健康检查,监控应用依赖项的状态。它覆盖以下检查类型:
- 存活(Liveness):应用是否正在运行。
- 就绪(Readiness):应用是否已准备好接收流量。
- 数据库检查:PostgreSQL 连通性。
- 外部服务检查:API、缓存、队列。
- 自定义检查:业务逻辑校验。
主要能力
技能提供注册各类检查的映射方式,包括:
AddNpgSql:PostgreSQL 数据库检查。AddUrlGroup:外部 HTTP 端点检查。AddRedis:Redis 缓存检查。AddRabbitMQ:RabbitMQ 消息代理检查。AddCheck<T>:应用特定的自定义检查。
每种检查可配置名称、失败状态(如 Unhealthy、Degraded)和标签(如 db、sql、postgresql、ready),标签用于在端点映射时进行过滤。
使用方式
技能提供多段模板代码:
- 健康检查注册(HealthCheckExtensions.cs):通过
AddHealthChecks()链式注册数据库、外部服务、Redis(注释示例)和自定义检查,返回 IServiceCollection。 - 自定义健康检查(DatabaseMigrationHealthCheck.cs):实现
IHealthCheck接口,在CheckHealthAsync中调用GetPendingMigrationsAsync检查待应用迁移,存在待迁移时返回 Degraded,全部应用时返回 Healthy,异常时返回 Unhealthy,并通过 data 字典返回待迁移数量和迁移列表。 - Program.cs 配置:通过
MapHealthChecks暴露三个端点:/health/live:Predicate = _ => false,不执行检查,仅确认应用运行。/health/ready:Predicate = check => check.Tags.Contains("ready"),过滤就绪标签的检查。/health:执行全部健康检查。 三个端点均使用UIResponseWriter.WriteHealthCheckUIResponse作为响应写入器。
- 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(认证服务健康检查)。