首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“停课不停学”— 腾讯云监控给你划知识重点

“停课不停学”— 腾讯云监控给你划知识重点

原创
作者头像
腾讯云可观测平台
修改2020-03-02 18:16:26
8910
修改2020-03-02 18:16:26
举报

早前针对疫情的影响情况,各地教育局纷纷发布了延迟开学的通知。为了让广大学子们在家也能线上学习,腾讯课堂助力“停课不停学”,推出了“老师极速版”,全方位帮助学校、老师、学生进行在线教学,助力保障学校与教育机构的教学进度与教学效果。

线上授课,最担心的莫过于:

小明同学,您来回答下这道题目... 小明?...听得到吗?... 老师,您的屏幕黑屏了,我们看不到... 老师,您那边网络好卡呀... 我们都错过刚说的知识重点了...

Don't worry ,腾讯课堂依托平台强大的音视频技术,有效的降低了卡顿、网络延时等问题;同时其核心系统100%上云,可实现业务秒级扩容。除此之外,当然也少不了腾讯云监控,帮助业务及时发现异常、定位问题原因,更好地保障腾讯课堂的服务质量,为老师和学生打造流畅的上课体验。

业务核心指标监控

腾讯课堂的研发同学会在各个服务模块的关键路径代码里,埋点上报自定义的业务指标,如:

  • 同时在线人数;
  • 进入课堂房间数;
  • 老师直播授课的延时;
  • 学生点击签到的成功率;
  • ......

然后通过对这些业务指标进行 定义(定义其所代表的含义,定义其是否关键指标,定义其汇聚的统计方式)、分组(对不同服务模块部署的机器进行分组,构建不同模块的分组视图)、管理(对上报的指标按系统层、逻辑层、数据层等方式分组管理,以便快速检索查看);最后来构成业务重点指标的实时监控面板,以及查看各自研发负责的指标视图和单机视图的变化情况。

今天我们不详细展开关于业务指标监控的内容,感兴趣的同学可以浏览之前推送过的文章腾讯会议幕后的Metric监控

时间序列异常检测

想要更好保障服务质量,上报的指标就要更覆盖业务代码和系统的所有逻辑点。但在如此海量指标中,通过传统的告警配置来发现异常,会存在以下问题:

  • 如果对每个指标都设置告警规则会有巨大的配置量;
  • 根据业务特性,周末峰值、早晚高峰值都不固定,如果设置过多适配的最大最小阈值规则,可能导致由于维护成本高且缺乏长期有效的管理,而面临告警泛滥的情况;
  • 上下波动告警的幅度,设置太大则可能导致告警漏报,设置太灵敏则容易出现较多告警误报。

假设不通过告警规则配置,而是利用我们大脑去人为判断,又是怎样发现业务指标是否真的出现异常呢?我们用心电图举个例子,假如你以前正常的心电图是左边这样的波形,突然之间你的心电图变成右边这样的波形展示了:

这时候的你,肯定是出现什么跟以往不同的异常情况了吧~这是心动的感觉? 还是老师突然点名让你回答问题的紧张呢? 不管是什么情况,你的心电图波形跟以前对比出现较大偏差。

那么如果无须人为判断,是否能让机器学习算法来自动识别出异常呢?我们通过将以往的数据进行特征工程,挖掘选取出多种不同的特征,然后通过算法来进行训练,再加以人工对样本的打标,从而不断优化模型。

特征工程:

“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。可以说,用哪些特征来表达一个时序数据样本的“长相”,是保证后面算法效果的关键,也间接决定了最终异常判决效果的关键。特征选取是一个不断优化的过程,我们从最初的max, min, mean, meidan,pvalue,rvalue(相关系数), intercept(截距), slope(斜率), stderr(拟合的标准差) 等32个特征优化到目前的100+,还在不断优化中。

算法和模型:

在前期研究测试中发现,没有任何一种单一算法可以达到业务对异常检测的准确率、召回率以及性能上的要求。比如:

  • 统计判别类算法,性能较高,但是遇到平稳型数据的时候,准确率比较低;
  • 监督类算法具备学习矫正能力,针对误告情况可以反馈学习校准模型,但是算法复杂度却较高。

所以我们的实际算法方案上,采用和不同类型算法串联的方式,发挥不同类型算法各组的优点:

  • 首先通过统计判别算法/无监督算法,过滤掉绝大部分的正样本,只需要保证召回率;
  • 然后将疑似样本再使用有监督算法计算,准确判断出异常数据。

平台化建设:

我们搭建了通用时序数据异常检测平台,将上述能力投入自研环境运营使用。

  • 不仅开放检测能力的接口,让更多业务可以接入使用;
  • 并且在平台上支持正负样本的人工标记,当校验样本积累到一定量时会重新训练有监督模型,这样可以形成一个循环,不断优化模型,提高判决准确性;
  • 最后将检测出的异常,经过毛刺过滤等处理后,形成告警推送给业务(我们还利用时间序列联动分析能力对告警推送做了优化,详细可继续往下浏览)。

最后,放上几张具有代表意义的典型案例图:

时间序列联动分析

虽然我们利用机器学习来帮助我们智能地检测异常,而省去人工配置告警规则的工作,以及提升检测的准确率。但面对如此海量的指标,还是会产生大量的告警,往往导致:

  • 告警泛滥,真正影响业务的异常告警被淹没了;
  • 接收到的告警都是单个指标的异常,还需要人为查看该时间段内是否存在相似关联的异常,再去定位问题原因,从而花费较长时间。

为了解决这些业务痛点,我们采用了时间序列联动分析的算法,可实现以下功能:

  • 告警压缩;
  • 业务指标告警收敛;
  • 推荐与已知告警相关的 Top N 的告警。

例如在业务发生异常时,我们会收到一条“A服务某基本CGI模块总请求量等多个指标发生异常”的告警。点击打开查看详情,我们可以看到在 06:16 时间段内,同时出现有相似陡增的异常波动指标:

  • A服务某基本CGI模块总请求量;
  • A服务某基本CGI模块的XX权限检测不通过数;
  • Agency总成功量;
  • ...

这些指标从原来需要发送N条告警,最后压缩并收敛成一条告警推送出来,有效避免了大量的告警推送而导致告警泛滥的情况。另外,这些指标由于都具有相似的异常特性,所以会关联在一起,并且根据关联相似度来进行排列,以便业务更快能定位是哪个服务模块出现问题导致的异常,同时也能发现该异常还影响了哪些模块有问题。

(以上内容,部分引用于腾讯云监控高级研究员张戎、自研上云高级架构师李剑锋)

更多时间序列异常检测和联动分析的能力,腾讯云监控在自研的Metis项目已孵化上线,目前服务于腾讯内部业务(如腾讯课堂、腾讯会议、手机QQ、看点等),从机器学习的角度,更智能地帮助研发同学发现业务异常。

虽然还没对外开放智能检测和告警的能力,但腾讯云监控已经上线 自定义业务指标监控 的功能,目前为广大腾讯云客户提供免费体验:

  • 用户无需预注册,便可上报指标,通过极简的方式完成指标上报和告警配置;
  • 开放了实例分组的功能,用户可以按服务模块把不同的CVM或SCF实例做分组管理,方便查看各分组下的指标视图。

诚邀您点击 申请页面 参与体验!

                                    抗击疫情,腾讯云监控和您在一起。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 业务核心指标监控
  • 时间序列异常检测
  • 时间序列联动分析
相关产品与服务
前端性能监控
前端性能监控(Real User Monitoring,RUM)是一站式前端监控解决方案,专注于 Web、小程序等场景监控。前端性能监控聚焦用户页面性能(页面测速,接口测速,CDN 测速等)和质量(JS 错误,Ajax 错误等),并且联动腾讯云应用性能监控实现前后端一体化监控。用户只需要安装 SDK 到自己的项目中,通过简单配置化,即可实现对用户页面质量的全方位守护,真正做到低成本使用和无侵入监控。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档