怎麼用大數據平台建立一個直播質量監控系統?

背景

去年( 2016 年)被稱為直播元年,各類移動直播平台如雨後春筍冒出,不斷滿足人們對強交互、高實時性的新媒體載體的要求。直播過程中所涉及的環節眾多,諸如推流、網路傳輸、節點調度、流處理和播放等,要全面地建立起一套能夠對各個環節性能進行監控的系統絕非易事。目前七牛直播雲已經建立起一套完善的內部數據監控平台,實現了一個智能調度、按需伸縮、高容錯的實時流網路,我們稱之為 LiveNet。LiveNet 完美解決了直播場景的三高之痛:技術門檻高、成本高、卡頓延時率高。

然而,在實際的客戶對接及服務過程中,各式各樣的問題仍然不可避免,如直播卡頓、馬賽克、花屏、黑屏、雜音、音畫不同步等等。這些問題中,有些是傳輸鏈路原因,有些是用戶的使用姿勢引起,有些是參數配置錯誤所致,也有些是直播 SDK 本身的問題。很多情況下,如果沒有足夠的數據線索進行支撐,應對線上用戶反饋的這類問題,直播平台開發者經常兩眼一抹黑,定位問題基本只能靠猜。通常情況下,在直播客戶沒有建立自己的直播質量監控系統時,七牛雲的專業技術服務團隊是客戶排障的第一選擇。針對絕大部分常見的問題,七牛雲技術支持能夠快速提供排查建議,如幫助查詢某路直播流的實時狀態,判斷主播推流的穩定性。

但是,由於七牛雲直播技術支持並沒有直接接觸到各個直播客戶的終端用戶,在問題排查過程中難免存在信息不對稱的情況,增大溝通的時間成本。特別是當直播客戶線上問題集中爆發時,如果直播平台的開發者沒有一個系統的途徑能夠進行自查,勢必使得該直播平台的用戶體驗陡然下降。那麼,建立一個直播質量監控系統需要有哪些投入呢?以下我們為您詳細解析。

直播質量監控系統

通常來說,如果要建立一套自己的直播質量監控體系,一般要完成以下幾個步驟:

  • 在 App 端埋點,收集由直播 SDK 回調的音視頻幀率、碼率等與直播質量相關的數據,並進行上報;

  • 建立一個收點的網關,如果數據量太大,還需要 Kafka 等隊列做數據緩存;

  • 搭建 HDFS 、 Elasticsearch 等存儲服務,將接收的 QoS 數據轉存到這些存儲系統;

  • 搭建一套實時/離線數據流分析服務;

  • 數據可視化展示、告警系統。

實現以上功能,不僅需要有一個資深大數據背景的技術團隊和客戶端團隊的支撐以及漫長的開發周期,系統上線後仍需持續投入精力持續維護迭代,以應對諸如逐步上升的數據量;若是對平台的橫向擴展能力沒考慮周全,眾多開源組件崩盤的風險很可能會讓之前的投入白費。

那麼,有沒有一種不需要自己造輪子的途徑,去實現絕大部分質量監控功能?如今,我們給出了肯定的回答!藉助於七牛大數據平台 Pandora,以及七牛直播雲 SDK 所集成的 QoS 質量上報模塊,七牛直播雲用戶能夠快速打造一套屬於自己的實時直播質量監控系統,並實現各種維度的自定義分析能力。

七牛大數據平台 Pandora

七牛大數據平台 Pandora 是一套面向海量數據,能夠讓基礎技術人員輕鬆管理大數據傳輸、計算、存儲和分析的大數據 PaaS 平台,提供簡單、高效、開放的一站式大數據服務,核心服務及功能包括大數據工作流引擎、時序資料庫、日誌檢索服務、Spark 服務、報表工作室。同時提供了海量離線數據分析等眾多大數據分析工具支持,並結合七牛雲生態,賦能應用大數據的核心能力,讓用戶可將資源精力聚焦於業務價值提升而無需擔憂複雜的大數據技術和部署運維難題。

直播 QoS

直播質量 (QoS)實時上報模塊幾乎是每個高品質直播 SDK 的必要組成部分,它對於提升直播 SDK 性能以及直播網路的節點調度策略、鏈路質量具有重要作用。七牛雲直播 SDK 的 QoS 模塊使我們可以對終端用戶連接的節點進行實時監控,了解其推流失敗次數、卡頓次數以及卡頓時長。通過推流性能的實時監控和服務端實時調度系統的結合,可以實現對推流用戶線路和節點的調整。

如何啟用七牛直播質量監控服務

直播雲 SDK 集成

首先,請確保您的直播 App 集成了最新版本的七牛推流/播放 SDK。是的,在移動端,您要做的就是這麼簡單!

創建 Grafana App

怎麼用大數據平台建立一個直播質量監控系??

載入我們為您提供的 Grafana 配置

完成以上步驟後,便已萬事俱備,只待直播質量日誌的持續上報。

至此,您已經可以:

在 Grafana 中觀察到精細到每個流的質量變化曲線;

通過 Pandora 日誌服務 LogDB 所提供的強大日誌檢索功能,快速回溯追蹤每個流或某個用戶設備的數據。

Grafana 數據可視化展示

目前,我們為您預先內置了五個直播質量統計場景,分別是推流狀態、伺服器狀態、播放地域統計、播放終端跟蹤和地區運營商狀態。

推流各質量指標曲線,實時查看每個推流的音視頻幀率、碼率等指標的變化

怎麼用大數據平台建立一個直播質量監控系??

地區運營商平均推流質量曲線,可快速了解某地區、某運營商的總體推流狀況

怎麼用大數據平台建立一個直播質量監控系??

播放終端質量曲線,查看總體播放質量變化,或精細到單設備的各項播放指標監控

怎麼用大數據平台建立一個直播質量監控系??

直播流在某區域運營商的播流質量曲線,讓每個流在每個城市、運營商的播放質量都能得到監控

怎麼用大數據平台建立一個直播質量監控系??

推流加速節點的平均質量曲線,用於幫助判斷是否由於推流節點的負載變化導致直播質量的變化

怎麼用大數據平台建立一個直播質量監控系??

需要指出的是,這些內置場景只是 QoS 數據的一小部分應用,您可以根據需求拓展或增加 Grafana 的 Dashboard,關注您想要的質量維度。

LogDB 直播質量日誌檢索

事實上,直播質量日誌在被可視化呈現之前,會被先導入到 Pandora LogDB 日誌檢索服務中。您可登錄七牛官方網站,在日誌檢索模塊中進行直播質量日誌搜索。並且 LogDB 無縫兼容 Elasticsearch 協議,您也可使用我們為您提供的 Kibana 應用玩轉日誌檢索。通過質量日誌搜索,您可以進行各種直播問題的查詢,如根據某個設備 id 進行單用戶的日誌回溯,進行用戶級別的直播排障。

怎麼用大數據平台建立一個直播質量監控系??

直播排障

那麼,這些可視化圖表及日誌搜索該如何派上實際用場呢?下面我們就以一個常見的直播排障場景來說明這些數據在定位問題中能夠給到直播廠商的幫助,使直播平台的技術人員能夠自助快速排障。

假設某個主播向直播平台反饋直播卡頓,那麼,直播平台的技術人員首先獲取到該主播的流 id,然後在 Grafana 的流狀態Dashboard 中,過濾出這個流,發現其推流曲線如下:

怎麼用大數據平台建立一個直播質量監控系??

從時序圖中,可以看到有幾個時間點推流的音視頻幀率、碼率都降為 0,存在一定的波動。那麼,這個波動是由什麼原因引起的呢?是主播的網路不穩定?主播將直播 App 退至後台進行了其他操作?還是推流的節點負載過重?

為了回答上面的猜測,直播技術客服利用日誌檢索服務進行更進一步的問題追蹤,那便是在 LogDB 中搜索推流 id,回溯主播的推流行為。

怎麼用大數據平台建立一個直播質量監控系??

通過搜索該主播設備上報的直播質量日誌,可以發現,在音視頻發送幀率降為 0 的幾個時間點,其音視頻的編碼幀率也為 0,並且視頻發送緩衝區的丟幀率為 0,這說明了並非由於主播網路問題導致發送丟幀,而是直播 App 退至後台導致音視頻的採集被掛起。此時基本可以判定直播不暢的鍋該由主播自己背,平台可以幫助矯正這個主播的使用姿勢。

更進一步地,如果全部情況都表明主播的網路質量良好,操作正常,那麼可以觀察該直播流所連接節點的情況。若該節點其他的流也存在類似的波動,那麼證明節點的負載過重,可為這些直播流進行推流節點的調度以優化推流質量。

以上,通過簡單的幾步查詢,直播平台便能自助針對單個用戶的問題進行定位排查,極大縮短了線上問題的解決周期,提昇平台用戶體驗。

告警設置

除此之外,我們還為您創建的 Grafana 提供了完善多樣的報警功能。使您能夠對重點關注的直播質量指標進行監測,主動發現並解決問題。

我們同樣以一個場景來說明告警的使用姿勢。比如,您可能很關注播放終端的平均接收碼率,因為它直接關係著用戶觀看的視覺體驗。假設您期望播放碼率的平均值應該在 800Kbps 以上,那麼就可針對這個指標設置一個告警監控。如下圖:

怎麼用大數據平台建立一個直播質量監控系??

一旦監測的平均播放碼率小於期望值,那麼您將收到如下一個報警消息。此時,直播平台運維可快速做出響應,查看問題出現的原因。

怎麼用大數據平台建立一個直播質量監控系??

啊哈,原來如此!

那麼,開通了基於 Pandora 大數據平台的直播質量監控之後,您的客戶端質量數據又是如何被實時處理並呈現在您的面前呢?以下便為您揭曉箇中奧秘。

過濾用戶數據

直播 QoS 數據被客戶端上報後會進入收點服務的消息隊列(Kafka)中,利用一個內部數據採集服務,我們從消息隊列中根據推流域名實時過濾並拉取不同客戶的 QoS 數據,轉發到對應賬號的 Pandora 大數據工作流中。

事實上,Pandora 本身提供了一個強大的通用數據採集工具,它適用於各類日誌數據收集場景,比如:10分鐘內快速構建能夠承載海量數據的 nginx 日誌分析與報警平台

Pandora workflow 數據加工

在 logkit 將您直播 QoS 數據上報至 Pandora 時,會自動建立如下一個大數據工作流,目前是將 QoS 數據直接導出至下游的 LogDB 日誌檢索服務。Pandora 還提供了其他多種導出選擇,如導出到七牛對象存儲,可將全量日誌進行持久化;也可將日誌轉發到您自己的 HTTP 服務,使直播質量數據在您自己的服務框架中派上用場。

怎麼用大數據平台建立一個直播質量監控系??

分析維度延展

利用大數據工作流引擎,您可以利用上報到數據源中的 QoS 數據進行更多維度的自定義分析,只需在實時工作流中新建 Transform 計算任務,便能對上報的數據進行進一步的聚合處理,導出更多維度的數據。

例如,我們甚至可以利用 QoS 數據進行活躍用戶數這類簡單的運營統計分析,只需新建如下一個計算任務,加之簡單的一段 SQL 代碼,便能計算出各個省份每五分鐘內安卓活躍用戶的數量。計算結果可選擇導出到 LogDB、時序資料庫、七牛對象存儲或是您本地架設的 HTTP 服務,即將 Pandora 的直播質量分析結果迴流到您的平台進行落地。

怎麼用大數據平台建立一個直播質量監控系??

離線分析

除了利用實時工作流進行分析外,您還可創建離線的 XSpark,分析更多更久的海量數據,詳見 「XSpark 使用入門」

後記

如果您已經是七牛直播雲的用戶,那麼只需聯繫七牛 Pandora 團隊申請開通,審核通過之後,我們將為您提供一個開箱即用的直播質量數據監控應用。

如果您使用的是非七牛的直播 SDK,那麼,別著急,我們正在準備一個直播數據埋點 SDK,方便您進行相應的自定義直播質量數據上報。為了保障您的數據隱私安全,該 SDK 將全部開源,做到真正開放透明。同樣地,歡迎聯繫我們,與我們交流您所期望的直播質量監控需求。

七牛大數據平台 Pandora 目前處於有限開放階段

「點擊諮詢申請」



推薦閱讀:

網路是怎樣連接的-探索協議棧和網卡
在美聯航(United)飛機上使用免費Wi-Fi的探索
計算機網路(筆記)03--計算機網路結構
ngrok - 免費的內網穿透
「茴」字的五種寫法

TAG:大數據 | 互聯網 | 計算機網路 |