操作日志
操作日志记录管理端写操作:谁(actor)、何时、对什么对象、成功还是失败。用于追查“谁封了人/谁改了配置”,也是事故复盘的第一手证据。
概念
| 字段 | 含义 | 备注 |
|---|---|---|
id | 自增序号 | 进程内单调递增 |
timestamp | 毫秒时间戳 | 过滤参数 from/to 按该字段 |
actor | 操作者 | 自托管单管理员模型下固定为 admin |
action | 操作 ID | 如 admin.users.ban、admin.apps.secret.reset |
object | 作用对象 | 如 user:demo:alice |
result | success / failure | 失败也会记录(含原因在 detail) |
ip | 来源地址 | 当前恒为空字符串(未解析来源) |
容量与保留
审计为内存环形缓冲,上限 5000 条,超出丢弃最旧记录;不落独立审计库。需要长期留存请定期导出(例如按时间分页拉取后落库)。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#audit。 - 已设置
X-Admin-Secret(默认dev-admin;控制台会保存在浏览器 localStorage 的im.admin.secret)。 - 已创建应用并在控制台顶部选中应用(模块接口路径都带
{appkey})。
步骤
- 按时间浏览最近操作
默认按时间倒序;
limit上限 500。 - 按动作/对象过滤
action精确匹配,object为包含匹配。 - 定位失败操作
result不在过滤参数中,但每条记录都带该字段;失败原因在detail。
参数表
| 参数 | 类型 | 说明 |
|---|---|---|
actor | string | 精确匹配 |
action | string | 精确匹配 |
object | string | 包含匹配 |
from / to | int64 | 毫秒时间戳 |
offset / limit | int | 分页;limit ≤ 500 |
示例
查询封禁记录与最近 20 条
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/audit?action=admin.users.ban&limit=20" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/audit?limit=20" \
-H 'X-Admin-Secret: dev-admin'
# 按对象模糊查(object 为包含匹配)
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/audit?object=user:demo:alice" \
-H 'X-Admin-Secret: dev-admin'常见问题
为什么查不到某次操作?
审计只记录管理端写操作;读操作、鉴权失败请求、以及超过 5000 条被淘汰的历史都查不到。
actor 为什么都是 admin?
自托管版使用单一管理员密钥模型,尚未接入子账号身份;RBAC 账号启用后 actor 为账号 ID。
日志能删除吗?
没有删除接口;只能等待环形缓冲淘汰或重启后按持久化快照保留(快照随数据目录)。