submit ebpf rca project
本项目面向“基于 eBPF 的系统异常观测与根因定位工具”赛题,设计并实现了一套轻量级系统异常观测与诊断工具。工具基于 eBPF、Go、Cilium/ebpf、clang/LLVM 等开源技术栈,能够在 openKylin / Linux 环境下对典型系统异常进行实时观测、指标采集、事件关联分析和结构化诊断结果输出。
当前版本重点支持以下能力:
本项目当前版本主要面向本地虚拟机和 openKylin 评测环境,强调可复现、可验证和工程可用性。
outputs/cpu_result.md
outputs/syscall_result.md
outputs/io_result.md
outputs/mem_result.md
outputs/lock_result.md
运行全部场景后,会额外生成汇总结果:
outputs/all_result.json
. ├── bpf/ # eBPF C 程序 ├── cmd/rca/ # CLI 主程序入口 ├── configs/ # 默认配置文件 ├── docs/ # 使用说明与设计文档 ├── internal/ # Go 核心模块 │ ├── analyzer/ # 根因分析逻辑 │ ├── collector/ # 不同异常类型的采集器 │ ├── config/ # 配置解析 │ ├── model/ # 诊断结果数据结构 │ ├── report/ # JSON / Markdown 报告生成 │ └── utils/ # 工具函数 ├── scripts/ # 安装、检查、复现场景脚本 ├── outputs/ # 诊断输出结果 ├── Makefile ├── go.mod └── README.md
基础评测环境建议如下:
说明:当前版本主要在 openKylin Kernel 6.6 环境下验证,其他发行版可作为兼容性扩展。
bash scripts/install_deps.sh
如果脚本提示 openKylin 的系统保护机制阻止 apt 安装,可按提示执行:
sudo mm-cli -o sudo reboot
重启后重新运行安装脚本。
make check
或直接运行:
bash scripts/check_env.sh
环境检查会确认以下必须项:
bpf/
bin/
make build
编译成功后会生成:
bin/rca
可查看帮助信息:
./bin/rca --help
sudo make run-all
运行完成后,结果会输出到:
outputs/cpu_result.json outputs/cpu_result.md outputs/syscall_result.json outputs/syscall_result.md outputs/io_result.json outputs/io_result.md outputs/mem_result.json outputs/mem_result.md outputs/lock_result.json outputs/lock_result.md outputs/all_result.json
sudo make run-cpu
输出:
outputs/cpu_result.json outputs/cpu_result.md
sudo make run-syscall
outputs/syscall_result.json outputs/syscall_result.md
sudo make run-io
outputs/io_result.json outputs/io_result.md
sudo make run-memory
outputs/mem_result.json outputs/mem_result.md
sudo make run-lock
outputs/lock_result.json outputs/lock_result.md
除 Makefile 封装命令外,也可以直接使用 bin/rca 运行诊断。
示例:
sudo ./bin/rca \ --mode cpu \ --duration 60 \ --config configs/default.yaml \ --output outputs/cpu_result.json
CPU 场景支持可选热点函数剖析:
sudo ./bin/rca \ --mode cpu \ --duration 60 \ --config configs/default.yaml \ --enable-cpu-hotspot \ --hotspot-duration 30 \ --hotspot-frequency 99 \ --hotspot-output-prefix outputs/cpu_hotspot \ --output outputs/cpu_result.json
说明:CPU 热点函数剖析会调用 perf 作为辅助采样工具。若当前环境不支持 perf 或权限不足,工具不会直接失败,而是在结果中记录 profile_error 和 unavailable_features。
profile_error
unavailable_features
每个诊断结果至少包含以下字段:
Markdown 报告用于人工查看,JSON 结果用于机器解析和后续扩展。
当前版本仍存在以下限制:
后续版本计划继续完善:
本项目为系统创新赛道参赛作品,当前版本用于 openKylin 环境下的系统异常观测与根因定位实验验证。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
eBPF RCA Agent:基于 eBPF 的系统异常观测与根因定位工具
1. 项目简介
本项目面向“基于 eBPF 的系统异常观测与根因定位工具”赛题,设计并实现了一套轻量级系统异常观测与诊断工具。工具基于 eBPF、Go、Cilium/ebpf、clang/LLVM 等开源技术栈,能够在 openKylin / Linux 环境下对典型系统异常进行实时观测、指标采集、事件关联分析和结构化诊断结果输出。
当前版本重点支持以下能力:
本项目当前版本主要面向本地虚拟机和 openKylin 评测环境,强调可复现、可验证和工程可用性。
2. 支持的异常场景
outputs/cpu_result.mdoutputs/syscall_result.mdoutputs/io_result.mdoutputs/mem_result.mdoutputs/lock_result.md运行全部场景后,会额外生成汇总结果:
3. 项目结构
4. 环境要求
基础评测环境建议如下:
说明:当前版本主要在 openKylin Kernel 6.6 环境下验证,其他发行版可作为兼容性扩展。
5. 快速开始
5.1 安装依赖
如果脚本提示 openKylin 的系统保护机制阻止 apt 安装,可按提示执行:
重启后重新运行安装脚本。
5.2 检查环境
或直接运行:
环境检查会确认以下必须项:
bpf/与bin/输出目录可写5.3 编译项目
编译成功后会生成:
可查看帮助信息:
5.4 一键运行全部异常场景
运行完成后,结果会输出到:
6. 单场景复现
CPU 异常占用
输出:
系统调用热点
输出:
I/O 延迟抖动
输出:
内存压力
输出:
锁竞争
输出:
7. CLI 使用方式
除 Makefile 封装命令外,也可以直接使用
bin/rca运行诊断。示例:
CPU 场景支持可选热点函数剖析:
说明:CPU 热点函数剖析会调用 perf 作为辅助采样工具。若当前环境不支持 perf 或权限不足,工具不会直接失败,而是在结果中记录
profile_error和unavailable_features。8. 输出结果说明
每个诊断结果至少包含以下字段:
Markdown 报告用于人工查看,JSON 结果用于机器解析和后续扩展。
9. 当前版本限制
当前版本仍存在以下限制:
10. 后续计划
后续版本计划继续完善:
11. 许可证与说明
本项目为系统创新赛道参赛作品,当前版本用于 openKylin 环境下的系统异常观测与根因定位实验验证。