监控系统干的事可以拆成三步:采集(按间隔取数)、判定(比对阈值产生事件)、通知(按升级策略找人)。教材举 Zabbix 作例子,是因为它把这三步都做成了开源产品。而监控里最容易被忽略、也最容易出事的一点是:告警太多等于没有告警——把该响的阈值设准,比多装几套监控工具重要得多。
上一节讲【管理这套流程怎么转】,这一节讲流程要靠什么数据来驱动——因为【有没有出事】这件事,不能靠人去看。
它接着 控制大量服务器的机制:那一节讲管理工具要做六件事(台账、监控、批量下发、远程控制台、固件统一、告警聚合),这一节把其中的【监控】那一项展开了。它也回应 5-6——服务台要先知道出事了才能受理,而它知道的方式就是监控。
一、监控的三步,缺一步都不成立
| 步骤 | 做什么 | 例子 |
|---|---|---|
| 采集 | 按固定间隔去被监控对象那里取数 | 每 60 秒读一次 CPU 使用率 |
| 判定 | 拿模板里的阈值比对,超了就产生事件 | 使用率 > 90% 持续 5 分钟 |
| 通知 | 按升级策略发给对应的人 | 先发值班,30 分钟没人接再升级 |
三步里最容易做错的是第二步和第三步:
- 判定设得太松:真出事了不报警,等用户打电话来你才知道——这时的监控等于没装。
- 判定设得太紧:一点波动就报警,一天几百条——于是没人看了,这才是最常见的死法。
- 通知设得不对:把【磁盘用了 80%】和【数据库挂了】用同一个通道发给同一个人。前者可以下周再处理,后者必须马上起来。 混在一起,人就会先处理吵的那个,而不是急的那个。
本节 Demo 里那句【持续 5 分钟】的条件,就是为解决第二种情况设计的:一次瞬时尖峰(比如一个批处理任务刚启动)不该叫醒人,持续超标才说明有问题。这一个条件就能砍掉大半的无效告警。
二、动手 Demo:100 台服务器的数据量账
看到什么算成功:
==================================================================================================
【Demo 7】大量服务器的管理:Zabbix
==================================================================================================
监控系统干的事可以拆成三步:采集、判定、通知。
Zabbix 是这三步都做成开源产品的那一类里用得最广的一个。
【一】三步各自在做什么
步骤 做什么 例子
--------------------------------------------------------------------------------------------
采集 按固定间隔去被监控对象那里取数 每 60 秒读一次 CPU 使用率
判定 拿模板里的阈值比对,超了就产生事件 使用率 > 90% 持续 5 分钟
通知 按升级策略发给对应的人 先发值班,30 分钟没人接再升级
关键在【持续 5 分钟】这种条件:没有它,一次尖峰就会叫醒人。
告警太多 = 没人看告警,这是监控系统最常见的死法。
【二】算一笔数据量的账(100 台服务器,每台 50 个监控项)
监控项总数 = 100 x 50 = 5,000 个
采集间隔 每天数据点 每天占用 一年占用
----------------------------------------------------------------------------------
60 秒 7,200,000 个 432 MB 157.7 GB
300 秒 1,440,000 个 86 MB 31.5 GB
(按每条历史约 60 字节估。真实库会再压缩,但量级就是这样。)
所以监控的成本不在软件许可,在【你打算存多久、采多细】。
常见做法:原始数据留 7 ~ 30 天,之后只留每小时或每天的平均值。
【三】2026 现状
Zabbix 8.0 LTS 计划于 2026 年 10 月发布(官方路线图),
这一版的三个重点:接入 OpenTelemetry(把日志和链路追踪一起收进来)、
官方手机 App、以及事件关联引擎(自动合并重复告警)。
当前仍在维护的 LTS 是 7.0,短期版本是 7.4 系列。
方向很清楚:从【指标监控】走向【可观测性】。
读结果:
- 第二张表最有用的是【采集间隔差 5 倍,存储差 5 倍】这条规律。它是线性的:间隔从 60 秒改成 300 秒,数据量直接变成五分之一(157.7 GB → 31.5 GB)。这个账的意义在于:当你发现监控数据库撑不住的时候,第一个该动的旋钮不是加硬盘,而是【哪些指标真的需要 60 秒一次】。
- 括号里那句话也是重点:监控的成本不在软件许可,在【存多久、采多细】。开源监控软件本身不花钱,但存三年的原始数据要花钱、查一份跨年的报表要算力。所以几乎所有实际部署都采用分层保留:原始数据留几天到一个月,之后只留下平均值——因为三个月前某一秒的 CPU 是多少,通常没有人需要知道。
三、从「指标监控」到「可观测性」
本节 Demo 第三段的那句话,说的是这个领域正在发生的一次转变。用一张表看得最清楚:
| 阶段 | 主要采集什么 | 能回答什么问题 |
|---|---|---|
| 指标监控 | 数字(CPU、内存、流量) | 有没有出事、什么时候开始 |
| 日志监控 | 文本(程序输出的记录) | 出事时程序说了什么 |
| 链路追踪 | 一次请求经过哪些环节 | 慢在哪一环 |
这三样合起来叫【可观测性】,它的关键词是【合起来】——过去它们常常是三套系统,各查各的。
为什么必须合起来:一个请求变慢了,指标告诉你【这台机器 CPU 高】,日志告诉你【这里报了个超时】,链路追踪告诉你【慢在第三个服务调用】——只有把三样对上,才能定位到原因。只有指标的时候,你只知道【谁病了】,不知道【病在哪】。
这也是 2026 年监控工具都在往一个方向走的原因:Zabbix 这版的重点之一就是接入 OpenTelemetry(一个统一的采集标准),把日志和链路追踪一起收进来——从【监控某台机器】变成【观察整个系统】。
30 秒实验
打开你们公司(或任意一家云服务商)的监控面板,做两件事:
- 找出【监控项总数】(Zabbix 的面板上直接有这个数字,其他工具也有类似的)。
- 看默认的采集间隔是多少秒。
做完这个,你可以自己算一遍本节的两张表:把监控项总数乘以(86400 ÷ 采集间隔),就是每天的原始数据点数量。这个数字很有用——它让你能预判【监控数据库能撑多久】,也让你在需要优化时知道该动哪几个采集项,而不是笼统地说【监控太重了】。
常见误区
-
错误:监控项当然是越多越好,什么都采集起来。——纠正:采集是有成本的,而且成本落在两处:存储(本节算过,100 台机器按 60 秒采集就是一年 157.7 GB)和人的注意力(多一个监控项就多一条可能报警的规则)。真正有用的监控项,是【与业务指标直接相关的那几十个】——CPU、内存、磁盘、网络这些是基础项,但真正要精心设置的,是【这个服务正常工作时应该是什么样】。 采集一堆没人看的指标,只是让报表变长。
-
错误:告警应该是【越灵敏越好】。——纠正:告警的价值在于【被响应】,不在【被发出】。一天发五百条告警的系统,实际效果等于没装——因为所有人都会自动忽略它,真正的那一条也淹在里面。所以正确的方向是反向的:先把告警数量降到人能处理的程度(本节 Demo 里的【持续 5 分钟】就是把瞬时波动过滤掉),再让剩下的每一条都值得看。
-
错误:装了监控软件,出事就能第一时间发现。——纠正:监控只能发现【你事先想到要监控的东西】。如果某个业务指标从来没被采集过,它坏了监控也不会响——你会从用户那里得知。所以监控系统真正的功夫在设置阶段:想清楚【这个服务正常的样子是什么、坏掉的时候哪个数字会变】。没有这一步,装多少工具都只是摆设。
-
错误:监控数据当然是留得越久越好,说不定以后要用。——纠正:保留期是一个明确的成本决定(本节算的那两张表就是依据)。而且时间越久的数据,被用到的概率越低、需要的精度也越低——三个月前某一秒的 CPU 使用率,几乎没有人会去查;但三个月前【每天的平均值】可能在做容量规划时很有用。所以标准做法是分层保留:近期留原始粒度,远期只留聚合值。这跟备份策略里的【全量 + 增量】是同一个思路。
自测三问(点开对答案)
1. 为什么【持续 5 分钟】这样的条件能大幅减少无效告警? —— 因为**它把【瞬时波动】和【持续异常】区分开了**。系统在正常运行时,CPU 会因为一个批处理任务、一次垃圾回收而瞬间冲高——**这是正常现象,不需要人处理**。但如果是真正的问题(内存泄漏、死循环、流量被打),**它不会只持续一秒,而会一直维持在异常水平**。所以加上【持续 N 分钟】这个条件,**等于给告警加了一道【这是不是一个真问题】的过滤**——代价是发现时间晚了几分钟,换来的是告警可信。 2. 为什么说监控的成本不在软件许可,而在【存多久、采多细】? —— 因为**软件本身(比如 Zabbix)是开源的,不花钱**,而**数据是要落盘的**。本节算过:100 台机器 × 50 个监控项,按 60 秒采集,一年就是 157.7 GB——**这还只是 100 台**。到了几千台的规模,**存储和查询的开销会变成一笔实实在在的支出**。而且这笔钱**不是一次性的**:数据一直存着,就一直占着磁盘、也一直拖慢查询。所以监控设计里【保留策略】比【装什么软件】重要。 3. 为什么【指标、日志、链路追踪】要合起来看,光有指标不够? —— 因为**它们回答的是不同层的问题,而定位故障需要把这几层串起来**。指标告诉你【哪台机器、什么时候不对劲】(发现问题),日志告诉你【程序当时说了什么】(看到现象),链路追踪告诉你【这次请求卡在哪一环】(定位环节)。**只有指标的时候,你知道【谁病了】但不知道【病在哪】**——于是排查只能靠猜和试。合起来看的意义就是**把【发现问题】和【定位原因】这两步连起来**,缩短从告警到修复的时间(也就是 5-6 里说的 MTTR)。- ☐ 下一节(5-8 大量服务器的故障排除:三机容错)
相关笔记
- 大量IT资源的管理 —— 上一篇:流程怎么驱动管理
- 控制大量服务器的机制 —— 管理工具要做的六件事
- 企业和组织的发展动向 —— 服务管理要约定的六件事
- ☁️ 云计算 · 索引 —— 全课路线图