Netflix 如何使用eBPF流日誌進行網路洞察?

banq發表於2021-06-08

Netflix 開發了一個名為Flow Exporter的網路可觀察性 sidecar ,它使用 eBPF 跟蹤點近乎實時地捕獲 TCP 流。這種高效能的 sidecar 僅佔例項上不到 1% 的 CPU 和記憶體,可大規模提供流量資料以進行網路洞察。
Netflix 軟體基礎設施是一個大型分散式生態系統,由在 AWS 和 Netflix 擁有的服務上執行的專用功能層組成。在我們努力保持生態系統簡單的同時,利用各種技術的固有特性將導致我們面臨以下挑戰:
  • 應用程式依賴項和資料流對映:隨著微服務數量與日俱增,但無法瞭解和了解應用程式的依賴項和資料流,服務所有者和集中式團隊都很難識別系統問題。
  • 路徑驗證: Netflix 在製作流媒體和工作室環境中的變化速度可能導致服務無法與其他資源進行通訊。
  • 服務細分:雲部署的便捷性導致多個 AWS 賬戶、部署實踐、互連實踐等的有機增長。沒有網路可見性,很難提高我們的可靠性、安全性和容量狀況。
  • 網路可用性:我們生態系統的預期持續增長使我們難以理解我們可能達到的網路瓶頸和潛在限制。

Cloud Network Insight是一套解決方案,可提供對雲網路基礎架構的運營和分析洞察力,以解決已識別的問題。透過從VPC流日誌、ELB訪問日誌、例項上的eBPF流日誌等多種來源收集、訪問和分析網路資料,我們可以透過LumenAtlas等多種資料視覺化技術為使用者和中心團隊提供網路洞察, 等等。
 

Flow Exporter
Flow Exporter 是一個 sidecar,它使用eBPF 跟蹤點在支援 Netflix 微服務架構的例項上近乎實時地捕獲 TCP 流。
Berkeley Packet Filter (BPF) 是處理虛擬指令集的核心內執行引擎,並已擴充套件為 eBPF 以提供擴充套件核心功能的安全方法。在某些方面,eBPF 對核心的作用就像 JavaScript 對網站所做的一樣:它允許建立各種新應用程式。
eBPF 流日誌記錄表示一個或多個網路流,其中包含在可變聚合間隔內發生的 TCP/IP 統計資訊。
Sidecar 是透過利用高效能 eBPF 以及精心挑選的傳輸協議來實現的,在我們佇列中的任何例項上消耗不到 1% 的 CPU 和記憶體。GRPC、HTTPS 和 UDP 等傳輸協議的選擇在執行時取決於例項放置的特徵。
Flow Exporter 的執行時行為可以透過Fast Properties 的配置更改進行動態管理。Flow Exporter 還向Atlas釋出各種操作指標。這些指標使用Lumen視覺化,這是一種自助服務儀表板基礎架構。
我們目前正在每小時攝取和豐富數十億個 eBPF 流日誌,並提供對我們雲生態系統的可見性。豐富的資料使我們能夠跨多個維度(例如可用性、效能和安全性)分析網路,以確保應用程式能夠在全球分散的基於雲的生態系統中有效地交付其資料負載。
 

相關文章