声明:本文为作者投稿,版权归 CSDN 所有,未经允许,请勿转载。
作者:龚清华,陌陌高级研发工程师,主要负责陌陌直播质量监控。熟悉直播系统架构、熟悉CDN,具有较丰富的广电、互联网直播监控系统建设经验。
责编:屠敏,关注视频直播等领域,寻求报道或者投稿请发邮件tumin@csdn.net,另有「直播技术交流」群,技术之路,我们共同进步,欢迎开发者加微信tm_forever_miss申请入群,务必备注姓名+公司+职位。

系统建设背景

随着移动互联网技术的高速发展,人们喜欢的媒体交互方式也由文字、图片、小视频迅速切换到了直播。作为一种新兴的社交方式,直播在实时性、交互性方面具备先天优势,这也推进了直播在各行各业的快速应用。作为最大的陌生人社交平台,陌陌自然也少不了直播。

陌陌拥有大量的用户群体,直播上线后,海量的主播和观众开始使用直播社交,系统并发一度达到高峰。在如此高并发的情况下,如何保证为用户提供最佳的直播体验,成为我们的当务之急。为此,我们建设了一套直播全景监控系统,实时监控陌陌全平台直播服务质量。

系统架构实践

陌陌直播全景质量监控系统基于陌陌实时日志基础平台而研发,通过高效的实时分析系统,实时将各业务维度的数据进行聚合呈现,并加以监测报警,提供秒级故障发现机制。 同时,拨测系统在主播开播的第一时间向CDN拉取流媒体,进行内容层面的分析监控,第一时间发现问题流。

日志收集

流媒体分发质量的好坏,大多取决于CDN的节点分布程度,常用商用CDN公司由于资源限制等因素,在建设节点时,会形成一定的节点片区优势,而我们的业务又需要全局最优。 同时,任何系统都不能保证百分百的可靠性,CDN也有故障的时候。为了保证业务系统的高可用和最佳质量,陌陌采用了多路CDN分发,CDN之间互推的流媒体分发策略。

依托此业务架构,我们在推流终端、CDN入口、CDN互推入口、CDN出口、播放终端等重要环节进行流媒体质量指标采集,供全景质量监控系统分析使用。从业务上,日志分为以下两类:

  • 事件类,包含开播、停播、播放、停止、心跳等基础播放行为事件。
  • 质量类,包含带宽、帧率、延迟、卡顿等关键视频质量评测指标。

直播质量评估

我们知道,评测互联网直播分发质量最重要的三个指标是秒开、延迟和卡顿,其中又以卡顿最为影响用户体验。陌陌的大数据分析平台表明,当卡顿率上升的时候,大多数用户会选择放弃观看或者切换频道。

陌陌直播全景质量监控系统定义了一套直播质量评测指标,从不同的维度对当前分发质量做量化,主要包含以下几个方面:

  • 平均接入延迟
    平均接入延迟主要包含请求延迟、首包时间、首帧时间等,其中请求延迟定义为从发起HTTP请求到收到HTTP返回码所耗费的时间,用于衡量CDN网络的接入速度;首帧时间定义为从发起HTTP请求到收到第一帧流媒体数据所耗费的时间,用来衡量CDN的回源速度;

  • 端到端延迟
    端到端延迟是指媒体从主播端产生到观众端播放所耗费的整体链路时间。我们在主播端流媒体编码时,在媒体数据中加入时间戳信息,观众播放流媒体数据时解析该时间戳,即可得到端到端延迟时间。该时间主要用来衡量CDN分发引入的延迟大小,在直播系统中,在不影响卡顿等其他指标的情况下,延迟越小越优。

  • 卡顿率
    卡顿率=出现卡顿的在线用户数/在线总用户数*100%,通过此指标可以衡量当前卡顿影响的人群范围;

  • 人均卡顿次数
    人均卡顿次数=在线卡顿总次数/在线用户数,通过此指标可以从卡顿频次上衡量整体的卡顿严重程度;

  • 卡顿时比
    卡顿时比=卡顿总时间/播放总时间*100%,通过此指标可以从时间维度衡量卡顿严重程度;

  • 推流故障率
    推流故障率=推流失败次数/总推流次数*100%,通过此指标可以衡量当前主播的开播故障情况,通常CDN网络出现故障时会导致主播开播不了,此值会变高。

  • 播放故障率
    播放故障率=播放失败次数/总播放次数*100%,通过此指标可以衡量当前观众播放故障情况。

通过以上算法,已经能够比较全面的衡量直播分发质量情况。

多维度业务聚合

陌陌在直播分类中属于泛娱乐直播,与游戏、户外直播最大的不同之处在于主播数目庞大,我们需要将大量的主播分散到不同的CDN、不同的域名去做分发。运维需要实时关注到各业务维度的直播质量情况,基于在线用户数,监控系统提供了丰富的业务维度聚合监控。

  • 在线用户定义

在线主播,当主播开始直播,主播端会发送“开始推流”事件日志,即可将主播视为上线;当主播停止直播,主播端会发送“停止直播”事件日志,即可视为主播下线。在网络不可靠或者终端crash的情况下,事件日志可能会出现丢失,加上主播端的心跳,即可解决此种情况。

在线观众,当观众进入房间观看,观众端会发送“开始播放”事件日志,即可视为观众上线;当观众退出房间,观众端会发送“停止播放”事件日志,即可视为观众下线。当房间销毁时,所有在该房间的观众视为下线。

  • 业务维度聚合统计

业务维度聚合统计提供了不同角度的质量监控视图,主要分为全网维度、CDN维度、域名维度、CDN节点维度、房间维度、ISP维度、房间类型维度、终端类型维度、观众维度等。

以房间维度为例,主要关注该房间在全网的分发质量情况,例如观众走势、卡顿走势、故障率走势、开播时间等。

实时报警机制

基于多业务维度的统计数据,我们做了一系列的报警机制。报警分为状态类报警和通知。状态类报警定义为当监测指标高于(低于)报警门限值时,报警发生,当监测指标低于(高于)报警门限值时,报警恢复,例如“卡顿率过高”、“故障率过高”等;通知类报警定义为当监测指标达到报警门限时,报警发生,再次达到门限时,报警再次发生,没有报警状态,不存在恢复,例如“在线用户在五秒内减少百分之二十”、“卡顿比环比增加百分之十”等。

报警方式采用陌陌基础智能报警平台,支持IM、短信、电话等众多通知方式,在出现故障时,第一时间通知相关责任人。

主动拨测

实时日志分析只能被动监控线上已经发生的问题,在第一时间驱动故障方解决,算是一种“亡羊补牢”方案。主动拨测系统作为全景质量监控系统的补充,通过智能调度中心进行任务分发,在主播开播前探测主播推流节点故障情况,在主播开播后第一时间探测流媒体可用性,在观众播放前探测重点区域节点可用性情况。

考虑到拨测终端大多数终端部署在IDC机房,用拨测系统来评价网络分发质量不能代表用户终端真实的播放情况,因此,拨测系统的主要设计目的是评价流媒体在内容层面上的可用性及CDN节点的可用性。

  • 流媒体内容指标测量
    流媒体内容层指标我们做了媒体完整性监测和媒体内容质量监测两类。媒体完整性监测主要是分析HTTP+FLV拉取的FLV文件完整性,包含FLV头部信息是否完整,视音频帧是否存在, 首帧是否为I帧(确保首屏不花屏);媒体内容层监测主要分析流媒体的视音频不同步、黑屏等。

  • 智能调度中心
    智能调度中心按照业务需求,对拨测终端进行任务分发及结果收集。从任务上划分,我们定义了自动任务和手动任务,自动任务通过与BO(后台系统)联动,实时获取最新开播房间,自动轮询房间媒体质量情况;手动任务主要用于运维在发现故障的情况下,对指定区域或CDN节点,进行定向拨测。

未来展望

陌陌直播全景质量监控系统的上线,为直播业务运维提供了一双眼睛,在功能逐步完善的情况下,做到第一时间发现问题、第一时间解决问题、第一时间预警问题。

在未来,我们将利用监控系统采集到的质量数据,结合CDN的区域差异、稳定性差异等,优化智能调度系统,让陌陌的流媒体在互联网上最优化传输,为用户提供最佳的直播社交质量体验。

了解最新移动开发、VR/AR 干货技术分享,请关注 mobilehub 微信公众号(ID: mobilehub)。

陌陌直播全景监控系统实践相关推荐

  1. grafana+prometheus快速搭建MySql监控系统实践

    一.背景 对于LNMP环境下的开发者来说,mysql是非常重要的一环,同时mysql的性能监控也是开发者所需要关注的一环:如果大家使用阿里云的RDS会感觉到其监控功能非常好用,但如果开发者使用的是自建 ...

  2. 监控系统实践第9天:使用Composer下载Laravel8.5

    监控系统实践第9天:使用Composer下载Laravel8.5 昨天大致介绍了一下Composer的用法,今天来实操一把,在CentOS系统下,用Composer下载Laravel 8.5,其他系统 ...

  3. 基于 Prometheus 的监控系统实践

    监控作为底层基础设施的一环,是保障生产环境服务稳定性不可或缺的一部分,线上问题从发现到定位再到解决,通过监控和告警手段可以有效地覆盖了「发现」和「定位」,甚至可以通过故障自愈等手段实现解决,服务开发和 ...

  4. 外网质量监控系统实践之路

    女主宣言 _ _ _ _ _ 用户在访问360服务器时,会经过运营商链路.各省的机房然后到达vip,那么在这个链路中任何一个环节出现问题,都会导致用户无法正常上网.如何快速.准确的定位到这个链路中的哪 ...

  5. 小米运维—互联网企业级监控系统实践

    监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题.监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择.当公司刚刚起步,业务 ...

  6. 微店分布式监控系统实践

    早期我们和很多公司一样使用的是 zabbix 监控,应该说 zabbix 的功能还是蛮强的大的.但是随着公司的业务发展,我们很快发现有很多问题 zabbix 很难解决. 问题主要提现在几个方面,第一, ...

  7. 【解决方案】TSINGSEE青犀视频RTMP推流网关+公有云直播远程监控系统,让“小饭桌”变成“放心桌”

    近几年来,学校附近的小饭桌如雨后春笋般出现,选择一个好的小饭桌,让各个家长花费了很大的精力.为此,很多小饭桌为了提高学生数量,在厨房和学习地方安装监控,并将视频公开给家长. 安装监控不仅解除了学生家长 ...

  8. 360内部监控系统Wonder实践之路

    女主宣言 Wonder监控系统目前已经是360内部最大.最健全的监控系统.基于open-falcon改造的Wonder,从2016年4月上线至今已经运行了一年多,从最初的"乞丐版" ...

  9. srs流媒体服务器windows_基于SRS构建的直播平台的监控系统的搭建思路与实现方法...

    市面直播平台百家争鸣,直播监控系统是判断一个直播平台是否完善的必要条件.文章简要介绍了笔者搭建的一套基于SRS的直播平台,并从设计思路.实现方法与实现过程等方面重点介绍了针对此直播平台建设的监控系统, ...

最新文章

  1. php或js判断网站访问者来自手机或者pc端源码
  2. 高性能计算机存储部件有磁盘阵列,信息存储技术——磁盘阵列解读.pptx
  3. OverFeat4.2的安装和使用
  4. python yield from yield_python yield和yield from用法总结详解 python yield和yield from用法总结...
  5. SpatialHadoop中空间索引系列之(四)空间格网索引实现
  6. 摘:多线程和异步的区别
  7. IBM Lotus Domino V8.5 服务器管理入门手册
  8. 结队编程思路及感悟(python、tkinter、mysql、腾讯云短信等)
  9. Orchard详解--第五篇 CacheManager
  10. mysql utf8转gbk cmd_修改xampp的mysql数据库utf8mb4为gbk以解决cmd内中文显示为问号
  11. Polymorphism in Overloaded and Overridden Method
  12. 轻量级纯CSS框架,11款最轻量级的CSS框架
  13. gyb优化事项(1)
  14. Interpreter
  15. EDM电商邮件营销模板设计规范流程
  16. KingbaseES的表空间
  17. 图形界面 I: 用于表单按钮的函数与删除界面元素 (第四章)
  18. Java多线程探究-死锁原因
  19. github博客Hexo引流到微信
  20. 如何创建 ESXi 安装程序 USB 闪存驱动器

热门文章

  1. 支持向量机SVM--sklearn.svm.SVC【机器学习笔记简摘】
  2. 【数电】如何使用74LS112(或74LS74)构成一个十四分频器(模七计数器)
  3. 都说程序员的工资高,程序员工资真的很高吗?小编今天带你解析一下程序员薪资的真实情况
  4. 58同城 -- 前端一面
  5. AI打王者、星际争霸……你还不懂背后技术?这有一份游戏AI综述
  6. 关于一些测绘软件的评价
  7. android便签工具下载,小鱼便签软件下载-小鱼便签 安卓版v1.01.14-PC6安卓网
  8. 图大杀猫:数据可视化的真善美
  9. mt管理器主题修改教程_微信主题设置教程及链接来啦!
  10. 干货 | 空压机安装指南