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



01web

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實時播放數據app

  • 基礎設施改變事件機器學習

  • 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日

點擊【閱讀原文】瞭解更多詳細信息


本文分享自微信公衆號 - LiveVideoStack(livevideostack)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索