一套循序渐进的 eBPF 教程,提供 C、Go、Rust 的短小可运行示例,主要基于 libbpf 与 CO-RE。
aliyun/coolbpf
封装 libbpf 的 C 库与平台,用于编译和加载 eBPF 程序,支持远程编译与内核版本回移。
- Star
- 292
- Fork
- 44
- 未关闭 Issue
- 5
- 最近提交
- 21小时前
这是什么?
coolbpf 封装了 libbpf 的主要功能,方便开发者构建内核追踪与干预程序,减少底层配置工作。它提供本地编译服务及 BPF 函数调用的封装,也提供远程编译服务:上传 bpf.c 源文件后返回 bpf.so,本地应用直接加载即可,无需自行维护编译环境。
项目还支持通过内核模块把新版内核的 BPF 特性回移到旧版内核,例如在 3.10 内核上使用 BPF,并用 ring buffer 替代 perf buffer。它可自动生成 BTF,并提供 Python、Go、C、Rust 等语言的支持。编译 libcoolbpf 需要 elfutils-devel 和 gcc,编译 eBPF 工具还需要 clang 和 llvm。
仓库中还包含基于 eBPF 的 LLM 智能体观测工具 AgentSight,通过捕获 SSL/TLS 流量和进程行为实现观测,无需修改代码;另有 eNetSTL 等内核模块,为 XDP 程序提供额外的 kfunc。
核心功能
- 01提供本地编译服务,并封装 BPF 函数调用。
- 02提供远程编译服务,返回 bpf.so 供本地加载。
- 03通过内核模块将新特性回移到旧内核,如在 3.10 内核上支持 BPF。
- 04自动生成 BTF。
- 05支持 Python、Go、C、Rust 语言。
- 06AgentSight 基于 eBPF 观测 LLM 智能体的流量与进程,无需修改代码。
适用场景
- 在不维护本地编译工具链的情况下开发 eBPF 追踪工具。
- 借助内核模块回移,在较旧的内核上运行 BPF 程序。
- 在 Linux 上观测 AI 智能体的网络流量与子进程行为。
快速上手
- 1
安装构建依赖(elfutils-devel、gcc)
- 2
在项目根目录安装 libcoolbpf
./install.sh - 3
在项目根目录构建 syscall 示例
mkdir -p build && cd build && cmake -DBUILD_EXAMPLE=on .. && make
使用前须知
- 构建 eBPF 工具还需要 clang 和 llvm,除 gcc 和 elfutils 之外。
- 内核版本回退等功能依赖加载内核模块,需要 root 权限。
- 除所列依赖外,README 未给出其他明确的许可或稳定性方面的注意事项。
收录于专题
标签
常见问题
- coolbpf 是什么?
- 封装 libbpf 的 C 库与平台,用于编译和加载 eBPF 程序,支持远程编译与内核版本回移。 coolbpf 封装了 libbpf 的主要功能,方便开发者构建内核追踪与干预程序,减少底层配置工作。它提供本地编译服务及 BPF 函数调用的封装,也提供远程编译服务:上传 bpf.c 源文件后返回 bpf.so,本地应用直接加载即可,无需自行维护编译环境。
- coolbpf 可以免费使用吗?用的什么许可证?
- coolbpf 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- coolbpf 还在维护吗?
- 活跃维护中。coolbpf 最近一次提交是在 2026年11月6日。
- coolbpf 适合用来做什么?
- 在不维护本地编译工具链的情况下开发 eBPF 追踪工具。 借助内核模块回移,在较旧的内核上运行 BPF 程序。 在 Linux 上观测 AI 智能体的网络流量与子进程行为。
- coolbpf 怎么安装和运行?
- 安装构建依赖(elfutils-devel、gcc) 在项目根目录安装 libcoolbpf: ./install.sh 在项目根目录构建 syscall 示例: mkdir -p build && cd build && cmake -DBUILD_EXAMPLE=on .. && make
- 在哪里获取 coolbpf?
- 源代码和安装说明在 GitHub 上:https://github.com/aliyun/coolbpf
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
在 Windows 内核上运行 eBPF 程序的实现,沿用 Linux 生态的工具链和 API。
基于 eBPF 的 Linux 终端界面工具,用于抓取和查看网络流量。
面向 Linux 的高级追踪语言与工具,基于 eBPF 实现低开销的内核与用户态事件追踪。
将 eBPF 程序打包为 OCI 镜像 Gadget,用于在 Kubernetes 集群和 Linux 主机上采集与检查系统数据的工具集。
基于 eBPF 的 Kubernetes 网络、安全与可观测性方案,支持 L3-L7 身份感知策略。