Netflix 如何使用eBPF流日志进行网络洞察?

21-06-08 banq

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 流日志,并提供对我们云生态系统的可见性。丰富的数据使我们能够跨多个维度(例如可用性、性能和安全性)分析网络,以确保应用程序能够在全球分散的基于云的生态系统中有效地交付其数据负载。

 

猜你喜欢