监控工具选型报告

Ward vs Beszel

针对 9 台服务器集群的监控工具综合评估,兼顾安全铁律与运维完整性

🏔️
Ward / ward-rs
单机实时仪表盘 · Java / Rust
  • 仅单机监控9 台服务器需开 9 个独立页面,无汇总
  • 零认证违反公网端口铁律,直接暴露 :4000 = 裸奔
  • 无告警不能主动通知,必须盯着看
  • 无历史曲线仅实时数据,重启即失
  • !
    Java版内存重JVM ~130–190MB,dev 1C3.6G 是奢侈
  • ward-rs 极轻Rust 版 ~5–8MB RAM,idle 0% CPU
  • 颜值高精致的深色仪表盘,适合「漂亮看板」场景
🚫
不推荐上生产
功能与你现有 memory-audit 高度重叠,且多出「零认证公网口」这条安全红线。Ward 解决的问题不是你的痛点。
🔭
Beszel
轻量级集群监控平台 · Go · Hub+Agent
  • 一屏看全 9 台Hub+Agent 架构,一个仪表盘汇总全集群
  • 不违反端口铁律Agent 走密钥加密上报,不开公网监控口
  • 主动告警CPU/内存/磁盘/掉线/温度/带宽均可配阈值
  • 历史曲线 + 自动备份PocketBase 存储,支持 S3 备份
  • Docker 容器级监控175/101/202 的每个容器 CPU/内存/网络
  • 内置认证 + OAuth/OIDC可对接 account.dzdt.online SSO
  • 极轻Agent ~15MB,Hub 更小,适合 2C2G 小机
强烈推荐
填补你现有监控体系的核心空缺:多机聚合 + 历史曲线 + 主动告警 + 带认证,和现有 memory-audit 形成互补而非替代。
核心维度对比
维度Ward (Java版)ward-rs (Rust版)Beszel
多机聚合 ❌ 无 ❌ 无 ✅ Hub 汇总全集群
认证安全 ❌ 零认证 ❌ 零认证 ✅ 内置登录 + OAuth
主动告警 ❌ 无 ❌ 无 ✅ 7 种指标告警
历史数据 ❌ 仅实时 ❌ 仅实时 ✅ 持久化 + 曲线
Docker 监控 ❌ 无 ❌ 无 ✅ 容器级 CPU/内存/网络
内存占用 🔴 ~130–190MB 🟢 ~5–8MB 🟢 Agent ~15MB, Hub 轻
适合你的集群 ❌ 不适合 ⚠️ 仅作颜值看板 ✅ 完全匹配
能力雷达图
Ward (Java)
ward-rs
Beszel

为什么 Ward 踩了你的红线

🚨 红线 1:零认证公网端口

Ward 开箱即一个裸 HTTP 端口(默认 :4000)。

你的安全铁律:公网端口必须强认证 + 非标端口 + 限流

101 香港机就是因为宝塔面板无认证公网暴露,导致被入侵当 C2,最终 2026-06-17 全盘重装。Ward 是同一个风险模式。

🔁 红线 2:与现有能力重叠

你已有 memory-audit/memory_audit.py
✓ 巡检 9 台内存/Swap
✓ 健康判定 🟢🟡🔴
✓ 飞书摘要推送
✓ 106 画廊固定 URL

Ward 能做的事,memory-audit 已经做了。Ward 新增的东西是零,代价是一个裸口。

Beszel 填补的真实空缺

🐳

Docker 容器监控

175、101、202 跑大量 docker 容器。你现在看不到各容器的 CPU/内存/网络消耗,出问题只能靠 docker stats 手动查。Beszel agent 自动采集每个容器指标,Hub 上一键切换。

📈

历史趋势曲线

memory-audit 是每日快照,只有「今天多少」。Beszel 持久化所有指标,你能看「过去 7 天磁盘增长趋势」「某容器每天几点 CPU 飙升」,提前发现潜在问题。

🔔

主动告警通知

内存超阈值、磁盘快满、服务器掉线——这些都能配 webhook 推飞书。不用等每天 6:12 的 cron,出事立即通知,覆盖你现在 memory-audit 无法处理的 CPU/磁盘/掉线。

与现有 memory-audit 的分工

memory-audit 继续保留
  • 飞书每日摘要推送(习惯入口)
  • 106 画廊固定 URL(可分享)
  • 内存/Swap 专项快照报告
  • cc-connect cron 已成熟稳定
Beszel 新增覆盖
  • CPU / 磁盘 I/O / 网络 / 温度
  • Docker 容器级指标
  • 实时 + 历史曲线
  • 掉线/阈值突破主动告警
💡
两者互补,不是替代关系。memory-audit 是「每日内存体检 + 飞书摘要」,Beszel 是「实时集群仪表盘 + 主动告警」。共存后你的监控覆盖率从 20% → 90%+

9 台服务器全景

点击服务器卡片查看详细信息

Beszel 接入建议

Beszel 架构示意
🔭 Beszel Hub
部署在 106 测试机 · Web 仪表盘 + 数据库 + 告警引擎
带 SSO 认证,反代加 HTTPS
加密上报
加密上报
加密上报
加密上报
加密上报
175
🟢 Agent
8.139
🟢 Agent
HK#1 150
🟢 Agent
HK#2 101
🟢 Agent
Virtucasa
🟢 Agent
笔记本
⚠️ NAT
一体机
⚠️ NAT
⚠️
NAT 设备特别说明:ubuntu 笔记本 和 ubuntu-aio 一体机在家宽 NAT 后面。Beszel Agent 是「主动上报」(agent 连 hub,不是 hub 连 agent),理论上 NAT 内也能跑,但需要 agent 能出网访问到 Hub IP + 端口。这两台经 106 反向隧道接入,可以先不纳入 Beszel,等验证稳定再说。

Beszel 部署三步走

总耗时约 30–60 分钟,分阶段推进,随时可暂停

1
Hub 落在 106(30 分钟)
在 106(106.55.169.208,2C4G)用 Docker Compose 跑 Beszel Hub。
106 已是内部工具机(memory-audit 画廊),放 Hub 顺理成章。

关键配置:
• 端口仅绑 127.0.0.1:8090,不直接公网暴露
• nginx 反代 + 一个子域(如 monitor.dzdt.online)+ HTTPS
• 启用 OAuth 对接 account.dzdt.online SSO,或先用内置密码登录
• 验证:浏览器打开 Hub 面板,登录成功
2
铺 5 台云机 Agent(20 分钟)
在 175、8.139、HK#1 150、HK#2 101、Virtucasa 202 各装 Beszel Agent(一条 docker run 命令)。

每台 Agent 只需:Hub 地址 + 一个 SSH 公钥 token(在 Hub 管理界面生成)。
Agent 主动连 Hub,不需要 Hub 能 SSH 进去,不开新的公网口。

验证:Hub 面板上依次看到各机上线,CPU/内存/磁盘 数据刷新中。
3
配告警 + 与 memory-audit 分工(10 分钟)
在 Beszel 配置告警规则(建议优先级):
• 🔴 服务器掉线 → 立即飞书 webhook
• 🔴 磁盘用量 > 85% → 告警
• 🟡 内存可用 < 10% → 告警
• 🟡 CPU 持续 > 90%(5分钟)→ 告警

memory-audit 继续每日 6:12 跑,飞书摘要保留,不动。
Beszel 承担实时监控 + 异常主动告警,两者互补。

资源占用评估

Hub(在 106)
内存: ~50–80MB
CPU idle: 极低
存储: ~几百MB(历史数据)
106 剩余资源:充足 ✅
Agent(每台)
内存: ~10–20MB
CPU idle: ~0%
HK#1 2C2G / HK#2 2C2G
均在可接受范围 ✅
Ward-rs 对比(参考)
内存: ~5–8MB
CPU idle: ~0%
但无多机/无认证/无告警
不是你需要的 ⚠️
🎯
一句话结论:Ward 不上;用 Beszel 补集群运维短板。memory-audit 保留做飞书摘要,Beszel 做实时聚合 + 历史 + 告警。Hub 建议放 106,先铺 5 台云机 agent,NAT 设备后续按需加。

需要我出具体的 docker-compose.yml 和部署脚本,随时说。