API 中转站日志审计搭建要点:trace_id 贯穿、冷热分层与计费口径对齐
一次大模型调用要穿过鉴权、路由、限流、转发与结算多个环节,日志审计的价值在于把这些环节串成可回溯的链路。搭建中最常见的坑是把审计日志、运行日志与计费流水混在一张表,以及流式响应缺少首 token 与中断状态。本文梳理字段设计、脱敏留存、冷热分层、防篡改与告警联动的落地顺序,并给出选型时的验证方法。
调用一次大模型接口,请求要穿过鉴权、路由、限流、上游转发、流式回传、计费结算等多个环节,任何一处出问题,如果没有日志,排查就只能靠猜。日志审计要解决的是四个问题:这次调用是谁发起的、走了哪条路径、消耗了多少、为什么失败。把这四个问题回答清楚,日志才算可用;回答不清楚,日志就只是一堆占空间的文本。搭建之前先明确目标,后续的字段、存储、权限才有判断标准。
第一个常见的坑是把审计日志、运行日志和计费流水混在一张表。三者用途完全不同:运行日志服务于排障,可以按周期滚动覆盖;审计日志记录关键操作与权限变更,需要长期留存;计费流水属于账务凭证,必须与日志里的用量字段一一对齐。混在一起的结果是查询慢、口径乱、留存策略互相牵扯。更稳妥的做法是分表存储,用统一的 trace_id 做关联,各表按各自的生命周期管理。
字段设计是搭建阶段最关键的一步,一旦上线后再改,历史数据很难补齐。最小可用集合通常包括:请求唯一标识 trace_id、调用方主 Key 与子 Key 标识、请求的模型名、实际命中的上游渠道、请求与响应状态码、开始与结束时间戳、输入输出 token 数、重试次数以及结束原因。缺了 trace_id,跨环节串联几乎不可能;缺了子 Key 维度,多租户或团队内部的用量拆分就无从下手。
trace_id 要在网关入口生成,并写入后续所有环节的上下文与消息头,包括鉴权、限流、路由、转发和结算。上游返回的请求标识要回填到同一条记录上,方便跨厂商核对。重试请求应沿用同一个 trace_id,用尝试序号区分不同批次,这样既能看清一次业务调用的总成本,也能单独统计重试带来的额外消耗。异步任务要把 trace_id 落进任务表,任务完成后再回写结果状态,避免出现任务与调用记录两套账。
流式响应是中转场景里最容易被日志遗漏的部分。流式请求的耗时要拆成首 token 时延和整段生成时长两段来看,两者的排障含义并不相同。中途断流、客户端主动取消、上游超时截断,应当各记一种明确的结束状态。否则失败率统计会把用户主动取消算成上游故障,告警噪音大到让人直接关掉通知——日志做了却没人看,等于没做。
内容字段要不要落库,是合规与成本的平衡点。涉及用户提示词与模型输出的原始文本,建议默认不落全量,只在可配置开关下按比例采样留存,并做脱敏处理;需要追溯时用哈希值比对即可确认是否同一次请求。留存周期与访问权限应当写成明确规则,谁能查、查多久、导出是否留痕,都要有记录。审计系统自身的读取行为,同样属于审计范围。
存储层建议做冷热分层。最近七天的日志放热存储,保证秒级检索;历史部分压缩后转冷存储或对象存储,按需归档调取。索引不要贪多,围绕时间、Key、模型、状态码建几个组合索引通常就够,字段越杂,写入放大越明显。分区按天或按小时切分,便于按时间淘汰与归档,也能避免单表过大导致的维护窗口越来越长。
审计日志本身要防篡改,否则它作为证据的价值会大打折扣。采用只追加的写入模型,禁止更新与删除;对每条记录做链式哈希,让后一条记录包含前一条的摘要值,任何中间改动都会在链上暴露。多节点部署时还需统一时钟,时间戳漂移会让串接分析失去意义。写入失败要有补偿队列与告警,不能出现静默丢日志的情况。
查询体验决定了日志有没有被真正用起来。对开发者和企业客户来说,最有价值的视图有三类:按子 Key 看用量与失败分布、按模型看时延与成功率曲线、按时间窗看某一次具体调用的完整链路。把这些做成可分享的链接,比教用户写查询语句有效得多。视图权限要跟账户体系打通,避免内部数据和客户数据互相越界。
日志还要能驱动告警与自动化动作。比如某上游渠道五分钟内错误率越线自动降权、某个 Key 在异常 IP 段高频调用触发熔断、余额不足提前提醒。这些动作的前提都是日志字段足够细、写入足够及时,否则告警只会滞后于事故本身。自动化动作本身也要留痕:谁触发的、依据哪条规则、影响了哪些流量,都应可回溯。
计费口径必须与日志对齐。重试请求是否计费、缓存命中是否计费、流式中断如何结算,这些规则要在日志里显式标记,否则客户看到账单与自己的调用记录对不上,信任成本会非常高。建议把结算明细反向关联到 trace_id,做到任意一笔费用都能点回原始调用。具体结算规则以各服务商官方说明为准。
落地顺序建议从最小闭环开始:先把 trace_id 贯穿全链路,再补齐用量字段,接着做冷热分层与只追加写入,最后才是可视化与告警。一次性上大而全的方案,往往在字段定义还没稳定时就陷入反复改表,反而拖慢上线节奏。对准备接入中转服务的团队来说,日志能力可以直接问三个问题:能否按子 Key 导出用量明细、失败请求能否回溯到具体上游、审计记录是否支持长期留存。快米兔的模型 API 中转采用注册送 5 元测试金、按量计费的方式,接入细节以官方说明为准,前期用这笔测试金跑一轮真实流量,正好可以顺便验证日志与计费口径是否经得起对账。
