关于ebpf:基于eBPF的开源项目

84次阅读

共计 2276 个字符,预计需要花费 6 分钟才能阅读完成。

引言

真正意义上的 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 作为后端来存储原始信息。

退出咱们

关注咱们

正文完
 0