Telltale:看Netflix如何简化应用程序监控体系
為了解決流媒體平臺應(yīng)用程序監(jiān)控的諸多痛點:警報太多、滾動屏幕太多、配置和維護太多......Netflix推出了Telltale —— 一個建立在“用不著不斷調(diào)整警報配置”前提上的應(yīng)用程序監(jiān)控系統(tǒng)。
作者:Andrei Ushakov, Seth Katz, Janak Ramachandran, Jeff Butsch, Peter Lau, Ram Vaithilingam, and Greg Burrell
原文鏈接:https://netflixtechblog.com/telltale-netflix-application-monitoring-simplified-5c08bfa780ba
01
Netflix的愿景
半夜,警報忽然被拉響,你從睡夢中驚醒,發(fā)現(xiàn)是一個度量標準跨過了限定的閾值。半夢半醒間,你迷迷糊糊地想,“這是真的出現(xiàn)了什么嚴重的問題嗎? 還是只是一個有待調(diào)整的(小小的)預(yù)警而已? 上一次有人調(diào)整我們的警報閾值是什么時候?也許只是因為上下游服務(wù)出了什么問題? ”。
但無論如何這是一個非常重要的應(yīng)用程序,所以你不得不把自己從床上拽起來,打開你的筆記本電腦,然后開始瀏覽dashboard以獲取更多信息。你還不能確信這是一個真正嚴重的問題,但你也意識到當自己在茫茫數(shù)據(jù)中尋找線索的時候,時間正在飛速流逝。
有效運作 Netflix 服務(wù)對該平臺的用戶體驗至關(guān)重要。畢竟當用戶坐下來看《Tiger King》(Netflix在疫情期間大火的一部自制劇)時,他只希望這部劇能夠流暢地播放(不要出其他任何幺蛾子)。
《Tiger King》海報
多年來,Netflix從24小時隨時待命的工程師那里學到了應(yīng)用程序監(jiān)控的痛點: 警報太多、滾動屏幕太多、配置和維護太多。流媒體平臺的播放團隊需要一個能夠使他們快速診斷和補救問題的監(jiān)控系統(tǒng),對他們來說,意外發(fā)生時的每一秒都是非常寶貴的。
而Netflix發(fā)現(xiàn)自己的Node team也需要一個能夠助力小規(guī)模團隊運行一系列大型應(yīng)用的強大系統(tǒng)。
為此,Netflix創(chuàng)建了 Telltale。
Telltale Timeline
Telltale 綜合了多種數(shù)據(jù)源,以創(chuàng)建應(yīng)用程序運行狀況的整體視圖。同時,它可以不斷學習應(yīng)用程序的典型運行狀況(是否健康、良好)而不需要警報調(diào)優(yōu)。
Telltale也因此知道到底什么是“運行狀況良好”,所以當程序所有者的服務(wù)有運行狀況不夠“良好”或僅僅是有“運行不良好”的趨勢時,Netflix都可以及時地通知他們。
度量是了解應(yīng)用程序運行健康狀況的關(guān)鍵部分。但有時候你可能有太多的指標、圖表以及太多的dashboard。Telltale只顯示應(yīng)用程序和上下游服務(wù)的相關(guān)數(shù)據(jù),Netflix則會用顏色來標識問題的嚴重程度(除了顏色,用戶也可以選擇用數(shù)字來顯示) ,這樣就可以一眼看出應(yīng)用程序的運行狀況。
除此之外,Netflix還會highlight一些更廣泛更有趣的應(yīng)用,比如區(qū)域流量疏散和附近程序部署,這些信息對于全面了解系統(tǒng)運行狀況至關(guān)重要,尤其是在事故發(fā)生的時候。
以上就是Netflix對于Telltale的愿景。而今天,這個愿景已經(jīng)成為現(xiàn)實,Netflix在上周的科技博客中寫道,Telltale現(xiàn)在監(jiān)控著100多個面向 Netflix 生產(chǎn)端的應(yīng)用程序的運行狀況。
在生態(tài)系統(tǒng)中的應(yīng)用程序
02
應(yīng)用程序健康模型
任何Microservice(微服務(wù))都不可能獨立存在,它通常具有相應(yīng)的依附關(guān)系,需要與其他相關(guān)服務(wù)互聯(lián)互通,同時還存在于不同的 AWS 區(qū)域。
上文顯示的調(diào)用圖相對簡單,它其實可以有更深的層次并囊括幾十種服務(wù)。應(yīng)用程序是系統(tǒng)的一部分,可能會受到屬性變化的微妙影響,或者因為某些區(qū)域事件而發(fā)生根本性改變。一個Canary(https://netflixtechblog.com/automated-canary-analysis-at-netflix-with-kayenta-3260bc7acc69)的啟動也會影響應(yīng)用程序,上下游的部署也是同樣的道理。
Canary:原意是金絲雀,這里指一個新版本的軟件,該軟件通常只在運行穩(wěn)定的情況下部署到一小部分用戶中,以減少將新版本軟件部署到生產(chǎn)環(huán)境中的風險。這種方法可以在不影響大多數(shù)用戶的情況下快速發(fā)現(xiàn)新發(fā)布版本的問題。
Telltale使用多個來源的不同信號組裝了一個不斷進化、健康運行的應(yīng)用程序模型:
Atlas時間序列度量
區(qū)域流量疏散
Mantis實時播放數(shù)據(jù)
基礎(chǔ)設(shè)施改變事件
Canary落地及部署
上下游服務(wù)的健康運行
客戶端度量和QoE變化
警報由Netflix的警報平臺觸發(fā)
不同的信號對應(yīng)用程序運行的健康狀況有不同程度的影響。例如,延遲增加沒有錯誤率增加的問題那么嚴重,某些錯誤代碼也不如其他錯誤那么重要。在下游部署雙重Canary可能不像立即在上游部署Canary那么重要。
區(qū)域流量轉(zhuǎn)移意味著一個區(qū)域的流量歸零,而另一個區(qū)域的流量翻倍。你可以想象失去度量標準將產(chǎn)生什么樣的影響,度量標準的含義決定了平臺應(yīng)該如何理解它。
Netflix稱,在構(gòu)建應(yīng)用程序健康視圖時,Telltale 考慮了以上所有這些因素。
應(yīng)用程序健康模型則是 Telltale 系統(tǒng)的的核心。
03
智能監(jiān)控
每個服務(wù)運營商都知道警報調(diào)校的難度:設(shè)置的閾值太低,你會得到一大堆虛假的警報。繼而你可能會過度補償之前的誤差——放寬警報設(shè)定標準——以至于錯過了真正重要的警報。最終結(jié)果是團隊對于現(xiàn)有的警報系統(tǒng)缺乏信任。而Telltale 就建立在一個“你用不著不斷調(diào)整警報配置”的前提上。
Netflix稱自己通過提供策劃和管理的信號包,方便了應(yīng)用程序所有者的相關(guān)設(shè)置和配置工作。這些信號包組合成應(yīng)用程序配置文件,用來解決最常見的服務(wù)類型中的普遍問題。
Telltale 自動跟蹤各項服務(wù)之間的依從關(guān)系,從而構(gòu)建應(yīng)用程序健康模型中使用的網(wǎng)絡(luò)拓撲結(jié)構(gòu)。信號包和網(wǎng)絡(luò)布局檢測能夠以最小的代價保持最新的配置,同時那些偏愛實用方法的人群仍然可以進行手動配置和調(diào)優(yōu)。
沒有一個單一的算法可以解釋Netflix所使用的(各種各樣的)信號。因此,Netflix采用了混合算法,包括統(tǒng)計、規(guī)則和機器學習。Telltale 還配有相應(yīng)的分析器來檢測長期趨勢或內(nèi)存泄漏。
也就是說,智能監(jiān)控意味著用戶完全可以信任Telltale,也意味著(在意外發(fā)生時)更快速地檢測與解決問題。
04
智能警報
有了智能監(jiān)控系統(tǒng),自然也就產(chǎn)生了智能警報。當 Telltale 檢測到應(yīng)用程序系統(tǒng)運行中的問題時,會自動生成一個issue。團隊可以選擇通過 Slack、電子郵件或 PagerDuty (全部由Netflix內(nèi)部警報系統(tǒng)提供支持)進行下一步警報生成。
如果問題是由上下游系統(tǒng)引起的,那么 Telltale 的上下文感知路由會向團隊發(fā)出警告。智能警報也意味著只有一個相關(guān)團隊會收到該通知,而所有團隊都被警報轟炸的時代已經(jīng)成為了過去。
Slack 中 Telltale 通知的示例
當問題出現(xiàn)時,獲得正確的信息是至關(guān)重要的。Netflix的 Slack 警報也會啟動一個只包含事件最相關(guān)上下文背景的線程,包括被Telltale識別為運行不健康的信號及其原因。這也為工程師們提供了對應(yīng)用程序當前狀態(tài)更好的理解,隨時待命的他們也因此能夠更容易地將程序恢復到正常狀態(tài)。
意外事件總是在不斷進化并擁有自己的生命周期,因此不斷更新系統(tǒng)是非常重要的。情況到底是在變好還是在變壞?是否有新的信號或事件需要考慮?這些都需要平臺和工程師們不斷思考。
Telltale 隨著當前事件的不斷展開持續(xù)更新著 Slack 線程。相關(guān)線程在恢復到健康狀態(tài)時會被標記為“已解決”,這樣用戶可以一目了然地知道哪些意外事件正在發(fā)生、哪些事件已經(jīng)被成功補救。
但是這些 Slack 線程并不僅僅是為了Telltale而存在,團隊成員還可以使用它們來分享附加的數(shù)據(jù)、相應(yīng)的觀察、理論和關(guān)于事件的討論等等。事件數(shù)據(jù)和討論都集中在一個線程中,有助于團隊成員分享、理解以及更快地解決問題,同時也便于進行結(jié)果分析。
Netflix稱自己也在努力提高Telltale系統(tǒng)中的警報質(zhì)量。其中一個方法是從用戶反饋中學習,他們在 Slack中創(chuàng)建了反饋按鈕,并通過用戶反饋來抑制未來警報出現(xiàn)的概率。同時,用戶還可以給Netflix一些為什么某些警報不可操作的理由。這樣一來,智能警報也意味著是用戶可以信任的警報。
Slack 中的 Telltale 通知中的詳細信息示例
05
為什么我的服務(wù)運行狀況不佳?
各種各樣的信號、應(yīng)用程序系統(tǒng)的相關(guān)知識以及跨服務(wù)端的信號相關(guān)性有助于 Telltale 檢測應(yīng)用程序健康狀況惡化的可能原因。這些可能的原因包括(但不限于)異常實例、Canary或非獨立服務(wù)的部署、不健康的數(shù)據(jù)庫或僅僅是流量激增等原因。將可能的原因進行highlight(在意外事件發(fā)生時)可以節(jié)省寶貴的時間。
06
事故管理
Telltale事件總結(jié)實例
當 Telltale 發(fā)送警報時,它還會參考相關(guān)的不健康信號創(chuàng)建一張快照,而隨之到來的新信息也會被添加到該快照中。這簡化了許多團隊的事后評審過程。當需要回顧過去的問題時,應(yīng)用程序事件摘要(Application Incident Summary)特性會在單一地點展示近期遇到的問題的方方面面,包括總停機時間和MTTR(Mean Time To Resolution 平均解決時間)等關(guān)鍵指標。Netflix希望團隊看到這些意外事件背后的模式和規(guī)律,以便他們能夠提高總體服務(wù)可用性。
集群視圖將類似事件分組
07
部署監(jiān)控
Telltale 的應(yīng)用程序健康模型和智能監(jiān)控強大的可靠性已經(jīng)被有力地證明,以至于Netflix也在使用它來進行更安全的平臺部署。
Netflix選擇從 Spinnaker (Netflix的開源交付平臺)開始。在 Spinnaker 推出新構(gòu)建的漫長過程中,Netflix使用 Telltale 來持續(xù)監(jiān)視新構(gòu)建運行的健康狀況。持續(xù)監(jiān)控意味著該部署在出現(xiàn)第一個問題跡象時便會停止部署并重新運行。這也意味著該問題衍生的破壞力更小、持續(xù)時間也更短。
08
持續(xù)改善
在一個復雜的系統(tǒng)中運行微服務(wù)是具有挑戰(zhàn)性的。Telltale 的智能監(jiān)控和報警系統(tǒng)幫助Netflix的服務(wù)運營商提高可用性、減少人力,也讓工程師們在晚上睡得更好。但這還不算完,Netflix還在不斷探索新的算法來提高警報的準確性。
Netflix仍然在思考和評估對應(yīng)用程序健康模型的改進。Netflix相信在服務(wù)日志和跟蹤數(shù)據(jù)中存在著大量有用信息,以及使用更高分辨率的度量標準的好處。
在 Telltale 上擴展新的應(yīng)用程序已經(jīng)十分成熟了,但對于Netflix來說,肯定還有更好的啟發(fā)模式來幫助運營商發(fā)現(xiàn)影響服務(wù)運行健康與否的諸多因素,而Netflix也需要繼續(xù)改進其服務(wù)界面。
09
Telltale是簡化了的應(yīng)用程序監(jiān)控系統(tǒng)
一個健康的、運行狀況良好的 Netflix 服務(wù)系統(tǒng)是該平臺用戶得以休閑娛樂的保障,但將不同信號與健康模型實時地聯(lián)系起來仍然是一個挑戰(zhàn)。再加上數(shù)以千計的流媒體設(shè)備類型、不斷發(fā)展的架構(gòu)以及不斷增長的內(nèi)容生產(chǎn)生態(tài)系統(tǒng),這個問題變得非常有趣。
翻譯:Coco Liang
一切為了QoE
音視頻服務(wù)追求的不僅是單純QoS,而是用戶最終的極致體驗,本次LiveVideoStackCon 2020 北京站我們也將邀請講師討論體驗質(zhì)量方面的分析與探索,點擊【閱讀原文】可了解更多講師及話題信息。
LiveVideoStackCon 2020?北京
2020年10月31日-11月1日
點擊【閱讀原文】了解更多詳細信息
總結(jié)
以上是生活随笔為你收集整理的Telltale:看Netflix如何简化应用程序监控体系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东智联云分布式低延时RTC系统
- 下一篇: 音视频技术开发周刊 | 158