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 流日誌,並提供對我們雲生態系統的可見性。豐富的資料使我們能夠跨多個維度(例如可用性、效能和安全性)分析網路,以確保應用程式能夠在全球分散的基於雲的生態系統中有效地交付其資料負載。
相關文章
- 如何利用網際網路進行民族誌研究
- 使用shell進行日誌分析
- 在Linux中,如何使用ELK進行日誌管理和分析?Linux
- 使用Log4j進行日誌操作
- Gin 框架 - 使用 logrus 進行日誌記錄框架
- 使用shell指令碼對Nginx日誌進行切分指令碼Nginx
- ABP 使用ElasticSearch、Kibana、Docker 進行日誌收集ElasticsearchDocker
- 使用Oracle的logminer工具進行日誌挖掘Oracle
- 使用apache日誌進行訪問ip的排序Apache排序
- 使用Log4j進行日誌記錄
- .Net Core中使用DiagnosticSource進行日誌記錄
- Netflix如何使用Druid進行業務質量實時分析UI行業
- 對比Elasticsearch,使用Doris進行高效日誌分析(下)Elasticsearch
- 對比Elasticsearch,使用Doris進行高效日誌分析(上)Elasticsearch
- 使用cronolog工具給tomcat進行日誌切割Tomcat
- nginx日誌按照天進行分割Nginx
- 使用retrofit進行網路請求
- 如何使用卷積神經網路進行影像處理?卷積神經網路
- 利用DNS日誌進行MySQL盲注DNSMySql
- 在oracle中Logmnr進行日誌挖掘Oracle
- 使用 logzero 在 Python 中進行簡單日誌記錄Python
- 重新開始釋出網路日誌
- mysql 日誌之二進位制日誌MySql
- 日誌分析兩部曲:充分利用日誌保護網路
- MySQL如何傳輸二進位制日誌MySql
- 使用Iperf工具進行網路效能測試
- 【網路流】網路流基本概念
- 使用AWK規整KyLin日誌改進
- mysql之 日誌體系(錯誤日誌、查詢日誌、二進位制日誌、事務日誌、中繼日誌)MySql中繼
- 一文搞懂如何使用Node.js進行TCP網路通訊Node.jsTCP
- 如何知道是否有人正在進行網路攻擊
- oracle 11g logminer 進行日誌挖掘Oracle
- [Logmnr]對重做日誌進行資料探勘
- 通過JVM日誌來進行安全點分析JVM
- cronolog 對 tomcat 7 進行日誌切割Tomcat
- 使用UDP如何進行網路通訊UDP
- 如何使用python進行網頁爬取?Python網頁
- Java使用代理進行網路連線方法示例Java