2026-05-03
把七八十台服务器看成一个整体:Infra Monitor 小记
Infra Monitor 最早只是给自己用的主机监控工具。后来机器越来越多,它开始变成一个混合云管理台:看状态、看数据流、看风险,也做一些受控操作。
把七八十台服务器看成一个整体:Infra Monitor 小记
这个项目一开始没什么产品野心。
就是机器多了以后,我需要知道它们到底在干什么。
七八十台服务器,分散在不同环境里。有的跑服务,有的跑采集,有的做转发,有的只是临时实验机器。单看每台机器,其实都不复杂。麻烦的是它们连在一起以后,状态会变得很难凭记忆管理。
哪台在线。哪台最近掉过。哪台磁盘快满了。哪台 CPU steal 异常。哪台暴露了不该暴露的端口。哪台可能有矿工进程、奇怪的持久化、异常 SSH 行为。还有一些更日常的问题:某个 systemd 服务是不是还活着,某个容器要不要重启,某台机器的文件能不能先只读看一眼。
这些事情都不高级。
但它们叠在一起,就会变成一种很真实的基础设施焦虑。
它更像一个混合云管理台
Infra Monitor 表面上叫主机监控,但我现在更愿意把它理解成一个混合云管理工具。
它不是那种面向大公司的完整云平台,也不是只画几张折线图的监控面板。它更像一个自用的控制台:把分散的服务器、网络状态、运行指标、安全信号和少量远程操作放到同一个视角里。
Agent 在机器上采集状态。控制面负责安装、认证、机器列表、历史记录和配置下发。实时数据面负责高频上报、WebSocket 推送、终端桥接和缓存。Dashboard 负责把这些东西组织成人能看的界面。
这个分层听起来有点正式,但原因很简单:机器多了以后,不能只靠 SSH 和脑子。
我真正想看的不是指标
CPU、内存、磁盘、网络,这些当然要看。
但只看指标还不够。
我更想看到数据怎么流动,服务之间怎么互相影响,哪台机器正在变成风险点。比如一台 VPS 的压力并不只等于 CPU 使用率。CPU steal、PSI、load/vCPU、磁盘 busy、内存压力放在一起看,才更接近那台机器真实的体感。
安全也是一样。
我不想等到“被打了”之后再去翻日志。Infra Monitor 现在会把一些安全姿态信号也放进主机状态里:可疑进程、异常路径执行、公开监听端口、SSH 登录面、持久化痕迹、容器风险、firewall posture 等。它不是自动执法系统,只是把证据提前摆出来。
对我来说这很重要。
不是为了制造一个很吓人的安全产品,而是因为我需要一个观察层。先看到,再判断。不要一上来就替我做决定。
为什么要自己组
市面上当然有很多监控、堡垒机、云管平台、安全产品。
但我这里的问题比较杂。它横跨自有服务器、云主机、实验节点、网络采集、服务编排、安全排查和一些临时工具。买一个标准产品,通常会得到很多我不需要的东西,同时缺掉一些我真的会用的细节。
所以最后还是自己组。
Rust Agent 负责尽量贴近机器。Cloudflare Worker 负责稳定的公网控制面。Rust 实时服务负责更高频的数据和交互。Dashboard 把它们折叠到一个入口里。再加一点受控操作能力,比如查看服务状态、重启允许列表里的 systemd unit 或容器。
这不是为了替代所有云平台。
更像是给自己的基础设施做一个驾驶舱。
有意思的地方
这个项目有意思的地方,不在于“监控”这个词。
监控太普通了。
真正有意思的是:当七八十台机器被放进同一张视图里,它们就不再只是服务器列表。它们会变成一个正在运行的网络。数据在里面流动,服务在里面互相依赖,风险也会沿着某些路径扩散。
我需要的不是把每台机器都管得很细,而是能在第一时间知道:
- 哪些节点还活着;
- 哪些节点状态开始不对;
- 哪些服务和容器需要人为介入;
- 哪些安全信号值得马上看;
- 哪些数据流和资源压力正在变化。
这些问题回答好了,很多运维动作就会变得安静很多。
现在的状态
它本来就是给自己用的,所以还带着很多自用工具的痕迹。
有些地方已经很像产品。有些地方还像内部控制台。有些 UI 是为了我自己快速定位问题写的,不一定适合外部用户。这个状态我不想包装得太满。
但它确实已经从“主机监控”长成了另一个东西:一个面向小规模多节点基础设施的混合管理层。
如果以后继续往前走,我希望它保持这个方向:
先观察。
再把分散的信号组织起来。
最后只在必要的时候,提供一点受控的操作能力。
不要抢人的判断权。
这大概就是 Infra Monitor 对我的意义。
它不是为了显得我有很多服务器。
它只是让我终于可以把这些服务器看成一个整体。