Netflix 如何使用eBPF流日誌進行網路洞察?
Netflix 開發了一個名為Flow Exporter的網路可觀察性 sidecar ,它使用 eBPF 跟蹤點近乎實時地捕獲 TCP 流。這種高效能的 sidecar 僅佔例項上不到 1% 的 CPU 和記憶體,可大規模提供流量資料以進行網路洞察。
Netflix 軟體基礎設施是一個大型分散式生態系統,由在 AWS 和 Netflix 擁有的服務上執行的專用功能層組成。在我們努力保持生態系統簡單的同時,利用各種技術的固有特性將導致我們面臨以下挑戰:
- 應用程式依賴項和資料流對映:隨著微服務數量與日俱增,但無法瞭解和了解應用程式的依賴項和資料流,服務所有者和集中式團隊都很難識別系統問題。
- 路徑驗證: Netflix 在製作流媒體和工作室環境中的變化速度可能導致服務無法與其他資源進行通訊。
- 服務細分:雲部署的便捷性導致多個 AWS 賬戶、部署實踐、互連實踐等的有機增長。沒有網路可見性,很難提高我們的可靠性、安全性和容量狀況。
- 網路可用性:我們生態系統的預期持續增長使我們難以理解我們可能達到的網路瓶頸和潛在限制。
Cloud Network Insight是一套解決方案,可提供對雲網路基礎架構的運營和分析洞察力,以解決已識別的問題。透過從VPC流日誌、ELB訪問日誌、例項上的eBPF流日誌等多種來源收集、訪問和分析網路資料,我們可以透過Lumen、Atlas等多種資料視覺化技術為使用者和中心團隊提供網路洞察, 等等。
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 流日誌,並提供對我們雲生態系統的可見性。豐富的資料使我們能夠跨多個維度(例如可用性、效能和安全性)分析網路,以確保應用程式能夠在全球分散的基於雲的生態系統中有效地交付其資料負載。
相關文章
- 在Linux中,如何使用ELK進行日誌管理和分析?Linux
- 使用UDP如何進行網路通訊UDP
- Gin 框架 - 使用 logrus 進行日誌記錄框架
- 使用Java和Elastic Stack進行日誌分析JavaAST
- ABP 使用ElasticSearch、Kibana、Docker 進行日誌收集ElasticsearchDocker
- 如何進行網路抓取?
- 使用shell指令碼對Nginx日誌進行切分指令碼Nginx
- .Net Core中使用DiagnosticSource進行日誌記錄
- Netflix如何使用Druid進行業務質量實時分析UI行業
- 對比Elasticsearch,使用Doris進行高效日誌分析(上)Elasticsearch
- 對比Elasticsearch,使用Doris進行高效日誌分析(下)Elasticsearch
- 使用 logzero 在 Python 中進行簡單日誌記錄Python
- 使用retrofit進行網路請求
- 如何使用卷積神經網路進行影像處理?卷積神經網路
- 利用DNS日誌進行MySQL盲注DNSMySql
- 如何使用 MySQL 慢查詢日誌進行效能優化 - Profiling、mysqldumpslow 例項詳解MySql優化
- 使用AWK規整KyLin日誌改進
- 【知識分享】什麼是伺服器日誌如何進行分析伺服器
- 在Linux中,如何進行網路故障排查?Linux
- 如何使用 Tig 瀏覽 Git 日誌Git
- 如何使用python進行網頁爬取?Python網頁
- Kubernetes 網路學習之 Cilium 與 eBPFeBPF
- WINDOWS下對NIGNX日誌檔案進行限制Windows
- 在Linux中,如何使用Suricata進行實時網路威脅檢測?Linux
- 一文搞懂如何使用Node.js進行TCP網路通訊Node.jsTCP
- fiddler進行修改網路進行弱網測試
- 【網路流】網路流基本概念
- 裝潢家居行業該如何進行網路推廣?行業
- Java使用代理進行網路連線方法示例Java
- kvm日誌路徑
- 如何知道是否有人正在進行網路攻擊
- 使用canal偷取MySQL的二進位制日誌MySql
- SLS 查詢新正規化:使用 SPL 對日誌進行互動式探索
- 實踐探討Python如何進行異常處理與日誌記錄Python
- 從攻守日誌看網路江湖的快意恩仇
- Linux如何檢視日誌最後幾行?Linux
- Spring Boot 入門(五):整合 AOP 進行日誌管理Spring Boot
- 使用JavaScript和網路資訊API進行自適應網路服務JavaScriptAPI