跳到主要内容

健康检查

仓库有两类健康检查,职责不同:业务 Host 暴露自己的轻量探针;FreeKit.HealthChecks 是独立的聚合检查与 UI 项目。后者当前不在主 Compose 中,需要单独启动或另行加入部署编排。

入口一览

宿主本地监听路由说明
FreeKit.HostHTTPS 7000 / HTTP 5000/health主业务 API 自身探针
FreeKit.Host + /kit_api PathBase同上/kit_api/health主 Compose 的公开路径
FreeKit.HealthChecksHTTPS 5005 / HTTP 5004/healthMySQL、Redis、RabbitMQ 聚合结果
FreeKit.HealthChecks同上/health-mysqlmysql_check
FreeKit.HealthChecks同上/health-redisredis_check
FreeKit.HealthChecks同上/health-rabbitmqrabbitmq 标签
FreeKit.HealthChecks同上/healthchecks-uiHealthChecks UI 默认页面

主 Host 的 Program.cs 只映射 /health,PathBase 由 ASPNETCORE_PATHBASE 前置;聚合 UI 只属于独立 HealthChecks 项目。

启动独立 UI

dotnet run \
--project src/Services/Host/FreeKit.HealthChecks/FreeKit.HealthChecks \
--launch-profile FreeKit.HealthChecks-dev

启动后访问:

  • UI:https://localhost:5005/healthchecks-ui#/healthchecks
  • 聚合探针:https://localhost:5005/health
  • HTTP 调试入口:http://localhost:5004/health

依赖检查配置

独立项目直接从 ConnectionStrings 注册三种检查。示例中的凭据均为占位符:

{
"ConnectionStrings": {
"MySql": "Data Source=localhost;Port=3306;User ID=<DB_USER>;Password=<DB_PASSWORD>;Initial Catalog=freekit;Charset=utf8mb4;SslMode=none;",
"Redis": "localhost:6379,password=<REDIS_PASSWORD>,defaultDatabase=0",
"RabbitMQ": "amqp://<RABBITMQ_USER>:<RABBITMQ_PASSWORD>@localhost:5672"
},
"HealthChecksUI": {
"HealthChecks": [
{ "Name": "self", "Uri": "/health" },
{ "Name": "mysql", "Uri": "/health-mysql" },
{ "Name": "redis", "Uri": "/health-redis" },
{ "Name": "rabbitmq", "Uri": "/health-rabbitmq" },
{ "Name": "kit-api", "Uri": "https://localhost:7000/kit_api/health" }
],
"EvaluationTimeInSeconds": 10,
"MinimumSecondsBetweenFailureNotifications": 60
}
}

相对 URI 由 HealthChecks UI 请求自身端点。监控其他宿主时应填写该宿主在当前网络命名空间内可访问的地址;容器内不要使用 localhost 指代另一个容器。

当前配置漂移

appsettings.Development.json 仍包含以下历史目标:

  • https://localhost:7000/health:只有主 Host 未设置 PathBase 时才成立;主 Compose 应使用 /kit_api/health
  • https://localhost:5003/healthhealth-shorturlapi:不对应当前主 Compose 中的服务。

这些值是待校正配置,不应视为可靠现状。部署前应按实际 Host、PathBase、容器服务名和端口重写 HealthChecksUI:HealthChecks

与 Compose 的关系

build/compose/freekit_pro_modules/docker-compose.yml 当前包含 MySQL、Redis、RabbitMQ、MeiliSearch、hostjobmessage,没有 FreeKit.HealthChecks 服务。因此:

  1. 启动主 Compose 不会自动得到 HealthChecks UI;
  2. 业务 Host 的 /health 仍然存在,可直接交给 Docker、Kubernetes 或外部监控探测;
  3. 若要部署聚合 UI,需要显式添加服务、网络、连接串和访问控制。

:::warning 不要公开无保护的运维面 HealthChecks UI 和详细 JSON 会暴露依赖名称、状态与异常信息。生产环境应放在内网或通过反向代理鉴权,不要直接公开到互联网。 :::

源码定位

  • src/Services/Host/FreeKit.HealthChecks/FreeKit.HealthChecks/Program.cs:四个 /health* 路由与 UI 映射
  • src/Services/Host/FreeKit.HealthChecks/FreeKit.HealthChecks/Properties/launchSettings.json:5005 / 5004
  • src/Services/Host/FreeKit.HealthChecks/FreeKit.HealthChecks/appsettings.Development.json:UI 监控目标
  • src/Services/Host/FreeKit.Host/Program.cs:主 Host /health
  • build/compose/freekit_pro_modules/docker-compose.yml:当前主 Compose 服务清单与 /kit_api PathBase

相关文档