AutoUsage 是一个用 Node.js 编写的内网设备使用率采集上报工具,解决内外网隔离场景下“设备指标只能在内网 Web 控制台看、统计表单却在互联网侧”的问题,把“人工看控制台 + 手机拍照抄数 + 人工填表”的全流程自动化:
客户端(CDP 拦截采集) → JSON 报告 brotli 压缩 → 二维码
→ 手机扫码摆渡 → 服务端接收解码 → Playwright 自动填表
功能特性
- CDP 采集:通过浏览器 CDP 拦截设备 Web 控制台接口响应,采集 CPU、内存、硬盘、接口流量使用率
- 二维码摆渡:数据经 brotli 压缩生成二维码,手机扫码跨内外网传输;十余台设备数据通常仅数百字节
- 自动填表:服务端用 Playwright 按选择器规则自动填写统计页面,支持 kdocs / EtherPad 类编辑器
- 只读安全:客户端只读不写,所有操作均为模拟浏览与请求拦截,不向设备提交任何修改
- 离线回放测试:将 DevTools 导出的 HAR 放入
device_har/目录即可离线验证采集配置,“全绿再实测” - 灵活提取规则:path(含负数索引)、transform(parseJson / first / last / number / percent)、round、glob / 子串匹配
架构(Monorepo 三个包)
- common/(@autousage/common):两端共享 Logger、payload 契约、时间工具
- client/:采集客户端,CDP 采集 + 二维码生成
- server/:HTTP 接收(落地页 / 预览 / 提交 / 状态)+ Playwright 自动填表
payload 契约:/push#p=<base64url(brotli(JSON))>,数据放 URL fragment,不经过任何第三方。
使用流程
- 服务端(互联网电脑):
npm start监听0.0.0.0:3000 - 客户端(内网电脑):以
--remote-debugging-port=9222启动浏览器并人工登录设备控制台,运行npm start采集并生成output/qrcode.png - 手机摆渡:与服务端同 WiFi 扫码,核对落地页预览后提交,页面实时显示填表进度
部署
npm run build 经 esbuild + SEA 打包为单文件 exe(client / server 各一),目标机器无需安装 Node.js,支持 Linux / macOS 交叉构建 Windows exe。推送 tag 触发 CNB 云原生构建流水线自动测试、构建并发布 Release。