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

  1. 直播平台与其监控系统简介

国内直播行业自2016年“井喷”式发展以来,在各行各业遍地开花,秀场、娱乐、游戏、教育、电商等行业应用尤为突出。笔者与时俱进,准备研究一下企业级视频直播技术应用,目前已经搭建了一套直播平台。在技术选型上,出于性能、文档完善性等方面考虑,我们选择了开源直播框架SRS作为直播服务器。SRS是由国人Winlin大神在Github上开源的一款流媒体服务器软件,定位于运营级互联网直播服务器集群,目前已经更新至V4版本,V3版是其稳定版本。我们在SRS已实现的基本RTMP等协议推拉流的基础上,开发了用户系统、直播房间管理、防盗链功能、弹幕系统、点赞系统、礼物系统等功能,并开发了Android、iOS、PC、Web直播客户端,实现了一个大致完善的视频直播平台。随着功能的增多,在开发调试及测试的过程中,我们发现,必须拥有一套针对直播平台的监控管理平台,以增加平台的健壮性、可用性与易用性。该监控管理平台用来对SRS集群进行统一配置管理,对服务器资源、网络流量、多媒体流、房间信息等进行统一监控,以方便后台人员对整个平台进行把控;同时,拥有一系列预警机制以应对大流量、网络中断、服务器断电等突发事件。

2. 监控数据的获取

要进行平台的监控,需考虑需要监控哪些指标,能够从平台获得什么数据,采用什么方式从平台获取数据等问题。针对基于SRS开发的直播服务平台,我们采集获取监控数据的方式主要有3种:基于SRS提供的HTTP Api获取、从数据库及Redis获取、程序中埋点输出获取。1. 基于SRS提供的HTTP Api获取监控数据。SRS提供了一套HTTP Api,供外部程序获取数据及管理服务器,支持跨域访问。以下是SRS官方提出的HTTP Api设计原则:

  • 只提供json数据格式接口,要求请求和响应的数据全都是json。
  • 不提供html数据,譬如运行SRS后,浏览器打开HTTP接口或HTTP服务地址,看到的是json,不是html。
  • 发生错误时,支持HTTP错误码,或者json中的code错误码。

通过查阅SRS官方文档及源码,SRS HTTP Api可获取的数据如下表:

调用SRS提供的HTTP Api,需要在SRS服务器配置中增加http_api相关配置,下图是一个参考配置:

首先,将enable设置为on,表示开启http api;listen设置为1985,表示其监听端口,假定SRS服务器地址为127.0.0.1,则可以通过http://127.0.0.1:1985/api/v1访问其http接口;raw_api相关配置表示开启服务器配置及重载等写入型接口。完成配置并重新加载服务后,即可访问SRS服务器的http api。以summaries api为例,在浏览器中输入http://[srs ip]:1985/api/v1/summaries,返回结果形式如下:

可以看出,返回的结果是标准json形式,需要进行json解析并筛选出所需字段进行展示。2. 从服务端数据库及Redis中获取监控数据。除了SRS服务器资源相关数据之外,直播间信息、用户信息、直播统计信息、主播及观众等业务相关数据存储在数据库及缓存中。监控系统采用SpringBoot框架开发,导入相关驱动后,映射数据对象即可直接访问数据源获取所需数据。 3. 程序中埋点输出监控所需数据。一些中间过程数据可以体现程序处理状态或者系统走势,这类数据既不能在SRS的HTTP接口中获取,也不会在数据库或缓存中存储,此类数据的获取需要在程序中埋点输出。所谓埋点就是在程序生成该数据处添加监控语句,将数据以指定方式输出,如输出到内存、文件、监控缓存或数据库。如果是带时间序列的数据,则会增加时间戳,展示时可展示成历史曲线,用以预测系统走势。

3. 监控指标及数据展示

有了数据获取的途径,接下来需要考虑具体展示哪些监控指标及如何将指标展示的问题。1. 监控指标监控指标大致可分为三类:集群性能数据、多媒体流数据、业务统计数据。通过集群性能数据,用户可直观了解直播集群当前CPU使用率、内存大小、网络流量、负载等情况,实现系统层面的指标监控。通过多媒体流数据,用户可获取集群中每台机器的推拉流信息及当前直播的每路推流端的具体信息,实现媒体层面的指标监控。通过业务统计数据,用户可了解当前直播房间数、房间观众数等业务数据,实现业务层面的指标监控。2. 监控数据展示通过调用接口、查询数据库及埋点等方式获取的监控数据,经过服务端解析处理后,展示至前端监控平台。以多媒体流数据为例,用户通过管理端页面选择浏览当前推流数据信息,前端页面将请求传至后台,后台调用流信息查询接口向SRS请求流信息数据,SRS收到数据请求后将对应服务器上的流信息以json格式返回,监控平台对json格式报文进行解析,并以约定格式提供给前端以供展示,效果如下:

也可通过定时模块将指定间隔采集的数据记录到数据库中(时间间隔可配置)。当前端发起历史数据查看时,监控平台依据请求从数据库中获取指定时间段内的监控数据,经过处理返回给前端,前端采用echart等插件完成从数据到图形的映射,生成折线图等形式的图表,大幅度提升可视化应用的性能。

4. 平台参数配置

参数配置功能提供服务配置重新加载、服务器全局和Vhost配置等功能。配置重载简化了系统重新加载配置的流程,配合服务器参数配置功能,实现参数实时修改,实时生效。参数配置功能通过管理端将参数值由前端传至服务端,通过调用系统更新数据接口方式改变所选系统参数。该功能主要基于SRS提供的HTTP RAW API。首先开启raw_api相关设置,允许通过api进行配置修改(若不开启会返回错误码1061)。以配置重载为例,通过直播监控平台前端选择需要重载配置的机器ip,并将请求发至后台,后台收到请求后调用reload接口,SRS接收请求并进行配置修改,若修改成功,则返回成功(code为0)。直播监控平台将SRS的返回处理后发送至前端,前端对返回码进行判断,更新执行结果信息,效果如下:

参数配置功能和数据展示功能相辅相成,用户可通过数据展示了解当前系统运行情况,并以此为据,通过参数配置功能调节系统运行参数,调整后再观察相应指标的数据展示,实现动态调整配置,确保直播系统平稳运行。

5. 总结

文章介绍了一个基于SRS构建的直播平台的监控系统的搭建思路与实现方法,重点从监控数据的获取方法、监控指标需求、数据展示方法与过程、平台参数配置过程等方面介绍监控系统实现过程,为如火如荼的直播平台提供了监控领域的参考。

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

  1. 开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享

    开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享 一.优秀的流媒体博客资源 1.1 EasyNVR:专注于安防视频互联网化的技术 1 ...

  2. 基于Java毕业设计在线直播平台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计在线直播平台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计在线直播平台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  3. 【解决方案】国标GB28181视频监控平台国标流媒体服务器EasyGBS如何实现安保行业日常巡查视频监控系统解决方案?

    安保公司的成立主要对所辖区域实行24小时全天候保安巡视服务,为防盗.防火.防灾.交通和维持管理区域的公共秩序,预防和处理各类不安全事件.巡视时要经常定时汇报巡视情况,加强死角地段的治安执勤巡逻,负责上 ...

  4. SRS流媒体服务器——WebRTC推拉流演示

    SRS流媒体服务器--WebRTC推拉流 目录 WebRTC推拉流配置 WebRTC拉流演示 WebRTC推流演示 SRS官方WebRTC文档:https://github.com/ossrs/srs ...

  5. SRS流媒体服务器——单机环境搭建和源码目录介绍

    SRS流媒体服务器--单机环境搭建和源码目录介绍 1. 目录 环境搭建 源码目录介绍 1. 环境搭建 srs官⽹:https://github.com/ossrs/srs 码云的源速度快:https: ...

  6. SRS流媒体服务器——Edge集群搭建

    SRS流媒体服务器--Edge集群搭建 目录 edge原理 dege配置 1. edge原理 SRS的Edge主要解决⼏条流有⼤量播放请求的场景,⽐如⼀个流有上万⼈观看. SRS的Edge能对接所有的 ...

  7. SRS流媒体服务器——Forward集群搭建和源码分析

    SRS流媒体服务器--Forward集群搭建和源码分析 目录 Forward集群原理 RTMP流转发(Forward)部署实例 Forward集群源码分析 1. Forward集群原理 Forward ...

  8. SRS流媒体服务器搭建流程-简单实用版

    #SRS流媒体服务器搭建流程-简单实用版 经过查阅很多博客,讲述的都不是很完善而且还把我搞的晕头转向,经过查阅20多篇文章特整理出简单的,SRS流媒体服务器搭建以及推流和拉流的一整套流程. #安装环境 ...

  9. srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)

    #为SRS流媒体服务器添加HLS加密功能(附源码)# 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的 ...

最新文章

  1. OpenCASCADE Make Primitives-Sphere
  2. 题目1431:Sort
  3. TensorFlow-CIFAR10 CNN代码分析
  4. ApplicationContext和BeanFactory
  5. LVS(13)——DR模型准备工作及ip地址冲突问题
  6. 抖音快手小视频推荐算法之--协同过滤算法剖析
  7. Android7.0,剪裁后提示“无法保存经过裁剪的图片”
  8. 谷歌招聘主管公开八大求职秘诀
  9. 嵌入式Linux系统编程学习之十一Linux进程的创建与控制
  10. levedb 导入 mysql_leveldb研究3-数据库日志文件格式
  11. python获取指定日期的前N天日期和后N天日期
  12. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_1 请求参数绑定入门
  13. xml 操作组件(NewLife.XCode)
  14. [文档]CSS中文字体对照表
  15. LabVIEW编程LabVIEW开发雷赛SMC6480运动控制模块例程与相关资料
  16. 信息系统分析与设计(第四版)期末复习提纲
  17. 下沉市场不需要巨头,但很需要社区团购
  18. QT for Android串口开发
  19. PHP创建Epub文件
  20. ctfshow crypto funnyrsa3 RSA之dp泄露

热门文章

  1. Python中OS模块
  2. Newsgroups数据集介绍
  3. luogu P1702 突击考试
  4. 开博客第一天!!来几句鸡汤
  5. 关于get请求的乱码问题
  6. java与C++不同之处(java不支持特性)
  7. 【BZOJ】【1096】【ZJOI2007】仓库建设
  8. javascript模态窗口Demo
  9. Computer Systems A Programmer's Perspective(深入理解计算机系统)第一章读书笔记
  10. Java 1-Java 基础语法