直播技术:从性能参数到业务大数据,浅谈直播 CDN 服务监控

算法工
• 阅读 1562

线上服务的有效监控和数据收集,一直是后端服务离不开的话题。直播作为一种经典的分布式系统,监控以及数据收集更是必不可少的工作。如何对海量的服务集群有效的监控和保活,又如何抓取集群中的碎片数据中来优化服务?网易云信音视频研发工程师将和大家共同探讨。

推荐阅读
《视频私有云实战:基于 Docker 构建点播私有云平台》

机器站在巨人的肩膀上用着轮子

作为分布式集群,物理层上的最小单位自然是机器。对于一台机器而言,常规性能指标自然就是 CPU、内存、网卡的使用情况。这些性能有很多方式去获取,而视频云采用的是网易的哨兵系统。哨兵系统是网易的监控系统,提供了非常详细和即时的性能指标。
直播技术:从性能参数到业务大数据,浅谈直播 CDN 服务监控
借由哨兵这个强大的轮子,我们能非常方便的在机器级别上,做出有效的监控。例如当网卡流量或者 CPU 异常的时候,可以快速的报警采取处理。当然,不光光可以监控机器是否能正常运行,也可以监控是否被恶意攻击,这个暂且不谈。

性能指标与业务融合

当然,只有机器级的数据,是远远不够的。俗话说,不与业务贴合的数据,不是好数据。作为直播 CDN 服务,最常规的参数,自然是音视频码率和延迟。
直播技术:从性能参数到业务大数据,浅谈直播 CDN 服务监控
细心的看官们可能发现了几个比较特殊的统计。

为什么统计了总码率也统计了音视频单独的码率?
这是因为在真实的场景中,总码率并不一定能还原出我们需要的场景,有很多情况会需要单独的分析音视频码率,例如用户主动关闭了视频输出或者机器采样性能不足导致的视频卡顿,这个时候只需要配合帧率的统计,就可以快速还原场景。当然,视频码率本身也不是一个固定的数值。视频云也针对弱网提供QoS(即可变码率)的功能。

推送延迟 push_delay 是什么?
推送延迟,是一个衡量 C/S 之间网络情况的参数。当这个参数发生波动的时候,则说明 C 端的包到达 S 的时间比预计要长。能够反映出网络的抖动情况。如果计算这个数值呢?简单来说,是使用了 RTMP 包头部的时间戳。如果非要用一个公式解释一下,我觉得应该是:
Delay=abs( (当前 RTMP 包的到达时间-上个 RTMP 包的到达时间) – (当前 RTMP 包的时间戳–上个 RTMP 包的时间戳) )

计算每个包到达服务器所消耗时间的差异值,用于代表网络的抖动。当然,还需要做其他很多事情,例如加权和jitter算法来减少误差和避免。

为什么还有 send_kbps?
其实这也挺好理解,因为 CDN 本身是分布式系统,在节点和节点间需要做路径选择,然后从节点到节点传输,从而实现加速。Send_kbps 其实就是前一个节点向后一个节点的发送码率。那么这就涉及到了一个问题,如果去 trace 某一条流的数据呢?对于每一条流,我们会给予一个唯一的标记,在节点间传递的时候,我们会给流添加一个自增的标记 Hops。
通过这个标记,可以精准的找到这条流在节点件的走向,从而把各个节点的数据聚合在一起。其他,我们还会抓取一些类似源 IP,用户设备等客户端的信息。这些信息能帮忙我们走进大数据时代。

整体数据服务的架构

分布式系统中,每一个节点都会产生大量的统计和性能数据。所以在视频云,有一个完整的统计架构来作出支持。从最前端的数据采集、传输,到汇总,然后到计算集群,最后输出。每一个服务都各司其职。让我们来看看整体架构。
直播技术:从性能参数到业务大数据,浅谈直播 CDN 服务监控
对于每一个区域,会有一个数据汇聚的服务器,负责从流媒体服务器收集数据。最初的元数据,经过数据汇聚服务器汇总、过滤和压缩以后。统一上报到中心集群中的统计服务器。统计服务器会将所有的统计数据,逐一落库,储存在数据仓库中。其余的数据计算集群,会从数据仓库中定时进行读取计算。具体的计算间隔,会根据业务类型不同而不同。例如运维平台会主要读取一些机器级别的数据,进行分析和报警。大数据计算集群则会对数据进行计算,得出优化方向,此处我们稍后再聊。业务数据展示平台则是会实时的输出数据(例如码率和延迟),用于提供给用户和技术支持查询。当然,还有其他各种各样的数据处理服务,这里就不再一一介绍。

数据能做的一些事情

最后,我们聊一聊数据。在这个大数据时代,有了数据却不做事情,等同于浪费。那么,有了这些数据以后,我们做了什么事情呢?当然,最显而易见的,就是调整调度策略,增设布点。例如,上图的大数据的运算结果,南京电信的网络权重比较差,这就说明南京电信地区需要进行排查。而南京移动的用户量较大,也说明南京地区应该增设服务点。
直播技术:从性能参数到业务大数据,浅谈直播 CDN 服务监控
此外,数据和性能指标的上报,也会被用于均衡负载调度。例如某一个节点压力较大的时候,或者性能不稳定的时候,这个节点的调度优先级就会被降低(即不太会被优先分配给用户)。
以上就是我对于直播 CDN 服务监控的一些看法,但是直播 CDN 服务监控和数据收集是一个值得无止境讨论和优化的事情,欢迎大家留言与我探讨。


随着即时通讯以及音频处理和压缩技术的不断发展,效果更好、适用范围更广、性能更高的算法和新的技术必将不断涌现,如果你有好的技术或者分享,欢迎关注网易云信官方博客和 GitHub:

关注更多技术干货内容:网易云信博客
欢迎关注网易云信 GitHub
欢迎关注网易云信官网
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
RAC环境单实例启动数据库收到ORA
     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(
Stella981 Stella981
3年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Stella981 Stella981
3年前
CoreOS实践指南(十):在CoreOS上的应用服务实践(下)
在这篇中,会继续接着前次的话题,通过具体的案例,介绍CoreOS为分布式和集群服务带来的便利。在前一个案例中,为了完成采集和管理分布在集群各个节点上的服务状态信息,我们通过Etcd的分布式存储特性,设计了一种解决分布式服务中应用运行的节点和时间均不确定的问题的监控方法。在这次的案例中,会在这种服务监控方案的基础上,继续实现将监控结果作为自动配置的反馈,从
Stella981 Stella981
3年前
Linux系统:Centos7下搭建ZooKeeper3.4中间件,常用命令总结
一、下载解压1、Zookeeper简介Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状
Stella981 Stella981
3年前
Prometheus监控告警浅析
前言最近有个新项目需要搞一套完整的监控告警系统,我们使用了开源监控告警系统Prometheus;其功能强大,可以很方便对其进行扩展,并且可以安装和使用简单;本文首先介绍Prometheus的整个监控流程;然后介绍如何收集监控数据,如何展示监控数据,如何触发告警;最后展示一个业务系统监控的demo。监控架构Prometheus的整个
云空间技术在视频监控中的隐私保护策略
随着云计算技术的发展,视频监控系统越来越多地采用云空间技术来存储和处理数据。然而,随之而来的是对个人隐私保护的担忧。本文将探讨在开发和部署基于云的视频监控系统时,如何实施有效的隐私保护策略。
云监控的核心:确保稳定性的关键监控指标
云监控是指对云服务进行实时监控,收集和分析各种运行数据,以便及时发现和解决潜在问题。云监控的目的是确保云服务的稳定性、可用性和性能。为了实现这一目标,需要选择一系列关键监控指标来全面反映云服务的运行状态。