READMESource: main@1953e27e
dsh-monitor
轻量的 DSH Web 资源与运行监控插件,只保留左栏全局页。
仓库:https://github.com/lof6yo/dsh-monitor
- 左栏入口:
sidebar.panellist图标 → 中央「系统监控」页。 - 资源卡片:CPU(总/分核)、内存/Swap、磁盘(
/、/home)、网络、DSH 服务进程/cgroup,均为圆角卡片。 - 工作区饼图:把工作区列表合并为一张宽圆角卡片。整圈 = 工作区所在磁盘的总空间;切片 = 各工作区目录大小 + 其他占用 + 未使用空间。图例直接标出工作区名称、目录大小与占磁盘总空间的百分比;卡片底部汇总工作区/会话/运行中 agent 数量。
- 不再提供右栏标签:右侧边栏不再注册任何工作区监控 tab。
- 轻量:零第三方依赖;Host 只在有 SSE 订阅者时以 2s 间隔采样,最后一个订阅者离开即停止;浏览器页面隐藏时主动断开流。目录大小默认 5 分钟才重扫一次。
- 鉴权:所有路由先过
connection.requestRejection(Host/Origin + 浏览器登录),无connection服务时 fail-closed 到 loopback。 - 诚实归因:DSH 的会话/agent 运行在同一个 node 进程内,无法按工作区精确拆分 CPU/内存;饼图只展示可测的目录大小与所在磁盘空间,资源数字使用服务器/服务级口径。
安装
在 DSH profile 里用 plugin_manager 的 install_bundle 安装本目录。bundle 的 cordis.patch.yml 插入一行 dsh-monitor-v3。
- 要求 DSH
>=0.2.1-rc.2 <0.2.3;无第三方运行时依赖。 - bundle 同时声明了
dsh.client;安装后刷新一次 Web 页面让 Client 模块加载。若页面仍未出现,重启一次dsh-web。 - 卸载/禁用时 Host 侧通过
ctx.effect释放路由、定时器和目录扫描进程。
当前包的安装标识是
dsh-monitor-v3(-v3是绕开 Client 模块缓存的后缀),仓库名为dsh-monitor;界面上显示的「系统监控」来自locale/meta.title。
数据
GET /dsh-monitor/state:当前快照(JSON)。GET /dsh-monitor/events:SSE,每个采样周期一帧完整快照。- 数据源:
/proc/stat、/proc/meminfo、/proc/net/dev、/proc/self/cgroup、cgroup v2(memory.current/memory.peak/pids.current/cpu.stat)、fs.statfs、node:os;工作区目录大小由du -sk后台扫描。 - 非 Linux 平台自动降级:CPU/内存用
node:os,磁盘用fs.statfs,网络/cgroup 标记不可用;目录大小扫描不可用时图例显示“不可用”。
配置(cordis.patch.yml 的 plugin row config)
| 键 | 默认 | 说明 |
|---|---|---|
intervalMs |
2000 |
采样间隔,1000–30000 |
historyPoints |
90 |
内存趋势点数(约 3 分钟 @2s) |
workspaceSizeTtlMs |
300000 |
工作区目录大小缓存时长,60000–3600000 |
path |
/dsh-monitor |
路由前缀(客户端目前硬编码同一路径) |
diskMounts |
['/', '/home'] |
服务器磁盘卡片展示的挂载点 |
开发
node --check index.js
node --check client.js
客户端插件更新需要一次完整页面 boot;重装后关闭标签页重新打开即可。
License
MIT
No comments yet. Be the first to write one.