操作日志

操作日志记录管理端写操作:谁(actor)、何时、对什么对象、成功还是失败。用于追查“谁封了人/谁改了配置”,也是事故复盘的第一手证据。

概念​

字段含义备注
id自增序号进程内单调递增
timestamp毫秒时间戳过滤参数 from/to 按该字段
actor操作者自托管单管理员模型下固定为 admin
action操作 ID如 admin.users.ban、admin.apps.secret.reset
object作用对象如 user:demo:alice
resultsuccess / 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})。

步骤​

  1. 按时间浏览最近操作

    默认按时间倒序;limit 上限 500。

  2. 按动作/对象过滤
    action 精确匹配,object 为包含匹配。
  3. 定位失败操作
    result 不在过滤参数中,但每条记录都带该字段;失败原因在 detail。

参数表​

参数类型说明
actorstring精确匹配
actionstring精确匹配
objectstring包含匹配
from / toint64毫秒时间戳
offset / limitint分页;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。

日志能删除吗?​

没有删除接口;只能等待环形缓冲淘汰或重启后按持久化快照保留(快照随数据目录)。

相关链接​