审计日志
审计日志页面包含两个 Tab:LLM 请求日志(默认)和 管理操作日志。
最后更新:2026-03-10
Tab 1:LLM 请求日志(默认展示)
记录所有通过 One API 网关的模型调用请求,用于费用追踪和异常排查。
数据来源
One API 的 callback.py 在每次请求完成后写入 oneapi.logs 表。
筛选条件
- 搜索:实例名 / 用户 email / 模型名 / 错误信息(模糊匹配)
- 模型:下拉选择(claude-sonnet-4-6, gpt-4o, gemini-2.5-flash 等)
- 状态:success / error
- 日期范围:开始日期 → 结束日期
表格字段
| 字段 | 说明 |
|---|---|
| 时间 | 请求时间戳(ISO 8601,含时区) |
| 实例 | OC 实例名 或 admin-token(管理后台直接调用) |
| 用户 | Portal 用户 email(子 Key 绑定的用户),无则显示 — |
| 模型 | 实际调用的模型 ID |
| Provider | One API 路由到的 Provider channel(如 ch-1, ch-2) |
| Tokens | 总 token 数(input + output) |
| 费用 | 本次请求费用(USD) |
| 状态 | success / error |
数据库
CREATE TABLE oneapi.logs (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
request_id VARCHAR(100),
instance_name VARCHAR(100),
user_email VARCHAR(200),
model VARCHAR(100) NOT NULL,
provider VARCHAR(50),
tokens_in INT DEFAULT 0,
tokens_out INT DEFAULT 0,
cost DECIMAL(10,6) DEFAULT 0,
status VARCHAR(20) DEFAULT 'success',
error_message TEXT,
duration_ms INT DEFAULT 0,
oneapi_token_name VARCHAR(100),
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
KEY idx_instance (instance_name),
KEY idx_model (model),
KEY idx_created (created_at),
KEY idx_status (status)
);
API
GET /api/v1/llm-request-logs?instance=oc-ai-jp-2-02&model=claude-sonnet-4-6&status=success&start=2026-03-09&end=2026-03-10&q=soosoogoo&limit=50&offset=0
返回:
{
"code": 0,
"data": {
"total": 8,
"list": [
{
"id": 1,
"created_at": "2026-03-09T16:07:21+09:00",
"instance_name": "oc-ai-jp-2-02",
"user_email": "[email protected]",
"model": "claude-sonnet-4-6",
"provider": "ch-1",
"tokens_in": 5,
"tokens_out": 6,
"cost": 0.001,
"status": "success"
}
]
}
}
Tab 2:管理操作日志
记录所有后台管理操作,确保操作可追溯、可审计。
操作类型
| 操作类型 | 说明 | 示例 |
|---|---|---|
auth.login | 登录/登出 | Google OAuth 登录、密码登录 |
instance.create | 实例创建 | 创建 OC 实例 |
instance.update | 实例变更 | 修改模型、配置 |
instance.delete | 实例删除 | 软删除实例 |
instance.health | 健康检查异常 | 连续失败、自动恢复 |
key.create | 密钥创建 | 创建主 Key / 子 Key |
key.sync | 密钥同步 | 同步子 Key 到实例 |
key.delete | 密钥停用 | 停用子 Key |
user.create | 用户管理 | 创建 Portal 用户 |
user.update | 用户变更 | 更新权限、分配实例 |
server.action | 服务器操作 | 重启容器、采集指标 |
config.change | 配置变更 | 修改 openclaw.json、auth-profiles |
task.failed | 任务失败 | 任务队列执行失败 |
shrimp.claim | 捕虾场操作 | 用户捕获虾、回收实例 |
日志级别
| 级别 | 说明 | 触发场景 |
|---|---|---|
INFO | 正常操作 | 登录、创建、同步成功 |
WARN | 需关注 | 健康检查失败、自愈触发、预算接近上限 |
ERROR | 错误 | 任务失败、SSH 超时、Key 验证失败 |
筛选条件
- 操作类型:下拉选择
- 操作人:下拉选择(管理员 + System)
- 级别:INFO / WARN / ERROR
- 日期:单日选择
数据库
CREATE TABLE admin_audit_logs (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
operator VARCHAR(100) NOT NULL COMMENT '操作人 email 或 System',
action VARCHAR(50) NOT NULL COMMENT '操作类型',
level VARCHAR(10) DEFAULT 'INFO' COMMENT 'INFO/WARN/ERROR',
target VARCHAR(200) COMMENT '操作目标',
detail TEXT COMMENT '操作详情',
ip VARCHAR(50) COMMENT '操作者 IP',
user_agent VARCHAR(500),
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
KEY idx_action (action),
KEY idx_operator (operator),
KEY idx_level (level),
KEY idx_created (created_at)
);
API
GET /api/v1/audit-logs?action=auth.login&operator=小妹&level=ERROR&date=2026-03-10&limit=50&offset=0
导出
GET /api/v1/audit-logs/export?start_date=2026-03-01&end_date=2026-03-10&format=csv
保留策略
- 两类日志均默认保留 90 天
- 可通过环境变量
AUDIT_RETENTION_DAYS配置 - 过期数据由 cron job 每日清理