Netflix 開源實時監控平臺 Mantis:故障平均檢測時間縮減到秒級

Netflix開源了自己開發的Mantis平臺,該平臺能讓開發者在最小化觀察和操作系統的成本的情況下,實時地監控並分析運維事件,並將故障平均檢測時間從幾十分鐘減少到了幾秒鐘。

2019年10月21日,我們很高興地宣佈,Netflix將Mantis(螳螂)開源了,這個平臺能夠幫助Netflix的工程師們更好地理解他們所開發的應用程序的各種行爲,以確保爲Netflix的會員提供最高質量的體驗。而且我們相信,我們在Netflix所遇到的種種挑戰並不一定是Netflix所獨有的,這就是爲什麼我們要在更廣泛的開發社區來分享這個平臺。

作爲一個流媒體微服務生態系統,在不影響運維判斷力的情況下,Mantis平臺爲開發工程師提供了讓觀察和操作複雜分佈式系統的成本降至最低的能力。開發工程師們已經基於Mantis平臺構建了性價比頗高的應用程序,以實現快速識別問題、觸發警報、以及實施補救措施,從而最大程度地降低Netflix服務的宕機時間,甚至完全避免發生宕機事故。而遇到類似的指標故障,其他系統可能需要花上十多分鐘才能完成精確處理,而Mantis將這一過程從幾十分鐘減少到了幾秒鐘,卓然有效地減少了我們的故障平均檢測時間。這點是至關重要的,因爲任何宕機時間對於Netflix都是致命的,並且會對我們的訂閱用戶產生非常大的負面影響,因此,宕機過程中每流逝的一秒對我們來說都很重要。

隨着Netlix在全球日益增長的會員基數,以及隨着這些會員越來越多地使用Netflix提供的服務,我們對Netflix的系統運營健康狀況如何進行經濟適用、便捷快速且精確無誤的監控分析就變得越來越重要。例如,距離我們發表上一篇關於Mantis博客文章(2016年3月)已經有兩年半的時間,今日Netflix五分鐘的宕機的影響體量已經相當於那時候兩小時的宕機。

Matins讓回答未知問題變得容易

對於規模巨大又日益增長的系統而言,只使用指標度量和日誌分析的傳統方法已不能滿足當前的系統需求。指標衡量和日誌分析方法的前提是,在事故發生之前你預先就知道需要回答什麼樣的問題。而另一方面,Mantis讓我們完全避開這個缺點,這個平臺讓我們能夠回答事先並未預料到的新問題,且不需要添加任何新的工具或配置。Mantis並沒有使用日誌或度量指標,而是支持將事件普遍化,開發人員可以根據需要從任何能收集數據的應用程序對事件流實現訪問。通過這種“按需消費”的模式,你就可以自由地將所有數據發佈給Mantis。

Matins以經濟合算的方式回答問題

如果爲了能夠在未來回答新的問題就發佈100%的運維數據,這麼做在傳統意義上成本會是非常昂貴的。而Mantis使用了一種隨需應變的、響應式的模型,在這些事件被訂閱成爲事件流之前,你並不需要爲這些事件付出任何成本。而爲了進一步降低成本,Mantis會爲等效的訂閱者重新發布相同的數據。通過這種方式,Mantis與其他系統的顯著不同之處在於,Mantis允許我們對事件實現基於流的可觀察性,同時允許開發工程師使用工具來降低成本,否則過高的成本將有害於業務。

從一開始構建Mantis,我們就把這個指導原則準確無誤地銘記於心:讓我們確保最小化觀察和操作系統的成本,同時也保證了不會犧牲那些必要的和機遇性的監控要點。

構建Mantis的指導原則

以下是構建Mantis平臺背後的指導原則。

  1. 我們應該保證能夠對原始事件進行訪問。將事件發佈到Mantis中的應用程序應該可以自由地發佈每個事件。如果我們在這個階段過早地把原始事件轉換爲其他形式,那麼在洞察事件原因方面可能就已經處於劣勢了,因爲這樣一來已經丟失了原始形式的數據。
  2. 我們應該能夠做到實時訪問這些事件。很多運維性用例在本質上是時間敏感的。而傳統的方法採用發佈、存儲、然後批量聚合事件等步驟,這樣處理起來太慢了。與之相反的是,我們應該在事件到達時逐個地對它們進行處理和服務。隨着系統規模的擴張,更短的時間內事件的影響會變得更顯著,實時處理這一點會變得越來越重要。
  3. 我們應該在不需要嚮應用程序添加新的工具和配置的情況下,基於這些收集的數據回答那些未知的新問題。無論怎麼爲系統打造足夠的彈性,我們都不可能做到事先悉知系統可能會遇到的每一種可能的故障模式。所以,當這些未知故障不可避免地發生時,最重要的是我們可以從這些收集的數據中獲取針對未知問題的新見解。因此,你應該做到能夠發佈具有任意上下文、任意大小的事件。這樣,當你未來某次想起要向系統詢問一個未知的新問題時,可以運用這些數據來回答這些新問題。
  4. 我們應該能夠以一種經濟適用的方式來實現上述所有這些需求。隨着Netflix這個業務關鍵系統規模不斷擴大,我們需要確保爲該業務關鍵系統所打造的支撐性系統,其最終的成本不會超過業務關鍵系統本身。

請記住這些指導原則,接下來讓我們來看看Mantis是如何爲Netflix帶來更多價值的。

Mantis如何爲Netflix帶來更多價值

Mantis投入生產的實際應用已經超過四年了。在此期間,在Mantis平臺上已經構建了幾個關鍵的運維洞察性應用程序。

在這些洞察性應用程序中,一些值得注意的例子包括:

  • 實時監控Netflix流媒體健康狀況,該應用程序實時地檢查Netflix的所有流媒體視頻流量,並以精細粒度準確地識別那些對觀看體驗的負面影響。該系統爲Netflix服務整體健康狀況承擔了預警指示的作用,並將在幾秒鐘內觸發警告並通知相關團隊。
  • 上下文警報,這個應用程序會實時地分析數十種Netflix微服務之間數以百萬計的互動,從而識別出異常,併爲運營商提供與該異常所相關的豐富的上下文信息。這些由Mantis在背後支持的聚合具有天然的實時特性,從而使得異常的平均檢測時間從幾十分鐘減少到幾秒鐘。考慮到Netflix如此巨大的規模,這帶來的影響確實十分深遠。
  • Raven允許用戶使用我們的Mantis查詢語言(MQL)對來自數百個流媒體源的實時數據進行各種形式的探測。
  • Cassandra健康檢查則提供了對豐富的運維事件的實時分析,併爲Netflix裏每個Cassandra集羣生成整體性的健康狀況報告。
  • 日誌警報,通過實時處理來自數千個Netflix服務器的日誌數據,來檢測應用程序錯誤。
  • 混沌實驗監控,實時地跟蹤混沌實驗中的用戶體驗變化,並在遇到負面影響時觸發中斷混沌實驗。
  • 實時個人身份信息(PII)數據,跨越所有流媒體源實時地檢測個人身份信息數據樣本,以快速識別敏感數據的傳輸。

歡迎嘗試開源的Mantis

如果想要了解更多關於Mantis的信息,可以查看Mantis的主頁。現在,可以嘗試讓你自己的第一個Mantis集羣運轉起來,可以選擇在本地使用Docker,也可以在雲端用Mantis CLI在AWS中構建一個小集羣。你也可以在Github上獲取Mantis的開源代碼,通過用戶或開發者郵件列表與社區進行交流,爲Mantis做出你的一份貢獻。

Mantis主頁:https://netflix.github.io/mantis/

原文鏈接:
Open Sourcing Mantis: A Platform For Building Cost-Effective, Realtime, Operations-Focused Applications

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章