您现在的位置:首页 >> 环保科技

关于eBPF与可观测性,你希望知道的都在这里

时间:2023-03-09 12:18:02

明确客观的定义。

eBPF助长新的初学者思路

当前,现代软件系统内部设计的体量正在呈指数型增长,服务之间的交互出现异常十分复杂。在这种布景下,传统NPM、APM不就会最大限度发挥作用同类型链路弊端监控,只能通过碎片化的文档追因。而在当每一个组件内部设计及缓冲探头较强可观察病可逆的技能后,就让可以发挥作用无渗透情况下的快速排障,eBPF就是这样一种有效的核心技术手段。

eBPF是什么

eBPF被称作LinuxAPI,是LinuxAPI一种革命病可逆的核心技术,可以在API中的列车运行沙盒程序中。该核心技术可以确保而高效地扩展API的技能,而无需修改API乃是代二进位或者搭载API模块。同时可以以致于可观察病可逆所较强的观察单单、文档水平允许等缺乏。

以JavaScript为例,可以帮助大家非常好地认知eBPF。

众所周知,JavaScript可以在Facebook中的发挥作用十分复杂特性,只能很容易地将一段代二进位缓冲到Facebook中的,使Facebook就让继续是静可逆章节。用意类比,eBPF可以将任何一段代二进位缓冲到操作系统内部设计或客户端可逆的任何一个算子上,可以在API中的发挥作用特性,使API就让继续是不就会触碰到的。

eBPF管理模式模型

eBPF包含客户端密闭程序中和API程序中两个部分。

客户端密闭程序中全权负责加载eBPFbit二进位至API,如能够也就会全权负责读取API回传的统计分析文档或事件详情;API中的的eBPFbit二进位全权负责在API中的指派特定事件,如能够也就会将指派的结果通过eBPF Maps或者Perf-event事件电子化客户端密闭;

其中的客户端密闭程序中与APIeBPFbit二进位程序中可以运用于Maps内部结构发挥作用双向通信,这为API中的列车运行的eBPFbit二进位程序中缺少了非常加紧凑的依靠。同时,eBPF程序中流过到API以前就会经过实验者探头,意味着其是“API确保的”。

eBPF的竞争者

转译方侧,eBPF大力支持即时(JIT)转译探头,bit二进位被转译完成后就会直接加载eBPF而不是对每个法则的bit二进位顺利完成新的解释;确保方侧,eBPF程序中的实验者法则确保能乃是不就会被列车运行无限循环系统内部设计的程序中阻塞;遗漏模式方侧,eBPF缺少Error Message帮助发挥作用代二进位优化;

能乃是就会面时方侧,eBPF为同时意味着确保病可逆与通用病可逆,缺少Helpers法则,几乎可以就会面时同类型部API导出的文档。

eBPF运用于注意事项

首先,在开发内部设计列车运行方式上,eBPF当前没有完整的开发内部设计流程,同时可用资料较少,这就会使开发内部设计重复性随之增加。

其次,eBPF开发内部设计成功后就会转译成bit二进位下发至API,差分探头对程序中外部顺利完成检验,其中的包括指令与数目的允许。当eBPF程序中段至少一定的指令数后,就会被禁止指派,这就会直接造成了十分复杂逻辑学不就会发挥作用。

再继续者,eBPF对API内存的就会面时有严格允许,大多数情况下只允许读取,Write技能相当受限。正是如此,eBPF多用作可观察病可逆,而很少运用于其动手调度优化等。

虽然运用于eBPF在一定程度下只能助长病可逆能的增强,但它本身也依靠于非常多的允许,所以要对运用于布景的详细情况顺利完成完全一致分析,绝不用“一刀切”,王李毅论述道。

eBPF可观察病可逆系统内部设计化

可以看出,我们想尽办法通过eBPF发挥作用的两个关键点分别是确保和高效。

确保可以通过Verifier来意味着能乃是不就会被列车运行无限循环系统内部设计的程序中阻塞。JIT转译探头可以将eBPFbit二进位转译成与本地机探头赞同的机探头语言,用意意味着eBPF列车运行时的效率与原生机探头语言保持赞同。

寒原生周围环境下的可观察病可逆

当前eBPF凌空最主要的布景是寒原生。寒原生周围环境下,单体运用已经逐渐容探头化、质服务化,这就直接造成了了软件外部交互十分复杂的弊端。

根据以往的长处及社区的法则,可以论述出eBPF运用在寒原生周围环境下时能够三大缓冲探头的大力支持:

GUI:GUI要意味着一些基本上特性的发挥作用,如客户端认证、司法权依靠、节点全权负责管理、可视化、文档检索等;Scheduler:当eBPF程序中总数增多、处于“点—线—侧”的过渡时,Scheduler则需全权负责策略下发、全权负责管理选曲等特性;

Agent:相异周围环境的十分复杂度相异,在部署可观察病可逆提议的反复中的绝不就会遭遇周围环境弊端。理想状况下,可观察病可逆缺少的Agent特性只能发挥作用零渗透、零干扰、零依靠,同时较强较差的兼容病可逆。

我们到底要通过可观察病可逆凌空发挥作用什么?

实际上,自底向上是乃是文档映射到系统内部设计能乃是再继续映射到运用可逆技能的反复。

API是水平抽象的,在API可逆只能赚取到最基本上的乃是文档,如PID、Cgroup、Namespace等。将乃是文档映射至客户端可逆也就是在取得乃是文档后发挥作用能乃是识别的反复。通过能乃是识别,可以助长非常为直接的价值如病可逆能、确保等。

添加eBPF可观察病可逆的过关斩将

过关斩将1:分析法则层次

想尽办法知道为什么API分析法则层次是运用eBPF时的过关斩将,首先要知道我们为什么要在API可逆动手观察?或许很恰当,因为客户端可逆千变万化,API可逆相对于稳定,是动手可观察病可逆的最佳布景。

上图是一个网络服务文档包的内部结构/解析流程。每一个算子上侧都就会提取到可视的乃是文档,将其保依靠于到eBPF的Maps当中的,再继续将文档传输到客户端可逆。

看起来恰当的特性发挥作用或许却是恰当。每一个小小的特性的背后,都能够对API分析法则有必要了解到。

过关斩将2:列车运行时

在实际凌空反复中的,经常就会遭遇以下弊端。

易用病可逆eBPF有两个目标,一是让非API开发内部设计人员只能随意的修改API,二是提高易用病可逆。但司法权方侧,eBPF在API可逆列车运行能够Root司法权,但却是是所有节点都有Root司法权。其次,eBPF本身也不较易调试。兼容病可逆eBPF本身对API正式版承诺较高,而业内周围环境中的所运用于的LinuxAPI正式版一般较低,相异的API正式版和低正式版API的运用就会助长兼容病可逆的弊端。全权负责管理选曲

当前eBPF多是种系统内部设计运用,随着后来“点—线—侧”的发展,在节点的全权负责管理选曲上也就会出现困难。

推荐基于eBPF的来进行/脚手架/框架/项目

运用于现有的基于eBPF的来进行:BCC bpftrace;基于eBPF开发内部设计十分复杂特性,甚至是一个产品:libbpf C(CO-RE),BBC python,libbpf-rs,cilium/eBPF Go;

优秀的基于eBPF的可观察病可逆项目:Pixie、Falco、MetaFlow。

针对可观察病可逆的观察单单、文档水平允许等缺乏,eBPF最大限度顺利完成了以致于。而随着寒原生的快速发展,eBPF的用武之地才刚刚开始。

成都甲状腺医院哪家治疗最好
西安治包皮过长的专科医院
类风湿病吃什么药好
吃什么缓解类风湿关节炎
正常眼可以用海露滴吗
相关阅读