
一个帮助你更容易构建和分发eBPF程序的编译器和运行时框架。
eunomia-bpf是一个动态加载库/运行时以及一个编译工具链框架,旨在帮助您更容易地构建和分发eBPF程序。
项目文档现在统一维护在 eunomia.dev ,文档源码位于 eunomia-bpf/eunomia.dev。
有了eunnomia-bpf,您可以:
编写 eBPF 程序的库:libbpf eBPF应用程序:仅编写 eBPF 内核代码 ,并通过 perf event或 ring buffer 自动暴露您的数据从内核。命令行参数。BCC 或 libbpf 的方式编写内核部分。Wasm[^2] 构建eBPF程序:参见 Wasm-bpf 项目跟踪、网络、安全的使用场景。分发:OCI镜像。1行 bash 从 云端 或 URL 运行eBPF程序,无需重新编译,独立于内核版本和架构。JSON 配置文件或 Wasm 模块动态加载 eBPF 程序。更多信息,请参见 eunomia-bpf 文档站。
[^1]: CO-RE: 编译一次 – 在任何地方运行 [^2]: WebAssembly 或 Wasm: https://webassembly.org/
您可以通过以下方式从 OCI 仓库运行预编译的 eBPF 程序到内核,只需1行 bash 命令:
# 从 GitHub Releases 下载最新发布版本
$ wget https://github.com/eunomia-bpf/eunomia-bpf/releases/latest/download/ecli -O ecli && chmod +x ./ecli
$ sudo ./ecli run ghcr.io/eunomia-bpf/execve:latest # 从 OCI 仓库运行一个预编译的 ebpf 工具
[79130] node -> /bin/sh -c which ps
[79131] sh -> which ps
[79132] node -> /bin/sh -c /usr/bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,c
[79133] sh -> /usr/bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command=
[79134] node -> /bin/sh -c "/home/yunwei/.vscode-server/bin/2ccd690cbf
[79135] sh -> /home/yunwei/.vscode-server/bin/2ccd690cbff 78132 79119 79120 79121
[79136] cpuUsage.sh -> sed -n s/^cpu\s//p /proc/stat
为了降低维护复杂度,主分支已经移除了旧的远程 HTTP 模式(ecli client / ecli-server)。最后一版实现保留在 archive/ecli-remote-http 分支中。
安装ecli工具以从云端运行eBPF程序:
```console $ wget https://github.com/eunomia-bpf/eunomia-bpf/releases/latest/download/ecli -O ecli && chmod +x ./ecli $ ./ecli -h ecli 子命令,包括 run、push、pull
用法: ecli [COMMAND_LINE]... [COMMAND]
命令: run 运行ebpf程序 push 将镜像推送到注册表 pull 从注册表拉取镜像 help 打印此消息或给定子命令的帮助
参数:
[COMMAND_LINE]... 不推荐使用。仅用于兼容旧版本。要运行的命令行;可执行对象可以是本地路径、URL 或 -(从 stdin 读取)。后续参数会原样传递给程序
选项: -h, --help 打印帮助 .... ```
安装ecc编译器工具链,用于将eBPF内核代码编译为config文件或Wasm模块(为了编译,需要安装clang、llvm和libclang):
console
$ wget https://github.com/eunomia-bpf/eunomia-bpf/releases/latest/download/ecc && chmod +x ./ecc
$ ./ecc -h
eunomia-bpf编译器
用法: ecc [OPTIONS] <SOURCE_PATH> [EXPORT_EVENT_HEADER]
....
或使用docker镜像进行编译:
```bash
# 对于x86_64和aarch64
docker run -it -v `pwd`/:/src/ ghcr.io/eunomia-bpf/ecc-`uname -m`:latest # 使用docker进行编译。`pwd`应包含*.bpf.c文件和*.h文件。
```
有关构建详细信息,请参见build。
有关简单eBPF工具和eunomia-bpf库使用的详细信息,请参见examples。
MIT LICENSE
$ claude mcp add eunomia-bpf \
-- python -m otcore.mcp_server <graph>