CPU 利用率有三个均值:5 秒看瞬时、1 分钟看刚才、5 分钟看长期。 三个都高时不要做重操作——敲一条 show 都可能引发路由震荡。
上一节讲日志,这一节讲「设备累不累」。 这是最常被问、也最容易被误读的一个指标。
一、三个均值各反映什么
均值 反映什么 什么时候看
5 秒 瞬时压力 现在有没有被顶住 1 分钟 短期趋势 刚才发生了什么 5 分钟 长期水平 这台设备忙不忙
为什么要三个:单个数值分不清「现在是尖峰」还是「一直这么忙」。 而这两种情况的处置完全不同——尖峰不用管,长期高要考虑扩容。
二、三种组合怎么读
5 秒高、5 分钟低 → 有瞬时突发。可能是正常的路由更新,也可能是攻击,也可能是刚开了 debug。 5 秒低、5 分钟高 → 持续负载。这是「设备快不够用了」的信号。 三个都高 → 已经过载,任何额外动作都可能引发故障。
第三种最危险:这时候敲一条「显示全部路由」都可能让 CPU 冲到 100%, 而协议报文一旦被丢,邻居就会断开,路由震荡。 一条排查命令引发一次全网故障,这种事真的会发生。
三、过载时该做什么
先降负载,再排查。
降负载的三个动作:带宽限速(把某个方向的流量压下来)、停掉不必要的日志与 debug、 暂停非关键的协议(比如把某个 BGP 邻居软关闭)。
然后才是排查:看进程占用、看接口流量、看有没有环路。 如果反过来「先排查」,很可能在排查的过程中把设备彻底压死。
四、监控本身也是负担
SNMP 轮询不是免费的:每次读 50 个 OID、每 10 秒一次,就是每秒 5 次读操作; 如果采集 500 个 OID、每 5 秒一次,就是每秒 100 次。
「每秒几百次读」对 CPU 是有感的。 所以网管软件「轮询越勤越好」是错的——监控本身的负担,可能比被监控的故障更严重。
折中办法:核心指标勤采、次要指标慢采、能用 SNMP Trap 推的就不用轮询拉。 这也是下一节讲告警时的原则。
五、动手 Demo:CPU 的三个均值,为什么不能只看一个
这段列出三个均值的用途,再按「一次轮询读多少 OID、多久一次」算三种采集策略下每秒的读操作次数。
for n, iv in ((50, 10), (200, 10), (500, 5)):
P(u" 每次 %d 个 OID、每 %d 秒:每秒 %.0f 次读。" % (n, iv, n / iv))
实跑输出:
--------------------------------------------------------------------
CPU 的三个均值,为什么不能只看一个
--------------------------------------------------------------------
**路由器的 CPU 利用率有三个数**:5 秒、1 分钟、5 分钟。**它们不是重复,是三个不同的用途。**
均值 反映什么 什么时候看
--------------------------------------------------
5 秒 瞬时压力 看「现在有没有被顶住」
1 分钟 短期趋势 看「刚才发生了什么」
5 分钟 长期水平 看「这台设备忙不忙」
**为什么三个都要看**:
· **5 秒高、5 分钟低** → 有瞬时突发。**可能是正常的路由更新,也可能是攻击。**
· **5 秒低、5 分钟高** → 持续负载。**这是「设备快不够用了」的信号。**
· **三个都高** → 已经过载,**任何额外动作都可能引发故障。**
**「三个都高时不要做重操作」这一条很实用**:
这时候敲一条「显示全部路由」都可能让 CPU 冲到 100% 并丢协议报文,**引发邻居断开、路由震荡。**
**正确做法是先降负载(限速、停日志),再排查。**
**算一下 SNMP 轮询本身的负担**:
每次读 50 个 OID、每 10 秒一次:每秒 5 次读操作。
每次读 200 个 OID、每 10 秒一次:每秒 20 次读操作。
每次读 500 个 OID、每 5 秒一次:每秒 100 次读操作。
**「每秒几百次读」对 CPU 是有感的。**
**所以网管软件「轮询越勤越好」是错的**——监控本身的负担可能比被监控的故障更严重。
**折中办法:核心指标勤采、次要指标慢采,或者用 SNMP Trap 代替轮询。**
「每秒 5 次」与「每秒 100 次」差 20 倍, 而它们采集的信息量可能只差 3 倍——因为「缩短间隔」比「增加指标」更伤设备。
「三个都高时不要做重操作」这一条要写成值班手册:它不是技术细节,是操作纪律。 新人最常见的事故就是「为了排查把设备查死了」。
最后「用 Trap 代替轮询」是本节与下一节的衔接:设备主动推的代价远低于网管主动拉, 而且实时性更好——代价是可能丢(UDP)。 所以正确做法是两条都用。
30 秒实验
- 在你设备上看一下三个 CPU 均值分别是多少。
- 看网管软件多久轮询一次、每次读多少指标。
- 想一想:如果 CPU 三个值都在 95%,你第一步会做什么?
常见误区
- 以为看 5 分钟均值就够了。它会掩盖瞬时尖峰。
- 以为 CPU 高就赶紧查。过载时先降负载,否则越查越死。
- 以为监控越勤越好。轮询本身会消耗被监控设备的 CPU。
自测三问(点开对答案)
1. 三个 CPU 均值分别反映什么? —— 5 秒看瞬时压力,1 分钟看短期趋势,5 分钟看长期水平。 2. 三个值都高时应该先做什么? —— 先降负载(限速、停日志、暂停非关键协议),再排查。 3. 为什么缩短轮询间隔比增加指标更伤设备? —— 每次轮询都有固定开销,间隔减半等于开销翻倍。下一节:设备出问题,怎么让人第一时间知道——告警。
- ☐ (本节完,下一节 03.07.04 告警)