合并 GitHub 远程更新(License + 视频链接)
基于 eBPF (libbpf + BPF CO-RE) 的轻量级系统异常观测与根因定位工具,覆盖 5 类异常场景,输出结构化 Markdown / JSON 诊断报告 + JSON 结构化数据。
目标运行环境:openKylin / debian系, x86_64 / ARM64。
详见 docs/manual.md — 安装说明、构建指南、配置详解、各模块使用说明。
从 Releases 下载最新版本对应架构的安装包。
**Debian/Opebkylin (deb)**:
# 安装 sudo apt install ./eebpf_*_amd64.deb # 运行(需要 root) sudo eebpf cpu -d 10 sudo eebpf-ai report/ -m cpu,mem
卸载:sudo apt remove eebpf
sudo apt remove eebpf
**RHEL/Centos (rpm)**:
# 安装 sudo rpm -ivh eebpf-*.x86_64.rpm # 或使用 dnf/yum 自动处理依赖 sudo dnf install ./eebpf-*.x86_64.rpm # 运行(需要 root) sudo eebpf cpu -d 10 sudo eebpf-ai report/ -m cpu,mem
卸载:sudo rpm -e eebpf
sudo rpm -e eebpf
配置 API key(AI 诊断功能):
编辑 /usr/share/eebpf/ai_analysis/api_config.json,将 api_key 字段替换为你的密钥:
/usr/share/eebpf/ai_analysis/api_config.json
api_key
sudo vim /usr/share/eebpf/ai_analysis/api_config.json
{ "api_key": "sk-your-key", "base_url": "https://api.deepseek.com", "model": "deepseek-v4-pro" }
也可创建用户级配置(优先级高于系统级):
mkdir -p ~/.eebpf/ai_analysis cp /usr/share/eebpf/ai_analysis/api_config.json ~/.eebpf/ai_analysis/ # 然后编辑 ~/.eebpf/ai_analysis/api_config.json
本地测试也可用 echo "sk-your-key" > ai_analysis/api.txt(gitignore 保护,优先级高于 json)。
echo "sk-your-key" > ai_analysis/api.txt
git clone https://github.com/X2002w/eebpf.git && cd eebpf # 拉取源码后建议 checkout 到最新 tag
手动构建:
./start.sh # 环境检查 + 依赖安装 make # 构建 sudo ./eebpf -v # 验证版本 sudo ./eebpf cpu -d 10 # 运行
一键部署脚本:
sudo ./scripts/setup.sh # 依赖检查 → 构建 → 场景复现
git clone https://github.com/X2002w/eebpf.git && cd eebpf # 建议优先使用快捷脚本 ./enter-container.sh # 或者手动启动 # 启动容器(需要 sudo,容器需要 privileged + BPF 权限) sudo docker compose build --pull && sudo docker compose up -d # 进入容器 sudo docker compose exec openkylin bash -c "cd /workspace && exec bash"
容器内 /workspace 已挂载项目源码,可直接 make 构建并运行。
/workspace
make
-i, --interval <秒>
-d, --duration <秒>
-o, --output <路径>
-j, --json
report/
-h, --help
cpu
io
mem
lock
hot
correlate
history
# 通用模板 sudo eebpf <子命令> [-i <秒>] [-d <秒>] [-o <路径>] [-j] # CPU 异常检测 sudo eebpf cpu -i <间隔> -d <时长> [-o <输出文件>] [-j] sudo eebpf cpu -i 3 -d 60 -o cpu_report.txt # 实际示例 # I/O 异常检测 sudo eebpf io [-i <间隔>] [-d <时长>] [-j] sudo eebpf io -d 0 -j # 实际示例:持续运行 + JSON # 内存异常检测 sudo eebpf mem [-i <间隔>] [-d <时长>] [-j] sudo eebpf mem -d 30 # 实际示例 # 锁竞争检测 sudo eebpf lock [-i <间隔>] [-d <时长>] [-j] sudo eebpf lock -i 1 -d 0 # 实际示例:每秒采样,持续运行 # 系统调用热点分析 sudo eebpf hot [-i <间隔>] [-d <时长>] [-o <输出文件>] [-j] sudo eebpf hot -d 120 -j -o hot_report.txt # 实际示例 # 多维关联分析 sudo eebpf correlate [-m <模块列表>] sudo eebpf correlate -m cpu,mem,io # 实际示例 # 历史趋势查询 sudo eebpf history [-m <模块>] [-t <时间范围>] sudo eebpf history -m cpu -t 60 # 实际示例
通过 eebpf.conf 自定义阈值和参数,查找路径: ./eebpf.conf > ~/.eebpf.conf > /etc/eebpf.conf。
eebpf.conf
./eebpf.conf
~/.eebpf.conf
/etc/eebpf.conf
# 采样间隔 (秒) interval = 5 # CPU 异常阈值 (%) cpu_threshold = 90 # 系统调用热点阈值 hot_freq_per_sec = 10000 hot_lat_us = 10000 hot_err_rate = 0.1
诊断报告输出到项目根目录下的 report/ 目录,使用 -j 标志后自动创建。
-j
report/<module>.json
report/<module>.md
report/demo_summary.md
scripts/reproduce.sh
report/benchmark.md
scripts/bench.sh
JSON 格式详见 docs/json-schema.md。
start.sh
enter-container.sh
scripts/setup.sh
scripts/ai_check_env.sh
ai_analysis/ 目录包含基于大模型的跨模块关联分析工具,读取 eebpf JSON 报告进行根因推断。
ai_analysis/
# 初始化环境 ./start.sh # 配置 API key(编辑 api_config.json) # 或本地测试用: echo "sk-your-key" > ai_analysis/api.txt # 运行诊断 # 在运行前,确保requestments里要求的python库以及下载,可自行选择py解释器,不一定 # 必须得是下面这个路径(这个路径是在本地测试时创建的虚拟环境) ./ai_analysis/venv/bin/python ai_analysis/caller.py report/ -m cpu,mem,io
API 兼容 OpenAI 接口的任意后端(DeepSeek、通义千问等),编辑 ai_analysis/api_config.json 切换。
ai_analysis/api_config.json
caller.py 生成 prompt 时附带 5 类上下文(需 storage_enabled=1 才能取到基线/趋势/关联):
caller.py
storage_enabled=1
编辑 ai_analysis/system_prompt.md 即可自定义发送给大模型的系统提示词,无需修改代码。caller.py 启动时自动加载该文件内容作为 system prompt,若文件不存在则使用内置简化版。
ai_analysis/system_prompt.md
安装后文件路径(与 api_config.json 相同):
api_config.json
/usr/share/eebpf/ai_analysis/system_prompt.md
~/.eebpf/ai_analysis/system_prompt.md
可自定义的内容示例:
correlate 子命令读取各模块已写入的报告,按规则引擎做跨模块时间窗匹配,输出关联诊断。例如 I/O 缓存失效与内存抖动在 ±60s 内同时出现即判定为相关。
# 默认 60s 窗口 sudo eebpf correlate -j # 自定义窗口 sudo eebpf correlate --window 120 -j
采集报告默认写入 report/eebpf.db(SQLite)。history 子命令查询指定模块的时间线。
report/eebpf.db
# 查询 CPU 模块最近 20 条记录 sudo eebpf history cpu # JSON 输出 + 限制条数 sudo eebpf history mem -j -n 50 # 执行自定义 SQL sudo eebpf history --sql "SELECT * FROM findings WHERE module='io' LIMIT 10" # 清空历史 sudo eebpf history --clear
CONFIG_DEBUG_INFO_BTF
/sys/kernel/btf/vmlinux
make clean && make
GitHub Actions 自动化构建、测试与发布(详见 docs/compat-matrix.md):
v*
通过网盘分享的文件:eebpf演示视频.rar 链接: https://pan.baidu.com/s/1PxebXnKNRlbtkGNRCIYrMQ?pwd=9zvh 提取码: 9zvh
待定。deb/RPM 打包控制文件声明 GPL-2.0 许可证,其余源码部分尚未确定最终许可证。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
eebpf — eBPF 系统异常观测与根因定位工具
基于 eBPF (libbpf + BPF CO-RE) 的轻量级系统异常观测与根因定位工具,覆盖 5 类异常场景,输出结构化 Markdown / JSON 诊断报告 + JSON 结构化数据。
目标运行环境:openKylin / debian系, x86_64 / ARM64。
用户手册
详见 docs/manual.md — 安装说明、构建指南、配置详解、各模块使用说明。
快速开始
方式一:Deb/RPM 包安装
从 Releases 下载最新版本对应架构的安装包。
**Debian/Opebkylin (deb)**:
**RHEL/Centos (rpm)**:
配置 API key(AI 诊断功能):
编辑
/usr/share/eebpf/ai_analysis/api_config.json,将api_key字段替换为你的密钥:也可创建用户级配置(优先级高于系统级):
方式二:源码构建
手动构建:
一键部署脚本:
方式三:Docker 部署
通用 CLI 参数
-i, --interval <秒>-d, --duration <秒>-o, --output <路径>-j, --jsonreport/目录-h, --help子命令
cpuiomemlockhotcorrelatehistory使用示例
配置文件
通过
eebpf.conf自定义阈值和参数,查找路径:./eebpf.conf>~/.eebpf.conf>/etc/eebpf.conf。输出格式
诊断报告输出到项目根目录下的
report/目录,使用-j标志后自动创建。report/<module>.jsonreport/<module>.mdreport/demo_summary.mdscripts/reproduce.sh生成)report/benchmark.mdscripts/bench.sh生成)JSON 格式详见 docs/json-schema.md。
文档索引
脚本索引
start.shenter-container.shscripts/setup.shscripts/reproduce.shscripts/bench.shscripts/ai_check_env.shAI 多模块联合诊断
ai_analysis/目录包含基于大模型的跨模块关联分析工具,读取 eebpf JSON 报告进行根因推断。API 兼容 OpenAI 接口的任意后端(DeepSeek、通义千问等),编辑
ai_analysis/api_config.json切换。AI 诊断 5 项上下文能力
caller.py生成 prompt 时附带 5 类上下文(需storage_enabled=1才能取到基线/趋势/关联):自定义系统提示词
编辑
ai_analysis/system_prompt.md即可自定义发送给大模型的系统提示词,无需修改代码。caller.py启动时自动加载该文件内容作为 system prompt,若文件不存在则使用内置简化版。安装后文件路径(与
api_config.json相同):/usr/share/eebpf/ai_analysis/system_prompt.md~/.eebpf/ai_analysis/system_prompt.md可自定义的内容示例:
多维关联分析
correlate子命令读取各模块已写入的报告,按规则引擎做跨模块时间窗匹配,输出关联诊断。例如 I/O 缓存失效与内存抖动在 ±60s 内同时出现即判定为相关。历史趋势查询
采集报告默认写入
report/eebpf.db(SQLite)。history子命令查询指定模块的时间线。构建要求
CONFIG_DEBUG_INFO_BTF(/sys/kernel/btf/vmlinux存在)CI/CD
GitHub Actions 自动化构建、测试与发布(详见 docs/compat-matrix.md):
v*eebpf 演示视频百度网盘链接
通过网盘分享的文件:eebpf演示视频.rar 链接: https://pan.baidu.com/s/1PxebXnKNRlbtkGNRCIYrMQ?pwd=9zvh 提取码: 9zvh
License
待定。deb/RPM 打包控制文件声明 GPL-2.0 许可证,其余源码部分尚未确定最终许可证。
TODO