NetWatch diagnose CLI 实战run 有界诊断、coverage 审计与 episode 重放的完整运维姿势【免费下载链接】netwatchReal-time network diagnostics in your terminal. One command, zero config, instant visibility.项目地址: https://gitcode.com/gh_mirrors/netwatc/netwatchNetWatch 是一个运行在终端里的实时网络诊断工具一条命令、零配置即可获得网络连接的全景视图。除了交互式 TUI它的netwatch diagnose子命令系列是运维人员的隐藏武器有界诊断run、规则覆盖审计coverage和事件重放episodes/replay让你把现在网络有没有问题变成一条可写进脚本、可回归验证的确定性结论。一、run 有界诊断一条命令给出可脚本化的结论交互式 TUI 回答的是我现在网络哪里有问题而diagnose run回答的是给我 X 秒时间告诉我结论——它按预算采样、跑完规则引擎、打印结果并立即退出退出码就是接口netwatch diagnose run --budget 30s netwatch diagnose run --target api --budget 2m --format json退出码含义0完成无可评估规则触发——无发现1完成至少存在一个未关闭的发现2未完成——预算内没有收到任何可用观测3参数错误或会话无法启动无发现0和没证据2被刻意区分开这是整个设计里最值得记住的一点一次什么都没采到的运行不能证明主机健康如果脚本把安静当成健康就会把一条死掉的链路报告为正常。--target模式下只有该目标自己的探测算数——另一个目标探测成功不能证明这个目标没问题。预算接受30s、2m或裸秒数合法区间为 5s–10m短于一个探测间隔采不到证据长于 10 分钟就是会话而不是单次诊断。--format json输出包含规则集大小、采样窗口、覆盖度对象和全部 issue支持工程师能看到到底评估了什么而不是面对一个空列表瞎猜。实现细节退出码判定逻辑见 src/diagnose/run.rs--target名称来自config.toml的[[diagnose_targets]]配置。二、coverage 审计先弄清哪些诊断规则真的可用规则引擎再强如果输入缺失结论就不成立。diagnose coverage是一条只读、有时限的活体审计默认采样 10 秒1–120s 可调读取现有网络基线但绝不写入并诚实地报告不完整和仍在途的输入netwatch diagnose coverage --json --seconds 30 coverage.json netwatch diagnose coverage --json --seconds 65 # 等满 1 分钟 TCP 计数器窗口 netwatch diagnose coverage --json --test ipv6.broken netwatch diagnose coverage --doc # 重新生成规则覆盖文档每条规则会被标记为 12 种状态之一ready就绪、learning学习基线中、not configured、no subjects、not applicable、awaiting test、permission denied、collector failed、stale、not implemented等。例如一次成功的 TCP 抓取但没有已建立连接 →no subjects不是没抓到而是没有对象重传检查需要完整的 1 分钟计数器观测生命周期累计值不能当速率用ipv6.broken、captive.portal、pmtu.blackhole三条规则需要--test触发三轮独立实验不加--test的审计绝不开实验--test时默认窗口为 90 秒。--json输出的是本地审计文件含接口与配置/错误细节注意它与事件导出是两回事分享事件录制要走 src/diagnose/export.rs 的脱敏流程。状态判定与下一步动作建议的生成逻辑在 src/diagnose/coverage.rs--doc生成的规则覆盖文档即 docs/diagnostic-coverage.md——有测试保证它与规则目录永不漂移。三、episode 重放事件录制变成回归测试当引擎开启某个主要问题时NetWatch 会把**问题前 10 分钟pre-roll到最后一个问题关闭后再 10 分钟post-roll**的输入帧录成一个 episode最长 2 小时另有一天的安静网络采样15 分钟作为误报率的分母。录制是纯本地的默认保留 90 天 / 300 MB。netwatch diagnose episodes # 列出本地事件库 netwatch diagnose replay /path/to/episode.json.gz netwatch diagnose export --since 7d --dry-runreplay的妙处在于它把录制的输入喂给一个全新的引擎逐帧对比开出的 issue——录制的本质就是它自己所产生的回归测试。如果重放结果与录制不一致命令直接以错误退出replay diverged from the recording这让你可以放心升级版本而不怕诊断结论悄悄漂移。tests/diagnose/corpus/ 里就固定了一个录制集和它必须持续产出的结论清单作为钉死的验收基线。隐私友好的导出export把每个 IP、主机名替换为 keyed 哈希 tokenip4-private:…这类前缀保留地址类别因为DNS 在局域网里本身就是诊断信息丢弃进程名、自由文本备注和产物路径原子写入只读权限的压缩包——是假名化而非匿名化密钥留在本机任何人拿着包都无法还原身份也没有任何上传动作。开启自动录制只需在~/.config/netwatch/config.toml加一行diagnose_record_episodes true完整配置示例目标、探针、实验端点见 docs/DIAGNOSE.md。四、运维组合拳从排障到回归日常巡检/告警钩子netwatch diagnose run --budget 2m --format json按退出码分支——1 是有事2 是别装没事环境体检换网络、换内核、容器化部署后先跑diagnose coverage --json确认关键规则处于 ready 而不是 permission denied故障复盘出问题时的 episode 用replay反复验证要上报就用export --dry-run先预览脱敏范围。关键源码与文档速查CLI 参数路由与帮助文本src/cli.rs有界诊断与退出码契约src/diagnose/run.rs覆盖度状态机src/diagnose/coverage.rs事件录制与重放src/diagnose/episode.rs假名化导出src/diagnose/export.rs官方诊断手册docs/DIAGNOSE.md · 规则覆盖目录docs/diagnostic-coverage.md一句话总结run 给你一个可以if的判断coverage 告诉你引擎的眼睛还开了几只episode 让每次排障都变成下一次的回归测试——这就是终端网络诊断工具从看一眼到管起来的完整闭环。【免费下载链接】netwatchReal-time network diagnostics in your terminal. One command, zero config, instant visibility.项目地址: https://gitcode.com/gh_mirrors/netwatc/netwatch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
