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