自建AI中转站日志审计追踪API调用记录
自建AI中转站日志审计与API调用追踪实操教程
自建AI中转站(例如 One API、New API 等)聚合多个大模型接口后,日志审计成为排查问题、追踪调用记录的关键环节。
很多新手部署后却发现找不到调用日志,或者日志不记录关键时刻。
本文从零开始,以最常见的中转站项目为例,按步骤讲清楚如何开启日志、追踪每次API调用,以及避开常见的坑。
适用场景与准备条件
本文操作主要面向已经部署好 AI 中转站(假设使用 One API 及其派生项目)的用户。
你需要满足:
- 中转站服务正常运行(可通过域名或 IP 访问管理面板);
- 拥有服务器 SSH 访问权限(或宝塔面板等可视化终端);
- 了解项目配置文件所在路径(一般位于项目根目录下的
config.json或.env文件)。
如果还没有部署中转站,建议先完成基础搭建再回来开启日志审计。
第一步:开启日志记录功能
大多数自建中转站默认只记录错误日志,要追踪每一次API调用,需要手动开启访问日志或审计日志。
1. 通过配置文件开启
登录服务器,进入你的 One API 项目目录(例如 /opt/one-api),编辑 config.json 文件:
cd /opt/one-api
vim config.json # 或使用 nano config.json
找到与日志相关的配置项,修改或添加以下内容:
"log": {
"log_enable": true,
"log_type": ["access", "error"],
"access_log_path": "./logs/access.log",
"error_log_path": "./logs/error.log"
}
说明:
log_enable设为true开启日志;log_type加入"access"表示记录每次 API 请求;- 日志文件路径建议放在项目目录下的
logs/文件夹。
保存退出后重启服务生效:
# 如果使用 systemd
systemctl restart one-api
# 或 pm2 管理
pm2 restart one-api
2. 通过管理面板开启(部分版本支持)
登录中转站管理后台(通常是 http://你的域名/admin),进入「系统设置」→「日志设置」:
- 勾选「启用访问日志」;
- 选择要记录的事件(推荐全选);
- 点击「保存」并「重启服务」。
第二步:实时追踪API调用记录
日志开启后,可以通过以下方法实时查看调用流水。
使用 tail 命令监控最新日志
# 进入日志目录
cd /opt/one-api/logs
# 实时输出最新 20 行,并持续刷新
tail -f access.log
每当你通过中转站调用一次大模型(例如 ChatGPT),终端会立刻打印一行类似:
2025-06-28 14:23:45 [POST] /v1/chat/completions token: sk-xxxxxx user: test@example.com model: gpt-4o status: 200 latency: 1250ms
这行记录包含了请求时间、接口路径、用户令牌、邮箱、模型名、响应状态和耗时。
按用户或 Token 过滤日志
如果用户量较大,可以用 grep 提取某个用户的调用记录:
grep "user@example.com" access.log
# 或根据 token 前缀
grep "sk-xxxx" access.log
避坑指南:日志不记录或记录不全
新手经常遇到以下问题,导致审计失败:
- 忘记重启服务:修改配置后必须重启才能生效。
- 日志路径不存在:提前手动创建
logs/目录,并确认运行用户(如 www-data)有写入权限:
mkdir -p /opt/one-api/logs
chown -R www-data:www-data /opt/one-api/logs
- 只开了错误日志:需要将
log_type同时包含"access"才能记录每一次调用。 - 磁盘爆满:日志文件会持续增长,建议在服务器上配置日志轮转(logrotate)。快速添加轮转规则:
# 创建文件 /etc/logrotate.d/one-api
/opt/one-api/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
}
效果验证:确认日志审计正常工作
完成以上步骤后,执行一次模拟调用:
curl https://你的中转站域名/v1/chat/completions \
-H "Authorization: Bearer 你的测试Token" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}'
然后立刻查看 access.log:
tail -n 1 /opt/one-api/logs/access.log
如果看到包含你测试Token的请求记录,说明日志审计已成功启用。
后续你可以定期将日志导出用于流量分析、计费核对或安全审计。
常见问题解答
Q:我的中转站不是 One API,也能用这些方法吗?
A:大部分自建中转站(如 New API、Midjourney Proxy 等)的配置逻辑相似,核心都是修改 log 相关配置或环境变量,请参考你项目的官方文档确认具体配置项。
Q:访问日志中不记录用户邮箱,只显示 token 怎么办?
A:这是正常的设计,避免泄漏用户信息。你需要根据 token 在数据库中反查用户,或者开启更详细的审计记录(部分项目支持记录用户ID)。
Q:日志文件一天就几个GB,如何清理?
A:使用上文提到的 logrotate 轮转即可,也可以按天分割日志,保留最近 7 天。
如果你正在管理自建AI中转站,建议先按本文开启日志审计,再根据实际用户量调整日志级别和轮转策略,这样既能追踪API调用记录,又不会影响服务器性能。
遇到日志异常时,优先检查配置文件和目录权限。