syswatch:一个 Rust 写的系统诊断 TUI,替代 htop+iostat+nettop 一堆工具

作为站长或开发者,你一定经常需要排查服务器或本地机器的性能问题。通常的做法是:开 htop 看 CPU,开 iostat 看磁盘,开 nettop 看网络,开 vm_stat 看内存……每个工具一个终端窗口,手忙脚乱。

现在有了一个更优雅的方案:syswatch——一个 Rust 写的系统诊断 TUI,用 12 个标签页覆盖了你需要的所有系统信息。

syswatch 是什么

syswatch 的自我介绍很到位:「当你感觉哪里不对劲时打开的那个终端——在你去拿 htop、iostat、nettop、powermetrics 和一堆笔记本之前。」

它是一个单机系统诊断终端界面(TUI),用 Rust 编写,支持 macOS 和 Linux。它的兄弟项目 NetWatch 专注于网络诊断。

12 个标签页

按键 标签页 替代工具
1 Overview(总览) 所有子系统的仪表盘
2 CPU htop、top、mpstat
3 Memory(内存) free、vm_stat、htop 内存面板
4 Disks(磁盘) iostat、iotop
5 Filesystems(文件系统) df -h、df -i、mount
6 Procs(进程) htop、ps auxf、pstree
7 GPU ioreg AGXAccelerator / /sys/class/drm
8 Power(电源) pmset、ioreg AppleSmartBattery
9 Services(服务) launchctl list / systemctl list-units
0 Net(网络) nettop、iftop
Timeline(时间线) 无等价工具——会话日志 + 拖拽回放
+ Insights(洞察) 无等价工具——英文异常卡片

两个独特功能

Insights 标签页

这是 syswatch 最有特色的功能。它通过启发式算法分析整个会话的历史数据,自动检测异常并以英文卡片形式展示:

  • Swap 抖动(Swap thrash)
  • 失控进程(Runaway processes)
  • 磁盘将满(Disk full)
  • 内存压力(Memory pressure)
  • 高负载(High load)
  • 僵尸进程(Zombie processes)

每张卡片会指出问题所在,并建议你切换到哪个标签页查看详细信息。

Timeline 标签页

Timeline 记录了整个会话的历史快照。你可以用 / 键来回放历史状态——不是只看 CPU 曲线,而是整个应用的所有面板都回到那个时间点的状态。这对排查间歇性问题非常有用。

安装方法

前提条件

  • Rust 1.75+
  • macOS 或 Linux

从源码编译

git clone https://github.com/matthart1983/syswatch.git
cd syswatch
cargo build --release
./target/release/syswatch

使用方法

# 默认 1Hz 刷新
syswatch

# 2Hz 刷新
syswatch --tick 500

# 直接打开进程标签页
syswatch --tab procs

快捷键

  • 1-9 → 切换标签页
  • 0 - + → 网络 / 时间线 / 洞察
  • Tab / Shift-Tab → 循环切换标签
  • ↑ / ↓ → 选择行
  • s → 切换排序方式
  • ← / → → 回放历史 / 回到实时
  • Home / End → 最早采样 / 实时
  • p → 暂停
  • q / Ctrl-C → 退出

设计哲学

syswatch 有一个很清晰的设计哲学,它明确列出了自己的反目标

  • 不是多主机监控工具(那是 Prometheus/Grafana 干的事)
  • 不是守护进程(只做一次性诊断)
  • 不是交互式修复工具(只读,不帮你 kill 进程)
  • 不是日志产品
  • 不是为了截图好看的漂亮图表

它诚实地面对平台限制——不需要 sudo 就能展示可用信息,标注哪些功能需要特权,不会伪造数据。

适合谁

  • 站长:排查服务器性能问题时,一个工具搞定
  • 开发者:本地开发环境的性能监控
  • 运维:快速诊断单机问题
  • macOS 用户:替代系统活动监视器和一堆命令行工具

与 htop 的区别

htop 专注于 CPU 和进程,而 syswatch 覆盖了整个系统——包括 GPU、电源、服务、网络、磁盘 I/O 等。Insights 的异常检测和 Timeline 的会话回放是 htop 完全没有的功能。如果你只是看 CPU 占用,htop 够用;如果你需要全面诊断,syswatch 更合适。

注意事项

  • 项目处于早期阶段(v0.3.1),部分功能还在开发中
  • 只支持单机监控,不支持远程
  • GPU 信息在 macOS 上通过 system_profiler 获取,在 Linux 上通过 sysfs DRM 获取
  • CPU 开销目标:空闲时 < 0.5%

本文参考来源:

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容