请求日志与审计日志
请求日志用于回答“谁在什么时间调用了哪个接口,结果怎样”。它与保存 Token 和点数的用量账本分开。
记录的内容
| 类别 | 字段 |
|---|---|
| 请求 | 时间、方法、路径、请求 ID |
| 结果 | HTTP 状态码、耗时、响应字节数 |
| 来源 | 账号、网页或 API 渠道、IP、User-Agent |
| 模型 | 已关联的模型 ID 与展示名称 |
| 错误 | 可获得的错误码 |
请求日志不保存完整请求正文、上游响应正文或全部 HTTP Headers。不要期望在这个页面直接查看原始提示词或上游完整 JSON。
Token、点数等消费信息到用量页面查看。进程日志可提供网络、数据库与探测相关的补充信息。
定位失败请求
先按发生时间与模型过滤,再根据状态或错误码缩小范围。也可以从模型页面的错误入口跳转到请求日志。
- 401:核对调用方认证;如果错误来自上游,再检查服务商凭据。
- 429:区分本实例的额度或并发限制与上游限流。
- 5xx:结合进程日志检查连接、超时或上游响应问题。
HTTP 流式响应开始后,状态码可能已经发出。不能只凭 200 判断整次生成一定成功,应结合错误码和用量记录中的结果。
写入时间与保留
请求结束后才进入日志队列,正在生成的长请求不会马上出现在列表里。后台批量写入,可能有短暂延迟。
当前实现最多保留约 200,000 条请求记录,并分批修剪更早的数据。队列拥塞或写入失败时可能丢失条目,后台提供丢弃数量供排查。
health.retain_days 控制模型探测数据,不是请求日志的保留天数。请求日志也不是不可删除、保证无遗漏的审计存储。
需要长期保留时
将进程日志与数据库备份纳入自己的保留计划。发生问题后及时保存有关时间范围的信息,避免历史记录被正常修剪。
管理员审计日志
审计日志回答“哪位管理员在什么时候改了什么”。它和请求日志、安全事件分开保存:请求日志记的是流量,安全事件记的是系统对账号做出的决定,审计日志只记管理员的操作。
记录的内容
- 后台的每一次写操作(新增、修改、删除、执行),不论成功、失败还是因权限不足被拒绝。被拒绝的尝试也会记在发起人名下。写入超过五秒仍未完成的记录会被丢弃,只写进进程日志。
- 查看他人对话列表或对话内容这两类读操作。其余读操作不记录。
- 在终端(网页终端或 SSH)里执行的管理命令。它们走的是同一组后台接口,来源会标为“网页终端”或“SSH 终端”。
- 已安装插件的后台接口同样会被记录,未翻译的操作按“方法 + 路径”显示。
每条记录包含:时间、操作人及其角色、操作、操作对象(账号、用户组、服务商、模型会记下当时的名称)、状态码、耗时、来源、IP、客户端,以及请求内容。 修改设置和编辑账号时,还会记下每个字段的旧值和新值。
敏感信息
请求内容写入前会先打码:字段名中带 password、secret、token、key 等词的值,以及被声明为密钥的设置项,一律替换为 ***。 密钥类设置被修改时,只记录“已更改”,不记录新旧值。上传的内容(Logo、登录背景、头像的图片数据,插件包)只记录长度或类型和大小,不保存内容本身;过长的文字只保留前 512 个字符。
权限与保留
- 查看审计日志需要单独的“审计日志”权限(
audit),日志权限不包含它。超级管理员默认可以查看。 - 记录默认保留 180 天,由后台例行清理任务删除过期记录。保留时长(
audit.retention_days)只有超级管理员能改,范围 30 到 3650 天。 - 后台和接口都不提供删除单条记录的方式。能直接操作数据库的人仍然可以改写这张表(
admin_audit),需要防篡改时请把数据库备份纳入自己的保留计划。
在终端中查看
audit list --outcome failed
audit list --actor alice --limit 20
audit show <id>
audit actions