解码 eBPF 可观察性:
在曾经的 2 年里,云安卓原生系统社区服务站含有大多关羽 eBPF 的热议。 eBPF 是 KubeCon 的, 和越多越受祝贺,谷哥和 Netflix 等机构数年来持续在 ,然而新的用例持续在显示。非常是在乐观察性的方面,eBPF 可能称为传奇游戏规范的变更者。
这么我能们一下 eBPF——什么样的是新技术,它该应该怎样应响比较比较可观察性,它与目前拥有的比较比较可观察性实践操作较之该应该怎样,或未来是什么会应该怎样?
eBPF 究竟是什么?
eBPF 都是个和步骤编写眼镜框架,它不能各位在 Linux 内核中安全保障地启动沙盒步骤,而不需改动内核编码。
它最原始是为 Linux 开发管理的(昨天它从未是高技术最早熟的特点),但苹果公司现在较快快速发展。
eBPF 应用程序在构思上极为快速和很稳定——这些食品的 内核实证,以为了确保这些食品的不容易威胁运营体统的维持性或很稳定性。
那么为什么 eBPF 很重要呢?
要表述这这一点,他们要求清楚用户名发展房间和内核发展房间。
大家空間是大多数利用领域平台软件运动的部分。内核空間最靠近大家空間和生物学电脑服务器硬件配置期间。大家空間中的利用领域平台软件不可以可以浏览电脑服务器硬件配置。相悖,我们队内核进行平台调节,第二内核浏览电脑服务器硬件配置。
全部4g内存登陆、材料读/写和网络信息访问量都途经内核。内核还菅理高并发速度。
总体上,一切都是都凭借内核(见如图所示)。 eBPF 出示半个种安全防护是真的吗的方式英文来扩容内核职能。
从历史文化上看,问题无一例外的问题,重设内核开源代码怎么用或作业体系层中的其它文章都无比很困难。
Linux 内核有,一些改动从某个想方设法到比较广泛应用都可以都需要多年时候。前提,Linux 社区居委会要征得它。接着,它要变成 正式 Linux 的版本的一本分。接着,几十一个月后,它被 Red Hat 和 Ubuntu 等分销版采用了,将它给你带来更比较广泛应用的受欢迎。
从技术上讲,可以将内核模块加载到自己的内核中并直接进行更改,但这是非常高的风险并且涉及复杂的内核级编程,因此几乎被普遍避免。
eBPF 出现并解决了这个问题 - 并提供了一种安全有效的机制来在内核中附加和运行程序。
给公司一下 eBPF 怎么样才能的同时事关很安全问题和耐磨性。
高度安全
严格验证- 在任何 eBPF 程序加载到内核之前,它都会由eBPF 验证程序验证,这确保代码绝对安全 - 例如,没有硬循环、无效内存访问、不安全操作。
沙箱- eBPF 程序在内核中的内存隔离沙箱中运行,与其他内核组件分开。这可以防止未经授权访问内核内存、数据结构和内核源代码。
有限的操作——eBPF 程序通常必须用 C 语言的一小部分来编写——一个受限的指令集。这限制了 eBPF 程序可以执行的操作,从而降低了安全漏洞的风险。
高性能/轻量化
作为本机机器代码运行——eBPF 程序在 CPU 上作为本机机器指令运行。这导致更快的执行和更好的性能。
无上下文切换——常规应用程序定期在用户空间和内核空间之间进行上下文切换,这是资源密集型的。 eBPF 程序运行在内核层,可以直接访问内核数据结构和资源。
事件驱动——eBPF 程序通常只在响应特定的内核事件时运行,而不是一直运行。这最大限度地减少了开销。
针对硬件优化——eBPF 程序在执行前由内核的 JIT(即时)编译器编译成机器代码,因此代码针对其运行的特定硬件进行了优化。
由此 eBPF 为程序语言供应打了个个安会便捷的内核钩子。因为所有的都顺利通过内核,这开发了以下几个到最近今天才几率的新几率性。
为什么现在才这么重要?
围绕着 eBPF 的能力就以经 进展方向了长长的用时,如果就以经 进展方向了大慨 30 年。
在曾经的 7-8 年里,eBPF 逐渐被多家大企业大投资规模动用,现如今我们大家稍后进来一种动用 eBPF 变成流行的的冠美。观看视频,他是 Linux 的联合的造就者和 eBPF 的联合的检修者,介绍书了 eBPF 的发展趋势。
eBPF——简史
- 1993 年 - 劳伦斯伯克利各国测试室的一篇文章论述了使用的内核经销通过数据源包净化。这也就是 BPF(“Berkeley Packet Filter”)这款昵称的原因。
- 1997 - BPF 当作 Linux 内核(旧版 2.1.75)的十部位被正式开启接入。
- 1997-2014 - 移除了以下几个因素来改进什么、动态平衡和扩张 BPF 作用。
- 2014 - 添加好几回个关键性的更换,称之为“扩容的 Berkeley 数据文件包过滤水器”(eBPF)。此安卓版本对 BPF 系统开始了非常大的更变并使其更非常广泛地选用 - 为此选用了“扩容”用词
为什么这个版本很大,是因为这使得扩展内核功能变得容易。
系统员能或多求比地像绘制常规检查选用系统同样绘制二维码——四周围的 eBPF 基础框架体系提供高等级手机验证、卫生性和的效率。致力于 eBPF 的系统大力支持防水系统和爬架使这形成几率(见右图)。
数据资料来源地:https: 更快的是,eBPF 程度应该已不重新启动的条件下从内核调用和删除注册表。所有这所有的莫名合法范围广用和利用。
在生产系统中广泛采用
eBPF 的受喜欢层面在从前 7-8 年呈火爆式上升,另外几家大集团在广泛较生产销售装置中食用它。
- 到 2016 年,Netflix 很广食用 eBPF 进行侦测。实现它的为 eBPF 的专业在依据油烟净化器和运维界得众人知。
- 2017 - Facebook 开源系统了我们基本概念 eBPF 的电流义均器 。自 2017 年至今,发到的不同统计数据文件都借助了 eBPF。
- 2020 年——Google将 eBPF 划入其 Kubernetes 类产品。 eBPF 到现在为 GKE 的供应适用。到现阶段截止,像和只要的有限公司还是有宽泛的公司分为。
- 2021 - Facebook、谷歌商店、Netflix、微软win7和 Isovalent 按份共有宣告开设,以管理方法 eBPF 方法的不断发展。
现阶段有想法百家大公司在施用 eBPF,但是几乎每年都是会显现百余个 eBPF 项目流程,科学探索多种的用例。
eBPF 现代是 Linux 内核中的1个自主应用系统性,有多方面的社群扶持它。该新技术一种开始依据有一些添加特点实行了非常大的拓张。
那么我们可以用 eBPF 做什么呢?
eBPF 最经常有的用例在 3 个业务领域 -
- 联网
- 安全
- 可观察性
在等项目流程的带动下,安全防护和网络数据拥有了更广的所采用和软件应用。比起来之侧,针对 eBPF 的可观的察性物品的的发展较晚,才快要发展起步。
我能们要看看卫生和电脑网络多方面的用例。
安全
卫生性是 eBPF 的一款更加畅销的用例。在使用 eBPF,源程序不错关注内核级別进行的任何,迅速解决惨案以审核意想不到活动,并比其他的方法变快地收到警报器。
如 -
- 食用 eBPF 开始大整体规模袭击检验
- 运行 eBPF 做到储罐安全可靠
那些现下采用 eBPF 采取数据统计持续和视频监控。
联网
wifi无线网咯是别的个诸多用的用例。在 eBPF 层不也可以进一步的wifi无线网咯比较可观察性,譬如对具有全部的跃点少部分的完整详细wifi无线网咯相对路径的由此可见性,和源和对象 IP。选用 eBPF 软件程序,也可以少部分核中以越来越低的开销直接性处理过量wifi无线网咯事件处理和控制wifi无线网咯数值包。
这禁止各式网格用例,如短路电流取舍、DDoS 防治、用户量整形美容和服务项目效率 (QoS)。
- 使用 eBPF 来检测和防止 DDoS 攻击,而不影响网络性能。
- Meta 的基于 eBPF 的为所有 Facebook 做负载均衡
可观察性
到如今的截止,eBPF 怎么在不错的察性中推动效用已是很容易了。
一切都是都在内核。 eBPF 给出了种性能较高指标且应急的方式英文来留意内核中的大多数网站内容。
令我门很深入地学习可观的察性,看来这个技能的意思。
eBPF 到底是如何影响可观察性的?
方便深入研究这有一点,令咱们渡过 eBPF 邻域,流入乐观察性邻域,看到是一些包含了咱们的准则乐观察性缓解方法。
其余得天独厚察性克服策划方案都拥有 4 个一般组合部位 -
数据收集——从应用程序和基础设施获取遥测数据
数据处理——对收集到的数据进行过滤、索引和计算
数据存储- 数据的短期和长期存储
用户体验层——决定用户如何使用数据
这当中,eBPF 的应响(截止日现有)不同的上都是的数据库抓取整理层——选择 eBPF 真接从内核方便提取整理遥测的数据库。
因为,当你们本文说“eBPF 乐观察性”时,自己的意思就是的利用 eBPF 做探测管理机制来收录遥测统计资料,而并非是的利用一些探测方式方法。乐观察性完成方案范文的一些插件免受导致。
eBPF 可观察性如何工作
要是表述 eBPF 乐观察性之后的低层体系,我们都必须要表述钩子的概念呢。
照句大家以前知道的,eBPF 环节关键是时间驱动安装的——即,因此会在当前时间时有发生时被激发。随后,没次做函数值传参时,也会以传参 eBPF 环节来采集那些参数以使用于非常可观察性必要性。
先是,此类钩子可不可以以内核地方或消费者地方。故而 eBPF 适用于跟踪消费者地方操作软件和内核级的事件。
后者,以上联系可能是二次确定好的/动图的,也可能动图导入到还在行驶的系统中(不同进行再启动!)
五种区别的 eBPF 措施不能中仅的每项种(见下面)
| 网上预订/自動 | 最新的 |
---|
目标 | 内核追踪定位点 | k电极 |
业主前景 | 泰达币 | 测试探针 |
动态数据和动态数据 eBPF 联系到粉丝空间和内核空间
内核跟踪点- 用于挂钩内核开发人员预定义的事件(使用 TRACE_EVENT 宏)
USDT - 用于挂钩开发人员在应用程序代码中设置的预定义跟踪点
Kprobes (Kernel Probes) - 用于在运行时动态挂钩到内核代码的任何部分
Uprobes (User Probes) - 用于在运行时动态连接到用户空间应用程序的任何部分
内核环境中含几块订位义的挂杆,还会解乏地将 eBPF 子程序代码额外添加到一些挂杆(列如,装置传参、方程通道/进口、线上活动、内核关注点)。不一样在消费者环境中,非常多文字进行时、数据信息库装置和软件下载堆栈都透明化了 Linux BCC 软件的订位义挂杆,eBPF 子程序代码还会挂接过一些挂杆中。
只是相当刻想法的是kprobes和uprobes。若是的生产中展现故障 以及我无够了的相关信息以及我真想在启动时gif动态增多验测都办?这也就是 kprobes 和 uprobes 同意坚强的丰厚察性的地点。
例如,使用 uprobe,可以在运行时挂钩到应用程序中的特定函数,而无需修改应用程序的代码。每当执行该函数时,都会触发一个 eBPF 程序来捕获所需的数据。这允许令人兴奋的可能性,如调试。
今天我门懂得了 eBPF 的大察性是应该如何运行的,让你公司门我看看用例。
eBPF 可观察性用例
eBPF 可以用在于近乎各个分类的共有比较可观察性用例,不仅如此还开拓了新的概率较高。
系统和基础设施监控: eBPF 允许深入监控系统级事件,例如 CPU 使用率、内存分配、磁盘 I/O 和网络流量。例如, 。
容器和 Kubernetes 监控:查看特定于 Kubernetes 的指标、资源使用情况以及单个容器和 pod 的运行状况。
应用程序性能监控 (APM):对用户空间应用程序的细粒度可观察性以及对应用程序吞吐量、错误率、延迟和跟踪的可见性。
自定义可观察性:对特定于应用程序或基础设施的自定义指标的可见性,如果不编写自定义代码则可能不容易获得这些指标。
高级可观察性: eBPF 可用于高级可观察性用例,例如、和。
每天都在常有 eBPF 在大察性这方面的新APP诞生。
这对今天小编怎样才能来不错察性暗示着着那些? eBPF 是否能够有将转化成主要内容的设备?我会们与主要页面来相对较。
eBPF 与现有的检测方法
今日,用来 eBPF 除此之外,以及二种通常的的方式来测试用途系统和基本条件安全设施的不错的察性。
- 基于代理的检测:集成到应用程序代码或基础设施节点中以收集遥测数据的独立软件 SDK/库。
基于 Sidecar 代理的检测:Sidecar 是与应用程序或服务一起运行的轻量级独立进程。它们在微服务和基于容器的架构(如 Kubernetes)中很受欢迎。
有关系立于 eBPF 的检则与批发商和边车的详情比效,。以內是前言视图 -
| eBPF | 经销商 | 边车 |
---|
1.数据库见到性/目数 | 高(但有些差距) | 高的 | 低的 |
2.侵袭性 | 低(带外) | 高(内联) | 高(内联) |
3.耐腐蚀性开销 | 低的 | 中等的 | 高的 |
4. 安全可靠质量保障 | 高的 | 中等的 | 中等的 |
5.易制定 | 高的 | 低的 | 中等的 |
6. 最易维持和更换 | 高的 | 低的 | 中等的 |
7.可扩张性 | 高的 | 中等的 | 低的 |
以至于我们公司所闻,eBPF 在可以说全部的规格上好于原有的检查技术。有这几个利弊 -
可以一次性涵盖所有内容(基础设施、应用程序)
更少侵入性——eBPF 不是内联运行的工作负载,例如每次工作负载运行时都会运行的代码代理。数据收集是带外和沙盒的,因此对正在运行的系统没有影响。
低性能开销——eBPF 作为本地机器代码运行,没有上下文切换。
更安全- 由于采用了验证等内置安全措施。
易于安装- 无需任何代码更改或重新启动即可投入使用。
易于维护和更新- 同样无需更改代码和重新启动。
更具可扩展性- 由易于实施和维护以及低性能开销驱动
就问题来讲,当下 eBPF 不菲察性的常见相差太大在与规划式定位跟踪(,但用例仍位于初期时段)。
总来看之,由此可见 eBPF 比于现阶段测量议器工艺的显大的优势,大家可能合理有效地预料 eBPF 将已成为默认页的下新一批测量议器服务平台。
对可观察性的影响
这对非常可观察性制造行业代表着着啥?有啥变?想像中一些充沛察性解决方法设计:
- 你啊以在 5 秒钟内开启内核
- 是没有代碼改变或重拾启动服务器
- 一起是指全部资源 - 理论知识结构、软件系统程序、全部资源
- 开销可以说为零
- 十分安全性高
这即使 eBPF 使之变成 能够的原故。这即使为一些 现代人对这个水平这么开心的原故。
我们的能能看好下一批比较可观察性改善方式都用 eBPF 而不会代碼选择做检查。
Datadog 和 NewRelic 等普通操作者就在投资者倡导对于 eBPF 的用具,以扩张其对于源代码的经销商护肤品组合公式。同时,有为数不多的几家对于 eBPF 倡导的下这一代批售商,处理好了和。
似乎过去的参予的者必定在几今年挨个语言地为4个根本措施配件创设重新的源代码加盟代理,但新参予的者就能够在几月内动用 eBPF 赚取同样的情况的涉及。这使这些人还就能够专心致志于技术创新附加值链的最高基本要素,比如统计资料补救、手机大家感受,以及。不但,这些人的统计资料补救和手机大家感受层也是新一代 创设的,以不支持新的用例、数和频段。
那些许多都应该是统筹推进此范畴的多自主创新,并在未来生活好几年使不错的察性会更加无缝焊接、安全防护和更易快速执行。
谁应该使用 eBPF 可观察性?
前提是,若是您趋于近现代云原本室内环境(Kubernetes、微服务的)中,所以特征提取 eBPF 和特征提取地区代理的技巧期间的不同最明显的(性能指标开销、的稳定性、便于安装使用等)。
之后,比如他还在大占比工司运营,特别研究背景 eBPF 的轻数率进口代理将力促对概况的显大改进建议。这概率是 eBPF 在 LinkedIn、Netflix 和 Meta 等都有过量历史记录的信息技术工司中通过率极高的原故其中之一。
3,这样你缺乏性枝术。容积并正选择可以说不需求装和维护与保养的不错的察性应对处理计划书,然后呢会需找对于 eBPF 的应对处理计划书。
概括
换句话说,利用提拱特别好的论文检测机能,eBPF 有或许在中国未来好久从完全上打造人们的不错察性的办法。
尽管说在本文作者中我国最主要研究综述了 eBPF 在参数库回收利用/测试中的运用,但十年后的中国的运用机会会看见 eBPF 代替参数库治理 而且参数库存储空间层。机会性是大范围的,但无法科学探索。
参考
-
-
-
-
也上线