Netflix開源Mantis:基於微服務的運維監控平臺

banq發表於2019-10-28

今天,我們很高興地宣佈:Mantis開源了,該平臺可幫助Netflix工程師更好地瞭解其應用程式的行為,以確保為我們的會員提供最高質量的體驗。我們認為,在Netflix面臨的挑戰並不一定是Netflix獨有的,這就是我們與廣大社群共享它的原因。
作為流式微服務生態系統,Mantis平臺為工程師提供了在不影響運營洞察力的情況下,將觀察和運維複雜分散式系統的成本降至最低的功能。工程師們在Mantis之上構建了具有成本效益的應用程式,以快速發現問題,觸發警報並進行補救,以最大程度地減少或完全避免Netflix服務的停機。
在其他系統可能需要十多分鐘才能準確處理指標的情況下,Mantis將其從數十分鐘減少到幾秒鐘,從而有效地減少了我們的平均檢測時間。這是至關重要的,因為任何數量的停機時間都是殘酷的,並且對我們的成員造成了難以置信的巨大影響-在停機期間,每一秒都很重要。例如,今天發生五分鐘的中斷相當於我們上次釋出Mantis部落格時發生的兩小時的中斷。

使發現新問題變得容易
僅使用度量和日誌的傳統方式不足以應對大規模且不斷增長的系統。指標和日誌要求您提前知道要回答什麼。另一方面,Mantis透過使我們能夠回答新問題而不必新增新的儀器,從而使我們能夠完全避開此缺點。Mantis代替了日誌或指標,而是使事件民主化,使開發人員可以根據需要從任何檢測到的應用程式中獲取事件流。透過按需消費,您可以將所有資料自由釋出到Mantis。

在解決問題方面具有成本效益
傳統上,透過釋出100%的運營資料以使您將來能夠解決新問題在規模上是令人望而卻步的。Mantis使用按需響應模型,在這些事件被訂閱之前,您無需為這些事件付費。為了進一步降低成本,Mantis為同等訂戶重新發布了相同的資料。透過這種方式,Mantis與其他系統的區別在於,它使我們能夠在事件上實現基於流的可觀察性,同時使工程師能夠使用工具來降低原本會對業務造成不利影響的成本。

背後的指導原則
以下是構建螳螂的指導原則。

  1. 我們應該可以訪問原始事件。將事件釋出到Mantis中的應用程式應該可以自由釋出每個事件。如果我們在此階段過早地轉換事件,那麼在獲取洞察力方面已經處於劣勢,因為原始形式的資料已經丟失。
  2. 我們應該能夠實時訪問這些事件。操作用例本質上是時間敏感的。批次釋出,儲存然後聚合事件的傳統方法太慢。相反,我們應該在事件到達時一次處理和處理事件。隨著規模的擴大,影響將在短得多的時間內變得越來越大,這一點變得越來越重要。
  3. 我們應該能夠對此資料提出新的問題,而不必在您的應用程式中新增新的工具。儘管內建了使這些系統具有彈性的所有嚴格條件,但無法提前知道我們的系統可能遇到的每種可能的故障模式。當不可避免地發生這些故障時,重要的是我們可以利用這些資料得出新的見解。您應該可以根據需要釋出具有儘可能多的上下文的大型事件。這樣,當您想到將來要問系統的新問題時,將可以使用資料來回答這些問題。
  4. 我們應該能夠以具有成本效益的方式完成上述所有工作。隨著關鍵業務系統規模的擴大,我們需要確保支援這些關鍵業務系統的系統最終不會比關鍵業務系統本身成本更高。

牢記這些指導原則,讓我們看一下Mantis如何為Netflix帶來價值

如何為Netflix增值
Mantis已經投入生產超過四年了。在此期間,在Mantis平臺之上構建了一些關鍵的操作洞察應用程式。
一些值得注意的例子包括:

實時監控Netflix流健康狀況,可實時檢查所有Netflix流影片流量,並以細粒度精確地識別對觀看體驗的負面影響。該系統可作為Netflix服務整體執行狀況的預警指示器,並在幾秒鐘內觸發並提醒相關團隊。

上下文警報可實時分析數十種Netflix微服務之間的數百萬次互動,以識別異常併為運營商提供豐富而相關的上下文。這些由Mantis支援的聚合的實時性允許將檢測平均時間從數十分鐘減少到幾秒鐘。鑑於Netflix的規模,這將產生巨大的影響。

Raven允許使用者使用我們的Mantis查詢語言(MQL)對來自數百個流媒體源的實時資料進行臨時瀏覽。

Cassandra執行狀況檢查,可實時分析豐富的執行事件,以全面瞭解Netflix每個Cassandra群集的執行狀況。
透過實時處理來自數千個Netflix伺服器的資料,對日誌資料發出警報,以檢測應用程式錯誤。

混沌實驗監控,可實時跟蹤使用者在混沌練習中的體驗,並在出現不利影響時觸發混亂練習的中止。
實時個人身份資訊(PII)資料檢測跨所有流源取樣資料,以快速識別敏感資料的傳輸。

相關文章