Beszel 轻量监控上手:一台 1 核 1G 小鸡能不能扛住

2026-10-02 10:37 1003 次浏览

手上有几台物理机和 VPS 的人,大多经历过这个阶段:一开始靠 SSH 上去敲 top 看负载,机器少还能应付,等到第五第六台加进来,就变成每天挨个登录一遍。装 Zabbix 嫌重,上 Prometheus 又得先想清楚数据存哪、Grafana 面板谁维护。多数人卡住的不是「要不要监控」,而是「为了看几条曲线,值不值得再养一套服务」。

Beszel 解决的就是这个夹缝里的需求。它把采集端做成一个常驻小进程,服务端一个二进制文件加一个 SQLite 文件,跑起来不占地方。这篇文章想讲清楚的是:它凭什么能做到这么轻、在什么规模的机器上够用、以及哪些场景下你应该直接放弃它。

它轻在哪:一个二进制加一个 SQLite 文件

Beszel 的架构分成两半。Hub 是服务端,负责存数据和出 Web 界面;Agent 装在每台被监控的机器上,定时把 CPU、内存、磁盘、网络这些指标推给 Hub。两边都是编译好的单文件,不依赖运行时环境,也不需要外挂数据库。

数据落在 SQLite 里,这是它和 Prometheus 最大的分野。Prometheus 那套 TSDB 是为高基数、长时间序列设计的,代价是要单独规划存储、定期做 compaction,机器一多磁盘 IO 就上来了。Beszel 反过来,它默认只关注最近一段时间的采样,历史数据体量小,一块普通系统盘就够。

资源占用上,我一般会按这个量级估:

  • Hub 本身:单核 1G 内存的机器跑得动,空闲时内存占用通常在百兆级别
  • 每台被监控机器的 Agent:常驻内存大致在几十兆,CPU 占用可以忽略

真正省下来的不是 CPU,是内存和运维成本。一台 1 核 1G 的小鸡,装完系统还剩几百兆,塞个 Beszel Hub 进去不会把机器压垮;换成 Prometheus 加 Grafana 加 Node Exporter 这一套,同样的机器基本没戏。

部署路径:Docker 一条命令,或者裸二进制

官方推荐用 Docker Compose 起 Hub,挂一个卷出来存 SQLite 文件,端口映射一个出去就行。如果你手上是纯物理机、不想为监控再装一层容器运行时,直接下载二进制加 systemd unit 也能跑,区别只是升级时要手动替换文件。

Agent 那边更简单,一条带 token 的安装命令,装完自动注册到 Hub。这里的 token 是 Hub 生成的,一台机器一个,泄露了等于别人能往你的面板里塞假数据,所以别把它贴到公开的地方。

有几个细节值得提前想清楚:

  • Hub 和 Agent 之间的连接走 WebSocket,跨机房部署时延迟高一点不影响采集,但 Hub 所在机器的出口带宽别太抠
  • 默认端口记得在防火墙放行,只放 Agent 来源 IP 更稳妥
  • SQLite 文件要定期备份,它是你全部历史数据的唯一载体,删了就没了

如果你打算把 Hub 放在香港机房,同时监控内地的几台业务机,线路质量会直接影响面板刷新体验。这种情况我倾向于选一台带宽给得足、线路稳的机器专门跑监控,比如 香港大带宽物理服务器 V,E5-2660*2 配 32G 内存和 150M 带宽,跑监控 Hub 属于大材小用,但胜在长期在线、不会被业务机的负载波动牵连。

它不适合什么:告警和长期趋势是短板

这一点必须说透,因为很多人是被「轻量」两个字吸引进来的,装完才发现缺的正是自己最需要的功能。

Beszel 的告警能力相对基础。它能对 CPU、内存、磁盘、网络这些指标设阈值触发通知,走的是常见的 Webhook 通道,但如果你要的是复杂规则——比如「连续 5 分钟磁盘 IO 等待超过某个值,且同时网络重传率上升」这种组合条件——它给不了。Prometheus 配 Alertmanager 那套表达式语言,才是干这个的。

长期趋势也是同样的问题。默认的保留策略偏向近期数据,你想看过去半年的内存增长曲线,得自己调 retention 配置,而 SQLite 在数据量涨上去之后的查询性能会明显下滑。真要做容量规划、要看年同比,还是得回到专门的时间序列数据库。

所以判断标准很清楚:

  • 机器数量在个位数到十几台,只想看实时状态和最近几天走势,Beszel 够用
  • 需要复杂告警规则、需要半年以上的历史数据做容量分析,直接上 Prometheus,别绕弯路

成本上也要算一笔账。省下的是 Prometheus 那套至少 1GB 内存和一块独立数据盘的开销,如果按年算,一台中等配置的机器能省下几百到上千元。但如果因为告警缺失漏掉一次故障,损失远不止这个数。这笔账得按你的业务容忍度来算。

怎么选机器:监控节点别和业务抢资源

监控系统本身有个反直觉的要求:它得比被监控的机器更稳。业务机可以重启、可以滚动升级,监控 Hub 一挂,你连「刚才到底发生了什么」都查不到。

我的做法是把 Hub 单独放在一台长期在线的机器上,不和业务混部。这台机器不需要多强的 CPU,但对内存和网络稳定性有要求。如果是跨境业务,监控节点放在香港或新加坡这类出口线路好的位置,面板访问和告警推送都会顺畅很多。

预算有限的话,一台配置规整的香港原生 IP 物理服务器就够,比如 香港原生IP物理服务器 ⑤,Gold 6138×2 加 64G DDR4,跑一个监控 Hub 加几个轻量服务绰绰有余,20M 带宽对监控流量来说也完全够用。

最后给个可以直接执行的结论:机器在十台以内、只需要看实时状态和基础告警,装 Beszel,Hub 选一台 1 核 1G 以上的独立机器,别塞进业务机;机器超过二十台,或者你需要复杂告警和半年以上的历史数据,别犹豫,直接上 Prometheus 加 Grafana,前期多花的那点内存和磁盘,后期会以「故障时能查到根因」的形式还回来。