Files
vdi-cloud/docs/cloud-gpu-health-exclusive-logs-20261112.md
T

1.9 KiB

GPU 健康、独占资源与终端日志归档

已实现

  • GET /api/v1/resources/gpus?node=... 在每个 GPU 上返回 health:PVE PCI 清单中的驱动字段、驱动绑定状态、来源和采集时间。标准 PVE PCI 接口没有温度、利用率、显存指标;配置 VDI_GPU_AGENT_TOKEN 后,节点采集器通过 POST /api/v1/gpu-agent/health 上报近 10 分钟的真实指标,页面才显示 status=collected,没有上报时保持 not_collected。
  • GET /api/v1/resources/gpu-exclusive?node=... 提供独占组分配前检查:advisory lock、成员完整性、PVE 实际电源、活跃终端会话、未完成任务、冲突原因、allocationReady 和 releaseReady。接口只读,不会关机、切换显卡或重放任务。
  • 终端成功回传 collect-logs 后,日志写入 terminal_log_archives;终端正常运行时可通过设备令牌调用 POST /api/v1/terminal/logs 持续上报小批量事件,写入 terminal_log_entries。两类记录在 GET /api/v1/terminal-logs 统一检索,均按终端和时间建立索引、保留 30 天并执行脱敏。
  • 高级版 GPU 页面显示健康状态、驱动绑定、独占资源冲突和释放条件;日志与诊断页面增加持续归档检索区。

真实边界

温度、利用率和显存需要节点采集代理或厂商工具接入,当前 API 明确显示“未采集”。独占资源的释放状态只代表平台检查条件满足,实际 GPU 切换仍走既有终端准备任务和核对流程。

验证

  • docker run --rm -v "${PWD}:/src" -w /src/platform golang:1.27-alpine sh -c 'go test ./...' 通过。
  • npm run typecheck 和生产构建通过。
  • 真实控制台 http://127.0.0.1:5182 已重新部署;root 登录后真实读取独占组和 PVE GPU 清单,健康字段显示 not_collected,独占组正确报告 VM 101 正在运行导致不可分配。