Files

5.0 KiB
Raw Permalink Blame History

日志与运行状态

界面第二轮(2026-10-06)起,侧栏「系统」只有三项:日志、运行状态、设置。原来的任务、审计、工作流引擎面板、计划页都并进日志页,旧地址自动跳转(apps/web/app/routes/console/redirects.ts)。

日志页 /console/logs

一份按时间倒序的列表,不新建表,查询时把四个来源合起来(apps/server/src/modules/logs/):

类型 来源 时间 对象 结果
任务 task 引擎运行 openworkflow.workflow_runs 创建时间 业务对象(下载任务、整理记录、订阅、定时任务…) 进行中 / 成功 / 失败;取消、智能体超出预算或停止为警告
定时与自动 auto 定时任务运行 scheduled_job_run(含智能体巡检)、智能体后台调查 agent_run(trigger=event,非子会话) 开始时间 定时任务 / 会话 成功 / 失败 / 已跳过(信息)/ 进行中
登录 auth 审计里 admin.*、api_key.*(登录、登录失败、退出、二次验证、Passkey、改密、API Key 增改撤) 事件时间 审计目标 登录成功为成功,登录失败为警告,其余为信息
审计 audit 其余审计事件 事件时间 审计目标 智能体操作被拒绝为警告,其余为信息
  • 筛选(都写在 URL):type、level(running / success / info / warn / error,可逗号多值)、since(1h / 24h / 7d / 30d)、q(标题、错误、动作、对象 ID、审计负载,不区分大小写)、objectType + objectId(同一对象的任务、定时任务运行与审计一起列出)、system=1。
  • 例行记录缺省不列:没有业务对象的引擎运行、定时任务触发且成功的引擎运行、巡检 / 后台调查对应的引擎运行(在「定时与自动」里已有一条)、普通定时任务的成功 / 跳过运行。点「显示例行记录」或按对象筛选时列出。
  • 分页:游标 = (时间, 日志 id),各来源各取 limit+1 再合并,逐页与一次取全顺序一致。
  • 实时:页面默认连 GET /logs/stream(SSE,同一组筛选),服务端每 2 秒查一次最近 10 分钟,新日志和状态有变化的日志(任务从进行中变成完成)推给页面,按 id 覆盖。「暂停」断开连接,「继续」从已知最新一条续上,暂停期间的日志会补推。
  • 详情:点一行开抽屉。任务沿用原任务详情(业务摘要、时间线、引擎步骤、取消 / 重跑,?run=<引擎运行 id> 也能直接打开);其余显示字段、负载与「同一对象的全部日志」。/console/tasks/:id 独立页保留。
  • 问智能体:勾选一条或一段(按住 Shift)后点「问智能体」,打开智能体抽屉,目标里按时间正序列出这些日志(时间、类型、结果、摘要、日志 id、对象);单条时带上任务 / 下载任务 / 整理记录等上下文 id。超过 6000 字截断。
  • 登录失败(用户名 / 密码 / 验证码错误)写一条 admin.login_failed 审计(用户名、IP、原因,不含密码);被限速拦下的尝试不写。

「定时任务」页签

原计划页(智能体巡检卡片 + 自动任务列表)放在日志页的第二个页签 /console/logs?tab=schedules(?job= 高亮)。定时任务是配置,但这一页的主要内容是运行状态(上次结果、下次运行、失败原因、立即执行 / 跳过),与它的运行日志放在一起;设置页按约定只放全局参数与凭证(docs/design/console-ia.md §3)。卡片的「运行记录」跳日志按该定时任务筛选。

运行状态 /console/status

在原有横幅、需要关注、数据库、任务引擎、定时任务、磁盘、挂载根、存储之外:

  • 资源(参考 MoviePilot 仪表盘):CPU、内存、网络、磁盘读写四块,当前值 + 小趋势(15 分钟 / 1 小时 / 6 小时)。api 进程每 5 秒读一次 /proc 与 cgroup v2,采样只放内存、保留 6 小时,进程重启后重新累计(GET /system/resources?minutes=)。
    • CPU:有 cgroup cpu.stat 时按本容器用量 ÷ 可用核数(cpu.max 限额,否则在线核数);否则 /proc/stat 整机。另给整机 CPU 与 1 / 5 / 15 分钟负载。
    • 内存:有 cgroup memory.current 时 = current − memory.stat 的 inactive_file(同 docker stats),上限 memory.max(不限时为整机总量);否则 /proc/meminfo 整机。
    • 网络:/proc/net/dev 除 lo 外合计(容器里即本容器网卡)。磁盘读写:cgroup io.stat,否则 /proc/diskstats 整盘。
    • 读不到的文件按 null 显示「—」,磁贴右上角写口径(本容器 / 整机 / 取不到)。
  • 进程表直接展示(不再折叠),每个角色进程(API / Worker(后台任务)/ Worker(智能体)/ 单进程)带 CPU(两次心跳之间占一个核的百分比,心跳 extra.cpuPercent)与内存(RSS)。事件循环与 SSE 的趋势仍在折叠区。

首页「运行状态」卡是简版:整体健康、CPU / 内存(最近 30 分钟小趋势)、用量最高的 3 个磁盘、下载器 / 站点账号 / 媒体库目录的正常数 / 总数,点进去到运行状态页。