引言
真正意义上的eBPF技术尽管诞生还不到十年工夫(2014年首次提出eBPF概念),但曾经倒退成为当下煊赫一时的技术。去年8月,由微软、谷歌、Facebook(已更名为meta) 等公司联结成立了eBPF基金会,大力发展eBPF技术。最近几年,eBPF技术在国内也失去了广泛应用,很多大厂也开始关注并采纳eBPF技术。
eBPF简介
eBPF是extended BPF的缩写,而BPF是Berkeley Packet Filter的缩写。对linux网络比拟相熟的小伙伴对BPF应该比拟理解,它通过特定的语法规定应用基于寄存器的虚拟机来形容包过滤的行为。比拟罕用的性能是通过过滤来统计流量,tcpdump就是基于BPF实现的。而eBPF对它进行了扩大来实现更多的性能。eBPF 技术支持在不同的集成点动静地将 eBPF 字节码插入到 Linux 内核中,例如: 网络 IO、利用套接字和跟踪点,以实现安全性、网络和可见性逻辑。eBPF 具备高效率和灵活性。
要理解更多对于 eBPF 的信息,可拜访eBPF.io和性能剖析大神brendan gregg的主页。
开源我的项目
tracee
tracee是一款易于应用的轻量级零碎追踪工具,在该工具的帮忙下,开发人员能够实时监控零碎调用和其余零碎事件。它只会追踪新创建的过程和容器,也就是Tracee运行之后所开启的过程和容器,这样就能够帮忙用户将注意力放在相干事件上,而不是零碎中所产生的每一件事件。向Tracee增加新事件(尤其是零碎调用)也非常简单,而且无需手写任何代码。除了追踪性能之外,Tracee还可能捕捉到写入磁盘或内存的文件,并提取动静加载至应用程序内存中的代码。在这些性能的帮忙下,咱们将可能获取到运行过程的外部状况。
bpftrace
bpftrace是 Linux 高级追踪工具和语言。该工具基于 eBPF 和 BCC 实现了通过探针机制采集内核和程序运行的信息,而后用图表等形式将信息展现进去,帮忙开发者找到暗藏较深的 Bug、平安问题和性能瓶颈。
Falco
Falco是sysdig的平安我的项目,它应用eBPF和Linux模块作为内核跟踪库开发。Sysdig Falco是一种旨在检测异样流动开源的零碎行为监控程序。作为Linux主机入侵检测零碎,对Docker也很有用,因为它反对容器上下文,如container.id、container.image或其规定的命名空间。
Cilium
Cilium次要用于提供并通明地爱护网络连接和应用程序工作负载(如应用程序容器或过程)之间的负载平衡。在第3/4层运行,提供传统的网络和平安服务,以及第7层爱护和平安应用利用协定,如 HTTP、 gRPC 和 Kafka。Cilium 被集成到常见的配器框架中,比方 Kubernetes。
Katran
Katran是一个 c + + 库和 BPF 程序,用于构建高性能的第四层负载平衡转发平台。Katran 利用内核中的 XDP 基础设施为疾速数据包的解决提供内核设施。Katran 是 Facebook 开源的高性能第 4 层负载均衡器,目前在 Facebook 外部处于孵化阶段。其次要性能个性在于:
- 疾速(特地是在驱动模式下的 w/ XDP)
- 性能与多个 NIC 的 RX 队列呈线性关系
- RSS 敌对的封
Elkeid
Elkeid是用Linux模式技术栈开发的内核事件捕捉工具,由字节跳动率先开源。其次要性能个性有:
- 对于同一类事件会有不同的syscall数据形容,进而取得不同的数据信息起源。
- 采集的数据具备清晰的过程链信息。Driver和Agent会追溯以后过程的父过程和先人过程,默认driver配置反对最高上溯8个先人过程,实际中根本能够将绝大部分过程的残缺过程链采集下来。
- 会记录内核中的模块变动以及异常情况。Elkeid 装置后,对后续尝试内核批改的过程均能够间接发现并上报相应数据,同时如果存在任何暗藏内核模块,对/proc/目录的Hook,对过程进行ptrace等行为均能够间接发现并生成数据上报。
- 针对平安场景减少了独有数据获取和记录维度
kubectl-trace
kubectl-trace是IO Visor开源的,帮忙用户在Kubernetes集群中安顿执行BPF程序的kubectl插件,能够用来剖析零碎的性能问题,装置便捷。
eHIDS
eHIDS是一个HIDS的雏形。HIDS全称是Host-based Intrusion Detection System,即基于主机型入侵检测零碎,部署在主机内的,次要是对主机的异样行为进行检测,比方新建文件,创立过程,连贯等。
Kindling
Kindling是一款基于 eBPF 的云原生可观测性开源我的项目,旨在帮忙用户了解从内核到代码堆栈的应用程序行为。目前,它提供了一种简略的办法来获取 Kubernetes 环境中的网络流视图,以及许多内置的网络监督仪表板,如重传、 DNS、吞吐量、 TPS等。相比于bcc等小工具型产品,它突出了无侵入式地进行7*24小时观测的个性。Kindling集成了sysdig的agent-lib层,但丰盛了更多的hook点,退出了kprobe的应用并将在后续开发uprobe性能。Kindling提供了两个具备不同性能然而具备雷同agent的版本。轻量级版本集成到了Prometheus中,它应用PromQL来查问来自Prometheus的数据,因而很容易集成。然而因为Prometheus的基数限度,无奈存储详细信息。对于规范版本,Kindling提供了更为具体的信息,并应用ElasticSearch作为后端来存储原始信息。
退出咱们
关注咱们