服务器监控怎么选?避开三个常见坑,从被监控到自监控
手里只有一两台服务器的时候,监控基本靠感觉。网站打不开就 SSH 上去敲 top,看一眼 CPU 和内存,重启一下服务,又能撑几天。这种状态持续到第三台、第五台机器上线,问题就来了——你不知道哪台在偷偷跑满带宽,也不知道磁盘什么时候会写满。等到用户反馈打不开,才发现是某个进程把内存吃光了。
监控这件事,难点不在装软件,在于想清楚你要盯住什么。是 uptime 还是资源曲线?是进程存活还是业务指标?我见过不少人一开始就上全套 Prometheus 加 Grafana 加 Alertmanager,结果告警规则没调好,每天收几百条邮件,最后干脆把通知关了。也见过只用 ping 脚本的,机器是活的,磁盘满了照样挂。
所以选监控,本质上是选一套你愿意持续维护的方案。下面按从简到繁的顺序,把几个主流路线的适用场景和坑点拆开说。
先想清楚:你要监控的是机器还是业务
这个问题决定了后面所有选型。如果只是想知道服务器有没有宕机、CPU 有没有跑满、磁盘还剩多少,那属于基础设施监控,工具选择面很宽。如果你还想知道数据库连接数、接口响应时间、队列积压量,那就得考虑业务指标采集,方案复杂度会上一个台阶。
我一般会建议先做基础设施监控,把 uptime、CPU、内存、磁盘、网络这五项跑通,再考虑业务层。原因很简单:机器挂了,业务指标再全也没用。而且基础设施监控的数据采集方式比较统一,多数工具开箱即用。
反过来,一上来就搞业务监控,往往连机器本身的资源瓶颈都没定位到。比如接口变慢,你以为是代码问题,结果一查是磁盘 IO 跑满了——这种事在机械盘机器上太常见了。
另外,物理服务器和云服务器的监控侧重点不太一样。物理机你得自己盯硬件健康,比如磁盘 SMART 信息、RAID 状态、网卡丢包。云服务器这些由平台兜底,你只需要关注 OS 层面。如果你用的是秀米云的香港自营物理服务器,建议把 IPMI 或带外管理也纳入监控范围,硬件告警比系统告警来得更早。
三条主流路线,各自适合谁
目前市面上用得最多的方案,大致可以归为三类。我不按优劣排,按上手难度排。
- Zabbix:老牌方案,一台 4 核 8G 的机器就能跑 Server 端,Agent 装在被监控机上。优点是开箱即用、模板多、物理机纳管方便。缺点是界面偏重,自定义监控项写起来有点绕。
- Prometheus + Node Exporter + Grafana:云原生时代的主流。Prometheus 负责拉数据,Node Exporter 采集主机指标,Grafana 出图。数据粒度细,查询语言 PromQL 很灵活。缺点是要自己拼装,告警规则得手写,存储默认只保留 15 天。
- 轻量脚本 + 通知通道:用 cron 跑 shell 脚本,检测到异常就发邮件或 webhook。适合机器数量少、不想维护额外服务的场景。缺点是数据不留存,没法回溯趋势。
机器在 10 台以内,我倾向于先上 Prometheus 那套。Node Exporter 装完就有 CPU、内存、磁盘、网络的详细指标,Grafana 看板社区有现成模板,15 分钟内能看到第一张图。Zabbix 更适合有物理机资产需要统一纳管的团队,比如同时管着十几台独立服务器、还要监控交换机端口状态的。
如果你手上正好是秀米云的机器,比如香港自营物理服务器 ① 这种 E3-1230 V2 配 16G 内存的配置,拿它单独跑一套 Prometheus 加 Grafana 绰绰有余。Prometheus 本身吃内存不多,但如果你要保留 90 天以上的数据,磁盘得留够,按每秒 1 万个样本估算,一个月大约需要 10 到 15GB 存储。
告警配置才是真正花钱的地方
工具装好只是开始。告警规则写得好不好,直接决定这套监控是帮你还是烦你。
我见过最常见的坑是阈值设得太紧。CPU 超过 80% 就告警,结果每天下午业务高峰准时收到通知,一开始还紧张,后来直接无视。等真正出问题的时候,那条告警淹没在几十条同类通知里,根本没人看。
我的做法是分两级。CPU 持续 5 分钟超过 90% 才发通知,内存超过 85% 且持续 10 分钟才提醒。磁盘空间低于 15% 直接告警,这个不用犹豫,磁盘写满会导致服务直接挂掉。网络方面,丢包率超过 1% 就值得看一眼,尤其是用大带宽机器跑业务的,丢包往往意味着线路有问题。
另一个坑是告警通道太单一。只发邮件的话,半夜没人看。只发短信的话,数量一多成本上去了。比较稳妥的组合是:一般告警走 IM 群机器人,严重告警走电话或短信。区分标准可以简单点——机器宕机、磁盘写满、服务不可用走严重级别,其余走一般级别。
还有一点容易被忽略:告警恢复通知。很多人只配了触发通知,没配恢复通知。结果告警响了,你处理完,但不确定是不是真的恢复了。加上恢复通知,心里有底。
如果你用的是秀米云的高防服务器,比如美国西雅图高防服务器19,建议额外监控流量清洗状态。高防机器被攻击时,流量会先绕到清洗中心,这时候源站的监控数据可能出现异常波动,提前知道能避免误判。
被监控的那台机器,也需要有人盯着
这是个容易被绕过去的点:监控系统本身跑在哪?
如果你的 Prometheus 和 Grafana 都装在同一台被监控的业务机上,那这台机器一挂,你连告警都收不到。至少要把监控端和被监控端分开。机器数量不多的话,找一台低配机器专门跑监控就行。秀米云的香港国际大带宽VPS云服务器 8H 10G 的配置,用来跑监控端成本不高,月付 $15.13 这个价位,比业务机出问题再补救划算得多。
监控数据本身也要考虑保留策略。Prometheus 默认保留 15 天,对于排查突发问题够用,但如果你想看月度趋势,就得调大保留时间或者接远程存储。我的经验是,保留 30 到 60 天的原始数据,再对关键指标做降采样长期保存,这样既能查细节,又不至于把磁盘撑爆。
最后,监控系统要定期演练。拔掉一台机器的网线,看告警多久能到、通知内容是否准确、恢复后是否自动消除。这件事花不了半小时,但能让你在真正出故障时少慌一半。
总结一下我的选型建议:5 台机器以内,cron 加脚本够用,省心;10 台左右,Prometheus 加 Grafana 是最平衡的选择,装完就能用;超过 20 台且有物理机纳管需求,再考虑 Zabbix 或商业方案。价格方面,监控端机器月付控制在 100 元以内完全可行,重点是把告警规则调准,而不是买多贵的工具。