Monoize

请求日志

阅读日志列表,开启请求捕获,在捕获查看器中检查报文。

日志列表

打开侧边栏中的日志。Monoize 为每个通过 API 密钥认证的转发请求记录一行。每行显示:

  • 逻辑模型和 API 密钥名称;管理员还可以查看提供服务的 Provider 和 Channel;
  • Token 数量:输入、输出、缓存读取、缓存创建和推理 Token;
  • 以美元计的费用;
  • 状态:pending、success、error 或 client_gone;
  • 时间指标:总耗时、首字节时间,以及流式请求的每秒 Token 数。

逐事件转发的流式请求收到首个完整上游 SSE 事件时,实时 pending 行立即显示 TTFB。 开始、用量或错误事件都可能先于正文到达并设置该值。心跳注释不会设置该值。 TTFB 表示首个上游事件的耗时,不代表首个可见文字的耗时。 此次更新只使用内存。请求结束后才保存最终用量和计费结果。

client_gone 表示客户端在响应完成前断开连接,但上游请求成功完成。 Monoize 会继续处理上游请求,并按记录的用量正常计费。 客户端收到协议完成帧后停止读取时,成功请求仍记为 success,即使 HTTP 连接尚未结束或计费尚未结算。 上游 API 错误和计费结算错误仍记为 error。 服务端任务未完成最终记录时,状态记为 error,错误码为 request_finalization_aborted。 此状态不能证明客户端已断开,也不能证明上游请求成功。 服务端诊断中的 disconnect_elapsed_ms 表示从创建转发观察器到首次观察到下游断开的时间。 请将它与请求完成时的 duration_ms 对照。两者都不能直接说明断开的原因。

列表默认开启实时更新。关闭实时更新可停止事件流和回退轮询。使用刷新可手动更新列表。

请求日志列表

实际上游模型

使用 admin 或 super_admin 账户时,不同的上游响应模型会显示在模型徽标后方,与徽标位于同一行。 将指针移到模型徽标或 Channel 上,查看实际模型。 该值取自响应变换前的上游响应。 Monoize 将它与请求变换后发送给上游的模型名进行比较。 如果名称相同,或响应未声明模型,则不显示该值。 其他角色不会接收或看到该值。 逻辑模型和计费选择保持不变。

失败的尝试

流式解码或处理失败时,请求日志会保留失败前收到的上游用量。这些用量可能不完整。 Monoize 不对这些失败请求扣费,但上游供应商仍可能收费。因此,本地费用不等同于上游账单。

当一个请求经过多次上游尝试时,该行会按顺序列出每一跳失败记录。每一跳显示 Provider、Channel、上游状态码和错误文本。通过这个列表可以看到哪个 Channel 失败了,以及请求为什么继续前进。

请求捕获

捕获功能把每次上游尝试的完整报文保存到磁盘。捕获默认关闭。两个开关控制它:

  1. 系统开关。 super_admin 在设置中启用请求捕获。系统开关关闭时,任何密钥都不会写入捕获文件。
  2. 密钥级模式。 每个 API 密钥设置 request_capture_mode:
    • off:从不捕获。
    • capture-all:捕获每个到达上游的请求。
    • capture-only-abnormal:捕获失败、缺少用量、用量为零或发生多次上游尝试的请求。

捕获文件有保留期。默认为 1 天。在设置中修改 monoize_request_capture_retention_days 可以调整。

捕获查看器

有捕获记录的行会显示捕获标记。点击标记打开查看器。查看器为每次尝试显示:

  • 原始的下游请求体;
  • 经过所有变换后的请求;
  • 编码后发往上游的完整请求;
  • 上游的原始响应或流式帧;
  • 实际执行的变换链,包括范围和顺序。

user 角色只能查看自己的捕获,且只能看到 API 密钥范围的变换条目。管理员可以查看 user 角色账户的捕获。

故障排查

现象原因处理
新行没有捕获标记捕获持久化晚于实时行到达等待列表自动刷新,或刷新一次页面
capture_not_found捕获已过期,或你的角色无权查看提高保留天数,或联系捕获所有者
某个密钥的行缺失该密钥属于其他用户以密钥所有者或管理员身份登录

本页目录