Zentrix Gateway 文档

12. 故障排查与提交支持

POC 部署手册章节。按 2026.10 主线代码核对;命令输出以当次交付的安装器为准。

返回概览 · 完整版目录 · 下载完整 PDF

本章内容:本章是出现问题时的处理顺序:先自己确认最常见的三类原因,再一次性采集排查信息,然后按安装阶段、诊断代码、装后访问与调用三种场景对照处理;仍无法解决时,按 12.6 节准备材料提交支持。读者是客户方系统管理员与实施工程师。本章所有采集命令都是只读的,可以放心执行。

12.1 先自己确认三件事

适用场景:调用方反馈「调不通」「被拒绝」「突然不能用了」,但平台服务本身运行正常。

这类反馈里,大部分不是故障,而是平台按配置做出的拒绝。拒绝的结论写在两个地方,不需要查日志:

  • 调用方收到的错误响应体里的 reason 字段(OpenAI、Anthropic 协议的错误体还带 request_id,与响应头 x-request-id 相同);
  • 控制台「网关请求」中按 x-request-id 查到的这次调用记录。

操作步骤

  1. 向调用方要这次调用的 x-request-id,以及响应体中的 reason。
  2. 在控制台「网关请求」中按 x-request-id 查到这次调用,核对调用人、模型与结果。
  3. 按下表判断属于哪一类,并按「去哪里确认」核对配置。
类别典型 reason(HTTP 状态)去哪里确认
:--:--:--
权限与范围MODEL_NOT_AVAILABLE_FOR_WORKSPACE(403)、PERMISSION_DENIED(403)、LLM_MODEL_NOT_AVAILABLE(404)、UNAUTHENTICATED / ACCESS_KEY_REVOKED(401)模型分组的「可用范围与配额」是否包含该成员;调用使用的模型名是否在该服务内;API 密钥是否为该成员本人创建且未禁用
额度QUOTA_EXCEEDED(429)、USER_TOKEN_EXCEEDED / USER_COST_EXCEEDED(429)、MODEL_SERVICE_QUOTA_HARD_REJECT(429)、MONTHLY_TOKEN_EXCEEDED / INSUFFICIENT_CREDITS(402)模型分组「可用范围与配额」中该成员或该服务的额度是否已用完;租户额度是否已用完
规则拦截CONTENT_POLICY_BLOCKED(403)、DATA_FENCE_BLOCKED(403)、NETWORK_NOT_ALLOWED(403)、TRAFFIC_RATE_LIMITED / TRAFFIC_CONCURRENCY_LIMITED(429)流量规则中命中的规则(内容安全、数据边界、来源网段、限流与并发)

你会看到

  • 属于这三类时,平台服务状态正常,同一成员换一个在范围内、额度未用完、不触发规则的请求可以成功。
  • 处理方式是调整配置(加入范围、调整额度、修改规则)或让调用方修改请求,不需要重启任何服务。

注意:这三类拒绝都会留下调用记录。如果「网关请求」里按 x-request-id 完全查不到这次调用,说明请求没有到达网关(地址错、网络不通、前置设备拦截),按 12.5 节排查。

12.2 一次性采集信息

适用场景:12.1 节无法解释的问题,或任何需要提交支持的问题。先采集,再动手处理——重启服务之后,部分现场信息就不在了。

操作步骤

  1. 在安装主机上执行下面四条命令。四条都是只读的,不改变任何服务状态。
# 安装主机 · root · 只读(采集排查信息,输出写到暂存目录)
sudo zenova status --json > /root/zenova-install/status.json
sudo zenova doctor --all --save /root/zenova-install/doctor
sudo zenova logs control-plane --since '30 min ago' > /root/zenova-install/control-plane.log
sudo cp /opt/zenova/state/install.log /root/zenova-install/
  1. 问题发生时间早于 30 分钟前时,把 --since 改为覆盖问题发生时刻的时间,例如 '2 hours ago'。--since 的值原样传给 journalctl。
  2. 问题涉及某个外部地址(模型供应商、通知渠道、对象存储)的连通性时,补充一次定向体检:
# 安装主机 · root · 只读(对指定地址分层检查 DNS、TCP、TLS、HTTP)
sudo zenova doctor --target <目标地址>
命令产出用途
:--:--:--
zenova status --json各服务状态、当前版本、各实例、进行中与最近一次升级判断哪个服务没在运行、当前是什么版本、是否卡在升级中
zenova doctor --all --save <目录>全量本机与连通性体检报告,含诊断代码与处理建议一次性列出所有阻断项与警告项;退出码 0 表示没有阻断项,2 表示有阻断项
zenova logs control-plane --since <时间>控制面在指定时间段内的日志定位控制台报错、配置下发、数据库访问类问题
cp /opt/zenova/state/install.log安装与升级过程日志定位安装、升级、清空重装阶段的失败

你会看到

  • status.json、doctor/ 目录、control-plane.log、install.log 四份材料出现在 /root/zenova-install/ 下。
  • zenova doctor --target 的报告注明「直连,可能与生产出口不一致」时,结果只代表本机直连该地址的情况,不代表网关实际出口(例如经出口代理)的连通性。

注意:zenova status 只列 zenova- 开头的服务。postgres、clickhouse、caddy、secret-service、spicedb 用 systemctl status <名称> 查看。远端网关节点上的问题,在节点主机上执行 sudo zenova status、sudo zenova logs node-edge、sudo zenova logs node-caddy 采集。

注意:以上材料可能包含内部地址、账号名与请求内容片段。对外提交前按 12.6 节脱敏。不要采集或提交 /opt/zenova/.env、/etc/zenova/secret-service/、/opt/zenova/.env.runtime/root-password-initial,这三处含主密钥、密钥服务材料与初始密码。

12.3 安装阶段失败对照表

适用场景:zenova install(含 --check-only 预检)在确认安装前后停止,屏幕给出提示。

安装器在确认安装之前不写任何文件、不创建任何服务。确认前停止的,处理原因后重新执行同一条命令即可,本机没有需要清理的东西。

操作步骤

  1. 按屏幕提示的原文在下表中查找。
  2. 按「处理」列处理后,重新执行原命令。
  3. 表中没有的,记下屏幕提示原文与诊断代码,查 12.4 节。
屏幕提示原因处理
:--:--:--
答案不合法:请用 sudo 运行安装器未以 root 执行加 sudo 重新执行
安装包无法读取或已损坏离线包不完整或路径写错核对文件路径;核对文件大小与下载站显示的一致;不一致时重新下载(离线包支持断点续传)
安装器版本 … 与离线包版本 … 不一致安装器与离线包不是同一版本用与离线包同一版本的安装器;两者应从下载站同一次选择中下载
安装包与安装程序不属于同一版本安装器与离线包分属不同产品用同一产品的安装器与离线包;核对离线包文件名中的产品字段
本机已安装…,该安装程序为…版本机已装另一个产品换用已装产品的安装包;确需更换产品按第 11 章清空重装
离线包不适用于本机的平台或部署形态系统或 CPU 架构与离线包不符用 uname -m 核对本机架构,下载对应平台的离线包
…不含「…」能力,请从 --with 中去掉指定了本产品不提供的能力从 --with 中去掉该能力;确需该能力时改选提供它的产品
内存不足:需要 8 GB,本机 N GB内存低于 8 GiB扩容内存后重新执行
磁盘空间不足:/opt/zenova 需要 N GB,剩余 M GB安装根所在卷可用空间不足扩容;或用 --install-dir <目录> 安装到提示中列出的候选挂载点;或把 PostgreSQL、ClickHouse、对象存储改用现有服务以减少本机占用
本机没有 systemd,无法托管服务主机不是 systemd 启动更换为 systemd 启动的 Linux 主机
[HOST_CLOCK_UNSYNCED]时间未同步或无法确认仅告警,继续安装;请自行核对主机时间,处理方法见 3.2 节
[HOST_CLOCK_SKEW]已测得与时间源偏差超过 30 秒按 3.2 节校准后重试

补充几种确认安装后才会出现的情况:

屏幕提示或现象原因处理
:--:--:--
入口监听端口被占用(HOST_ENTRY_PORT_BUSY)业务入口端口已被其他进程占用;安装停止,不自动更换停止占用进程;或修改访问地址里的端口;或用 --business-entry-port 指定前置转发到的本机端口
安装上级目录不可遍历、挂载点带 noexec、SELinux / fapolicyd / KYSEC 拦截执行服务用户 zenova 无法进入或执行安装根下的程序;这类拦截在解包后才能发现按 3.3 节处理,必要时由主机安全管理员添加放行策略
装后验收失败:未通过的检查:<验收项>(<依据>)某项装后验收未通过,安装不记为完成按括号中的依据处理后,重新执行同一条安装命令,从装后验收继续

你会看到

  • 处理后重跑,安装器从上次停下的位置继续:确认前停止的从头问答,确认后停止的沿用已有安装进度。

注意:--check-only 预检通过不代表正式安装一定通过。预检不包含业务入口端口检查、现有依赖检测、解包后的执行权限检查与通知测试,上面第二张表中的问题都可能在预检通过后才出现。

注意:不要删除 /opt/zenova/state/ 下的进度文件或手工删除目录来「重新开始」。需要从头安装时,使用第 11 章的清空重装。

12.4 诊断代码怎么读

适用场景:安装器、zenova doctor、装后验收、升级、清空重装、备份恢复的输出中带有形如 [HOST_DISK_LOW] 的代码。

诊断代码共 69 个,按前缀分为十组。代码是稳定的:同一个问题在不同版本、中英文界面下代码不变,可以直接把代码报给支持,不需要转述屏幕文字。完整列表与处理办法见产品文档站的「安装与运维诊断代码」页。

前缀数量范围
:--:--:--
HOST22主机条件:架构、内存、磁盘、时间、CPU 指令集、容器运行时、入口端口、目录权限、安全模块、root 权限
PKG6安装器与离线包:完整性、平台、版本、产品所含能力
FRESH6清空重装:外部数据、共享资源、归属证明、现场变化、参数
NODE6远端网关节点:已安装、注册、配置下发
ANS4安装答案与配置值:不合法、无法读取、续装不一致、产品已锁定
NET4网络:访问地址格式、依赖与通知渠道探测、目标连通性、管理面网段
UPD10本机升级服务:未安装或未启动、拒绝访问、应答超时、版本落后、操作状态损坏或无法读取
UPG3升级:升级前检查、节点未升级
SVC3本机服务:已完成安装、服务控制失败、无法确定本机安装
BAK5备份与恢复:被拒绝、备份文件摘要不符、数据库转储不可读、版本或形态与本机不一致

操作步骤

  1. 先看前缀,确定是哪一类问题。
  2. 再看代码后面的参数(如 path、have_gib、need_gib),它们给出了具体对象与数值。
  3. 按屏幕给出的处理建议或下表处理;仍不清楚时,把代码与完整输出一并提交支持。

常见代码举例:

代码含义处理
:--:--:--
HOST_DISK_LOW安装目录所在卷可用空间不足,安装已停止;输出列出候选挂载点用 --install-dir <目录> 安装到可用空间更大的卷,或清理磁盘后重试
HOST_CPU_FEATURESCPU 缺少本机部署 ClickHouse 所需的指令集虚拟机把 CPU 型号设为 host(x86-64-v3);或在安装问答中改用现有 ClickHouse
HOST_ENTRY_PORT_BUSY访问地址依赖的本机监听端口已被其他进程占用停止该进程,或修改访问地址里的端口,或加 --business-entry-port
PKG_INVALID无法读取或校验离线包确认文件为完整的 .zpkg 后重试
PKG_VERSION_MISMATCH安装器版本与离线包版本不一致使用与离线包同一版本的安装器
PKG_CAP_NOT_IN_EDITION所选产品不提供该能力从 --with 中移除该能力,或换用提供该能力的产品
FRESH_EXTERNAL_DATA清空重装检测到外部数据服务安装器不会删除外部数据库或对象存储;在计划文件中保持 remove = false
FRESH_OWNER_UNPROVEN部分对象无法自动证明由本安装创建交互模式逐项 y/N 确认,或导出计划文件审核后执行(第 11 章)
FRESH_STATE_CHANGED生成清空计划后现场已发生变化重新执行 --fresh --dry-run 生成最新计划文件
NET_PUBLIC_URL访问地址不是合法的 http/https 地址用 zenova config set PUBLIC_URL http://<IP或域名> 修正
NET_DEP_UNREACHABLE数据依赖或通知渠道探测未通过核对目标地址、网络连通性与访问凭据后重试
UPG_NODES_NOT_UPGRADED升级包缺少在线网关节点所需平台的节点包获取包含这些平台节点包的升级包后重新执行 zenova upgrade;网关节点由升级自动滚动,无需登录节点
SVC_ALREADY_INSTALLED本机已完成安装升级用 zenova upgrade;改配置用 --reconfigure;清空重装加 --fresh
NODE_ALREADY_INSTALLED本机已存在网关节点安装同一控制面升级加 --upgrade;换控制面或换令牌加 --reenroll --token <令牌>

注意:zenova doctor 有阻断项时退出码为 2,没有阻断项为 0,可以据此在巡检脚本中判断。警告项不影响退出码,但应记入交付记录。

12.5 装完之后访问与调用异常

控制台打不开

操作步骤

  1. 先用安装完成时打印的「本机直接访问」地址在内网打开控制台。它按管理入口实际端口拼出,不经前置转发。能打开,说明本机正常,问题在负载均衡、反向代理、NAT 或网络策略,转第 4 步。
  2. 「本机直接访问」也打不开时,在安装主机上查看服务状态:
# 安装主机 · root · 只读(查看各服务状态)
sudo zenova status
systemctl status caddy postgres clickhouse secret-service spicedb
  1. 对未运行的服务重启并查看日志:
# 安装主机 · root · 写入(重启指定服务)
sudo zenova restart <服务>
sudo zenova logs <组件> --since '10 min ago'
  1. 本机正常但外部访问不通:检查主机防火墙、云安全组与域名解析;使用了前置 TLS 或代理时,确认前置设备转发到的本机端口与安装时填写的一致。

你会看到

  • 重启后服务状态恢复为运行中,控制台可以打开。
  • 控制面不可用期间,网关节点仍按最近一次配置继续服务,已有业务调用不受影响。

注意:zenova restart 只接受 zenova- 开头的服务。控制面切换槽位的几秒内,内部入口返回 503 属于正常现象,入口代理会暂存新请求最长 5 秒。中心网关节点数据面(3080)就绪检查返回 503、原因为 no_tenant_routes,表示还没有租户或模型路由,创建租户并配置模型后恢复,不是故障。

调用返回错误

网关的三种协议入口(OpenAI、Anthropic、Gemini)在失败时都返回统一的错误信封,错误体中带稳定的 reason。HTTP 状态由 reason 决定,三种协议一致;响应头 x-should-retry 说明重试是否有意义。

同一个 HTTP 状态码下,reason 不同,处置完全不同。 只看状态码会走错方向:同样是 429,可能是成员额度用完(要调额度),也可能是上游供应商限流(稍后重试即可);同样是 503,可能是模型没配路由(要改配置),也可能是上游暂时不可用(稍后重试)。排查时一律以 reason 为准。

HTTP 状态reason含义谁来处理 · 是否可重试
:--:--:--:--
400LLM_REQUEST_BODY_INVALID / VALIDATION_FAILED请求体不合法调用方修改请求 · 否
400LLM_CONTEXT_OVERFLOW超出模型上下文长度调用方修改请求 · 否
401UNAUTHENTICATED未通过身份认证(未携带 API 密钥或密钥无效)调用方修改请求 · 否
401ACCESS_KEY_REVOKEDAPI 密钥已被吊销调用方换用有效密钥 · 否
402MONTHLY_TOKEN_EXCEEDED / INSUFFICIENT_CREDITS月度用量或余额不足管理员调整额度 · 否
403PERMISSION_DENIED无权访问管理员核对权限与可用范围 · 否
403MODEL_NOT_AVAILABLE_FOR_WORKSPACE该模型不在调用人的可用范围内管理员把成员加入包含该模型的模型分组的可用范围 · 否
403CONTENT_POLICY_BLOCKED请求内容被内容安全规则拦截调用方修改请求内容 · 否
403NETWORK_NOT_ALLOWED来源网段不被允许管理员核对网段策略 · 否
403CAPABILITY_NOT_LICENSED许可证未包含该能力租户管理员核对许可证 · 否
404LLM_MODEL_NOT_AVAILABLE请求的模型名不存在或不可用调用方改用可用的模型名 · 否
408REQUEST_TIMEOUT请求超时上游问题,稍后重试 · 是
429QUOTA_EXCEEDED / USER_TOKEN_EXCEEDED / USER_COST_EXCEEDED额度已用完管理员调整额度 · 否
429MODEL_SERVICE_QUOTA_HARD_REJECT模型分组配额硬拒绝管理员调整模型分组配额 · 否
429TRAFFIC_RATE_LIMITED / TRAFFIC_CONCURRENCY_LIMITED触发平台限流或并发上限管理员核对限流规则;稍后重试 · 是
429LLM_RATE_LIMITED上游供应商限流上游问题,稍后重试 · 是
502LLM_UPSTREAM_CREDENTIAL_REJECTED上游拒绝了平台保存的供应商凭据管理员更新模型供应商凭据 · 否
502LLM_UPSTREAM_MODEL_NOT_FOUND上游不存在该模型管理员核对供应商侧模型名 · 否
502LLM_BILLING_EXCEEDED上游账号额度耗尽管理员处理供应商账号额度 · 否
502LLM_UPSTREAM_SERVER_ERROR上游服务端错误上游问题,稍后重试 · 是
502LLM_UPSTREAM_CONNECT_FAILED / LLM_STREAM_INTERRUPTED与上游建连失败或流中断带同一幂等键重试 · 是
503MODEL_ROUTE_NOT_CONFIGURED / NO_MODEL_SERVICE_SELECTED模型路由未配置或当前工作空间没有可用的模型管理员检查模型分组与流量规则配置 · 否
503LLM_PROVIDER_UNAVAILABLE / LLM_OVERLOADED上游暂时不可用或过载上游问题,稍后重试 · 是
503CONTROL_PLANE_UNAVAILABLE / SERVICE_UNAVAILABLE平台服务暂时不可用管理员按本节「控制台打不开」排查 · 是
504LLM_TIMEOUT等待上游超时上游问题,稍后重试 · 是

你会看到

  • 「谁来处理」为调用方的,调用方修改请求后即可成功;为管理员的,重试不会改变结果,须调整配置;为上游的,重试可能成功。
  • 流式请求在已开始输出后失败时,网关发送一条与所选协议错误体同形的流内错误帧,随后正常结束流;已输出的内容与用量照常计费和展示,reason 同样按上表解读。

注意:上表只列出最常见的 reason。完整列表(含每个 reason 的 HTTP 状态、错误类型与是否可重试)见产品文档站「错误参考」页。上表没有的 reason,直接把 reason 原文与 x-request-id 一起提交支持。

注意:模型供应商测试或 zenova doctor --target 报告连通失败时,失败分为七类:dnsFailed(域名解析)、proxyConnectFailed(出口代理建连)、connectFailed(目标 TCP 建连)、tlsFailed(TLS 握手与证书)、timeout(超时)、ssrfBlocked(出站安全策略拦截)、invalidEndpointUrl(地址格式非法)。按分类找对应层的负责人,不要从头逐层排查。

12.6 提交支持需要准备什么

适用场景:按 12.1~12.5 节处理后问题仍在,需要交付方或供应商支持。

操作步骤

  1. 按 12.2 节采集四份材料。
  2. 按下表整理问题信息。能提供的尽量提供,没有的写「无」,不要留空让支持猜。
字段说明从哪里取
:--:--:--
发生时间与时区精确到分钟,注明时区(如 UTC+8)调用方日志或现场记录
请求 ID响应头 x-request-id,错误体中的 request_id 与其相同调用方响应;控制台「网关请求」
链路 ID调用记录中显示链路 ID 时一并提供控制台调用记录(以页面实际显示为准)
发起人调用所属成员的账号名控制台「网关请求」
接入凭据前缀API 密钥的前几位,用于区分是哪一把密钥控制台密钥列表;不要提供完整密钥
客户端 IP调用方出口地址调用方或控制台调用记录
声明模型与实际路由模型调用方请求里写的模型名,以及实际路由到的模型调用方请求;控制台调用记录
HTTP 状态码与错误码HTTP 状态、错误体中的 reason;安装与运维类问题提供诊断代码调用方响应;屏幕输出
复现步骤从哪台机器、用什么命令或界面操作、得到什么结果;能复现时附可执行的 curl(密钥用 <YOUR_API_KEY> 代替)现场整理
截图控制台报错页、「网关请求」记录详情、终端输出现场截取
  1. 对全部材料脱敏(见下)。
  2. 按以下顺序组织材料,打包提交:
顺序内容
:--:--
1一句话问题描述:现象、影响范围、开始时间
2环境信息:产品、完整版本号与通道、平台、已启用能力、数据依赖部署方式(安装器部署 / 现有服务)、是否有远端网关节点
3上表字段
4已经做过的排查与处理,以及结果
512.2 节采集的四份材料,及 zenova doctor --target 报告(如有)
6截图

你会看到

  • 材料齐全时,支持可以直接按请求 ID 与诊断代码定位,不需要来回追问。

注意:以下内容必须脱敏或不得提交:

内容处理
:--:--
API 密钥、模型供应商凭据、数据库口令、对象存储访问密钥只保留前缀,其余删除
root 密码与初始密码、两步验证恢复码不得提交
/opt/zenova/.env、/etc/zenova/secret-service/、/opt/zenova/.env.runtime/ 下的文件,密钥归档与平台备份导出文件不得提交;含主密钥与密钥服务材料
许可证文件内容不得提交;需要时只说明许可证状态
请求与响应正文中的业务数据、个人信息删除或替换为示例内容
内部 IP、域名、主机名按客户信息安全要求替换,替换前后保持一一对应,便于支持比对

注意:初始密码与任何凭据不得通过即时通讯、邮件或工单传递;截图与录屏前确认画面中没有密码、完整密钥与恢复码。

能力说明

不提供的能力替代做法
:--:--
一键打包全部排查材料并自动脱敏按 12.2 节四条命令采集,按 12.6 节手工脱敏
安装主机日志自动上报给供应商由客户确认脱敏后,按 12.6 节顺序人工提交
zenova status 列出全部系统服务postgres、clickhouse、caddy、secret-service、spicedb 用 systemctl status <名称> 查看
zenova doctor --target 代表网关实际出口的连通性报告注明「直连」时,以模型供应商测试或经网关的真实调用结果为准
只凭 HTTP 状态码判断处置方式以错误体中的 reason 为准,查 12.5 节或「错误参考」页

---

上一章:11. 清空重装与更换产品