服务器监控别急着上Zabbix,先看看Beszel这类轻量方案
手上一两台VPS或者独立服务器的人,最怕的不是配置低,是半夜磁盘写满、进程被OOM杀掉,第二天才发现。真去装Prometheus加Grafana那一套,光组件就够折腾半天,一台2核2G的小机器跑监控本身还要占掉大半资源。我一般会先问一句:你到底要监控几台机器?如果就是个位数,重型方案基本是杀鸡用牛刀。Beszel这类轻量工具就是冲着这个场景来的,下面把它能干什么、怎么落地、坑在哪讲清楚。
它到底轻在哪,一个二进制文件加一个容器
Beszel的架构很直白:中心端跑一个Hub,被监控的机器上跑一个Agent。Hub本身是个Go写的单文件程序,配合SQLite存历史数据,内存占用通常在几十MB量级。Agent更轻,采集完数据推给Hub就行。整套东西用Docker Compose起,两条命令的事。
对比Prometheus那套,差别不在功能多少,在维护成本。Prometheus要管时序数据库、要配exporter、Grafana还得单独维护面板和告警规则。Beszel把采集、存储、看板、告警塞进一个界面,代价是可定制性弱一些。换我我会这样取舍:机器少于十台、没有复杂查询需求,直接用Beszel;上了规模或者要做长期趋势分析,再考虑重型方案。
具体能看的东西:
- CPU使用率、负载、每个核心的占用
- 内存与Swap的实时曲线
- 磁盘用量、读写速度和分区占用
- 网络上下行速率,以及各容器的资源消耗
如果你监控的是香港自营物理服务器这类机器,Agent的资源开销基本可以忽略,40核80线程的配置上跑一个采集进程,连零头都算不上。
部署路径:单机自监控和多机集中管理
只有一台机器的时候,最省事的做法是Hub和Agent装在同一台上,自己监控自己。这样省一台机器的钱,缺点是机器真挂了,监控数据也跟着没了,你连挂之前的曲线都看不到。所以只要预算允许,我建议Hub单独放一台便宜的小机器上,哪怕是最低配的VPS。
多机场景就清晰了:Hub放一台固定的机器,每台被监控的服务器装Agent,通过SSH密钥或者Token注册进去。Agent支持Linux、FreeBSD,也支持通过Docker方式跑。Windows机器目前支持有限,这点得提前确认,别买完才发现目标机器装不上。
端口和网络要注意:Hub默认监听一个Web端口,Agent往外推数据。如果被监控机器在内网、Hub在公网,方向要理清楚,别把Hub的端口直接暴露到公网又不加认证。反向代理加个HTTPS是基本操作。
说到集中管理,如果你管的是多台美国洛杉矶的机器,网络延迟对监控数据的影响其实不大,因为采集间隔通常是分钟级,不像业务请求那么敏感。真正要留意的是Agent到Hub的连通性,跨机房偶尔抖动会导致数据点缺失,看板上出现断档,别误判成机器挂了。
告警阈值定不好,监控等于白装
这是最容易翻车的一步。很多人装完监控,把CPU超过80%就告警设上,结果每天被邮件轰炸,最后干脆把通知关了。告警一旦被无视,监控就失去意义。
我的经验是分两层设:
- 磁盘用量按剩余空间设,比如剩10%或剩5GB时告警,这个最实在
- 内存看Swap是否被大量使用,持续用Swap才是真问题
- CPU和网络用持续时长做条件,比如连续5分钟超过阈值才报,避免瞬时峰值误报
另外告警渠道别只挂一个邮件。邮件容易进垃圾箱,配置一个Webhook推到常用的即时通讯工具,人能看到才会处理。Beszel支持的通知方式里,挑你团队真正会看的那一两个就行,别贪多。
还有一点:监控数据是有保留期限的,SQLite存久了会涨。定期清理或者设置保留天数,不然监控自己的磁盘先满了,那就很尴尬。这点我没实测过不同数据量下的增长曲线,但按常识,分钟级采集、十几台机器,一个月的数据量不会太夸张,定期看一眼数据库文件大小就行。
什么情况下该换方案
Beszel适合的是中小规模、想快速上手、不打算在监控上投入太多人力的情况。如果你的需求变成跨机房统一告警、要做复杂的SLO统计、或者机器数量上了几十上百台,那它的界面和查询能力就会开始吃力,该上Prometheus了。
价格上,Beszel本身开源免费,成本就是那台跑Hub的机器。一台最低配的VPS,月付几十块就能撑起整个监控体系,比买商业监控服务划算得多。前提是你愿意自己维护。
想省事又需要稳定底座的话,Hub可以放在一台靠谱的机器上,比如香港柜机定制服务器①这种配置,金牌6138双路加128G内存,跑监控加上其他轻量服务都绰绰有余。要是目标机器本身在美国,Agent就近部署,美国硅谷高防服务器这类机器上挂Agent也很合适,采集数据推到Hub的延迟可以忽略。
结论直接给:机器少于十台、想当天就搭起来,选Beszel;要长期趋势分析和复杂告警,直接上Prometheus那套,别在轻量工具上硬撑。先想清楚监控几台,再决定装什么。