
做直播技术这几年,我接触过不少团队,发现一个挺有意思的现象:很多人花大价钱买了CDN服务,监控平台也搭起来了,但告警要么一直响个不停,大家最后选择”躺平”忽略;要么就是太平静,等出事了才知道问题。这种情况,问题往往不是出在工具本身,而是阈值设置这个环节没做好。
阈值设置这门手艺,说起来简单,就是给监控指标定个”警戒线”。但真正操作起来,你会发现它其实挺考验人对业务的理解深度。今天这篇文章,我想用比较实在的方式,聊聊怎么把这事儿做好。
可能有人会想,阈值不就是随便设个数吗?达到多少触发告警,很简单的事。我刚开始接触这块的时候,也是这么想的。后来发现完全不是那么回事。
有一次,我们团队发现直播画面经常卡顿,排查了一圈,最后发现是因为监控告警的阈值太宽松了。CDN节点的CPU使用率平时就在70%左右,我们设置的是90%告警,结果当使用率飙升到85%的时候,根本没人注意到,直到用户投诉大面积涌进来才意识到问题。那次之后我才明白,阈值不是摆设,它是保障服务质量的第一道防线。
另一个极端是阈值设得太严。我见过有个运维兄弟把网络延迟的告警阈值设为50ms,结果告警从早响到晚,团队陷入”告警疲劳”,最后干脆把手机通知关了。这种过度告警的危害更大,因为它会让真正重要的信息被淹没在噪音里。
所以阈值设置的核心逻辑其实是:既要敏感地捕捉到真正影响用户体验的异常,又不能太神经质把正常波动当成问题。这个平衡点找起来需要花心思。

在设置阈值之前,我们得先搞清楚监控的面板里那些指标分别代表什么。我把直播场景下最关键的指标分成几类,这样思路会清晰一些。
这类指标反映的是CDN节点本身的运行状态,属于”身体素质”类的监测。CPU使用率和内存使用率是最基础的,如果这两个指标长期处于高位,说明节点负载已经很重了,继续下去肯定出问题。磁盘使用率也值得关注,特别是那些有本地缓存机制的CDN节点,磁盘满了会导致服务异常。
网络带宽使用率这个指标比较特殊,它不是越高越好或者越低越好,而是要关注利用率曲线。如果一个节点的带宽利用率长期在95%以上徘徊,那,稍微有个流量高峰可能就撑不住了。
这类指标直接关系到用户看到的画面效果。首帧时间是我特别看重的一个指标,它指的是从用户点击播放到看到第一帧画面花了多长时间。根据声网的研究数据,首帧时间如果超过2秒,用户的流失率会明显上升。所以这个指标的阈值设置需要格外谨慎。
卡顿率是另一个关键指标。卡顿率的计算方式一般是:发生卡顿的播放时长除以总播放时长。这里需要注意的是,不同业务场景对卡顿的敏感度不一样。秀场直播可能用户对卡顿的容忍度高一点,但电商直播或者游戏直播,用户基本无法忍受画面卡顿。
码率和帧率的稳定性也很重要。正常情况下,编码器输出的码率和帧率应该是相对稳定的,如果出现大幅波动,往往意味着编码器或者CDN传输环节出了问题。

这一类主要关注数据在网络中传输的情况。延迟和抖动是直播场景中最需要关注的传输指标。延迟是端到端的延时,抖动则是延迟的波动程度。直播场景下,延迟高一点可能还能接受,但抖动大的话,画面会出现明显的涂抹感或者音画不同步。
丢包率这个指标在CDN监控中容易被忽视,但实际上它对画质影响很大。尤其是HLS或者FLV这种基于TCP的协议,虽然TCP本身有重传机制,但过高的丢包率会导致重传数据包堆积,增加延迟,最终影响观看体验。
说了这么多指标,接下来聊聊具体的阈值设置方法。我自己总结了一套相对实用的方法论,经历了从乱设到有章可循的过程。
在设置任何阈值之前,你首先要做的不是拍脑袋定数字,而是观察。把监控系统的数据至少看一周,最好是两周到一个月的维度。在这期间,记录下每个指标的正常波动范围、峰值出现的时间规律、谷值大概在什么位置。
举个例子,我们团队曾经设置CDN节点CPU使用率的告警阈值,最初设的是80%。观察了两周数据后发现,大部分节点平时CPU使用率在40%到60%之间波动,只有在晚高峰时段会冲到70%左右,偶尔会触及75%,但很快就会回落。基于这个基线观察,我们把告警阈值调整成了70%告警、80%严重告警的两级结构,这样既能及时发现问题,又不会产生太多无效告警。
单一的阈值往往不够用,我建议采用两级或三级阈值的策略。最基础的是”预警”级别,指标达到这个线的时候,系统发出提醒,但不一定需要立即处理。然后是”告警”级别,达到这个线说明需要关注了,可能需要介入处理。最后是”严重”级别,这时候必须立即处理,否则会影响服务。
这种分级设计的好处是能让团队形成响应梯度,不用每次告警都如临大敌。根据我们实际运营的经验,一般建议预警和告警之间留20%到30%的缓冲空间,给处理问题留出时间窗口。
阈值不是设置一次就万事大吉的。随着业务规模变化、用户群体变化、CDN节点调整,指标的基线也会变化。我的做法是每季度做一次阈值回顾,根据过去一个季度的数据分布重新校准阈值。
有个小技巧分享给大家:可以把近30天的P95值或者P99值作为阈值设置的参考。P95值的意思是,有95%的数据样本在这个值以下。用这个方法设置阈值,可以保证大多数异常情况都能被捕捉到,同时又不会因为极端值影响判断。
前面说的都是通用的方法论,但实际工作中,不同业务场景的阈值设置差异还是很大的。我举几个典型场景来说明。
比如春晚直播、电商大促直播这种预期会有流量高峰的活动。在这种场景下,阈值要设得相对保守一些,因为流量峰值往往超出预期。我的建议是把平时的告警阈值下调10%到15%,同时增加告警的灵敏度。
另外,这种场景下要特别关注流量突增的告警。很多CDN服务商都有流量预测模型,当实际流量超过预测值一定比例时,应该触发告警。这种预判性的告警能让你在问题发生之前就开始做准备。
日常直播的阈值设置可以相对宽松一点,但也需要关注指标的长期趋势。比如,如果发现某个CDN节点的内存使用率虽然在告警阈值以下,但呈现逐月上升的趋势,那就需要提前介入排查原因,而不是等到触发告警再处理。
如果你的直播涉及到跨境传输,网络延迟和丢包率的阈值需要特别注意。国际网络链路的不稳定性比国内要明显很多,这时候可以考虑针对海外节点设置单独的一套阈值标准。比如,国内节点的延迟告警阈值可以是150ms,但海外节点可能需要放宽到250ms或者300ms。
为了让大家有个更直观的感受,我整理了一个比较通用的阈值配置模板。需要说明的是,这个模板是基于一般业务场景的,具体数值需要根据你的实际情况调整。
| 监控指标 | 预警阈值 | 告警阈值 | 严重阈值 |
| 节点CPU使用率 | 70% | 80% | 90% |
| 节点内存使用率 | 75% | 85% | 95% |
| 首帧时间 | 1.5秒 | 2秒 | 3秒 |
| 卡顿率 | 1% | 2% | 5% |
| 端到端延迟 | 200ms | 400ms | 800ms |
| 丢包率 | 0.5% | 1% | 3% |
| 带宽利用率 | 80% | 90% | 95% |
这个表里有些细节可以展开说说。首帧时间这个指标,不同业务类型的阈值差异很大。如果是点播场景,2秒的首帧时间用户基本能接受,但直播场景下,因为用户期望是”实时”的,所以首帧时间最好控制在1.5秒以内。如果是互动性很强的直播课堂场景,那首帧时间还要再压缩,理想状态是在1秒以内。
卡顿率的设置也要看业务类型。一般来讲,娱乐直播的卡顿率告警线设在2%是合理的,但如果是重要的商业发布会直播,这个阈值需要降到1%甚至更低。
聊完了方法和配置,我再分享几个在阈值设置过程中常见的坑,这些都是自己和身边同行的血泪经验。
第一个坑:只设置绝对阈值,不设置相对阈值。绝对阈值就是”达到多少触发告警”,相对阈值是”相比基线上涨多少触发告警”。举个例子,节点CPU使用率从30%突然飙升到60%,虽然60%可能还没到绝对告警线,但这种涨幅本身就是异常现象。如果只设置了绝对阈值,这种快速爬坡的过程就会被漏掉。所以除了绝对阈值,建议对关键指标增加环比涨幅的告警规则,比如”CPU使用率5分钟内上涨超过20%”。
第二个坑:忽视时间因素。很多指标的正常值在一天中的不同时段是有明显差异的。比如晚高峰时段的延迟指标就是会比凌晨高,如果用统一的阈值,就会产生大量无效告警。解决方案是可以设置基于时间的阈值规则,比如”工作日晚高峰时段(19:00-23:00)的延迟告警阈值为500ms,其他时段为300ms”。
第三个坑:告警阈值和业务指标脱节。这是最容易被忽视的问题。很多技术人员喜欢盯着技术指标看,但忽略了这些指标对业务的影响。比如,CDN节点的某个指标触发了告警,但这个节点的流量只占总流量的1%,实际影响可能很小。反过来,有些指标虽然看着不严重,但影响的用户群体很大。我的建议是定期做一次告警影响面分析,把告警和业务指标关联起来看。
阈值设置这件事,确实需要一定的经验积累。我最后再分享几个实操中总结的小建议,希望对大家有帮助。
建立告警日志回顾机制。每周花半小时看看过去一周的告警记录,分析一下哪些是有效告警,哪些是误报,误报的原因是什么。这样持续做几个月,你会对自己的系统有更深的理解,阈值也会调得越来越准。
善用趋势告警。比起瞬间值的变化,指标的趋势变化往往更能预示问题。比如某个CDN节点的带宽利用率连续三天都在上涨,即使还没触发告警阈值,也应该主动排查原因。
保持阈值文档化。每个阈值是谁、在什么时间、基于什么考虑设置的,都要记录下来。这样团队成员离职或者换岗时,新人才能理解这些阈值背后的逻辑,不然就是一笔糊涂账。
说完这些,突然想起自己刚入行那会儿,对监控告警这块完全是懵的。那时候带我的师父说了一句话,我一直记着:”监控和告警不是为了让你知道系统什么时候会出问题,而是为了让你在问题发生之前就有感觉。”这话听起来有点玄乎,但慢慢做久了,发现确实是这个道理。阈值设置得好,你会有一种”尽在掌握”的感觉;设置得不好,就会被各种告警牵着走,疲于奔命。
希望这篇文章能给正在摸索这块的同学一点参考。阈值设置没有标准答案,还是得结合自己的业务场景不断调优。如果你有什麼好的经验或者踩过的坑,也欢迎交流。
