云栖大会在线用户行为分析场分享:海量流式视频日志收集

本文PPT由2017年云栖大会TI 在线用户行为分析专场阿里云北洲分享的《海量流式视频日志收集》整理而成。
云栖大会在线用户行为分析场分享:海量流式视频日志收集

在视频直播场景中,使用日志服务的目的是为了能够对当前直播的服务质量进行监控,比如受当前卡顿影响的人数、在线用户数量的变化趋势等。

为了能拿到服务质量,我们需要收集多种维度的日志数据,在介绍日志服务之前,先来了解下日志采集使用上的一些痛点。

  • 日志产生渠道非常多,怎么用一种统一的方式将这些日志快速的收集上来,并进行结构化,方便后续的分析处理,这里的挑战可以说非常之大。
  • 运维方面的困难。业务越来越复杂,怎么将新增加的模块上的日志采集上来,另外,我们希望采集软件能够自升级,并且升级过程中,用户的日志数据不会丢。
  • 我们往往在系统发生故障时,才想起来看日志调查问题,其实日志系统能做的事情远不止这些。

云栖大会在线用户行为分析场分享:海量流式视频日志收集
为了解决这些痛点,阿里云推出了日志服务。
日志服务是针对实时日志的一站式全托管服务,主要包括三方面功能。

  • LogHub,也就是日志数据的采集、存储、和消费。
  • LogShipper,主要是将存储在日志服务中的数据投递到下游数仓,包括OSS、MaxCompute、TableStore等,方便对数据进行离线分析。
  • LogSearch和LogAnalysis功能。主要对日志进行全文检索和进行一些实时的统计分析。

接下来我们重点讲解LogHub功能。
云栖大会在线用户行为分析场分享:海量流式视频日志收集
LugHub的功能分成两块:

  1. 数据采集,对不同平台、不同类型的日志都提供了便捷、易于扩展的接入方式
  2. 对接多种数据消费系统。
  • 开源层面,我们对接了Flink、Spark Streaming、Storm等主流的流计算引擎。
  • 阿里云这边我们对接了StreamCompute、AliMonitor、ARMS、EMR、JStorm等。
  • 提供了多种语言的高级消费库,这个库屏蔽了日志服务的实现细节,使得用户只需要专注于开发自身业务逻辑。
  • 对接了一些第三方的日志分析工具,比如Splunk、ElasticSearch。

云栖大会在线用户行为分析场分享:海量流式视频日志收集
最后我们来看下直播场景中日志系统的架构。
直播系统中有许多设备端,包括摄像头、浏览器、移动端,这些设备端通过流媒体协议RTMP和服务端通信,这里的服务端是搭建在ECS上的。
服务端会周期性的将流媒体的码率、音视频时间戳、卡顿情况记录到本地的日志文件中,通过这个日志我们可以分析出当前直播线路的状况以及在线用户数量等,我们希望将这个文件日志收集到日志服务中。
另外设备端有一些用户行为日志,比如用户开播、进入房间、离开房间等,我们也希望能收集到日志服务中。
使用日志服务收集这两块日志非常简单。
对于服务端的日志,只需要在ECS上安装我们提供的日志采集工具Logtail。对于设备端的日志,使用我们提供的JS库WebTracking直接就可以收集到日志服务中。后面如果服务端要扩容,只需要在新扩的ECS上安装Logtail。数据收集到日志服务中之后,后续可以使用StreamCompute和DataV进行分析展示。
可以说今天Loghub的生态已经非常完善了,我们可以做到让您在5min内将日志从0接入,并且在使用时没有任何运维代价。另外,不管您一天的日志量时1MB还是1PB,也不管您的应用是在杭州还是在美国,都可以快速接入日志服务。最后,我们承诺日志服务一年的故障时间在4个小时以内,也就是99.95%的可用性,使用成本是您使用开源软件自建的15%左右。

参考资料

  1. 日志服务
  2. 日志服务采集方式
  3. WebTracking采集方式
  4. 多实例协同消费库(Consumer Library)
  5. 使用日志服务对接下游消费系统
上一篇:传统应用层逻辑分库DB迁移阿里云DRDS+RDS分布式数据库


下一篇:微信支付.NET版开发总结(JS API),好多坑,适当精简。