用途:指导使用 Aya 框架以 Rust 编写生产级 eBPF 程序,涵盖内核侧 BPF 代码、结构化日志、内核与用户空间共享 map,以及与 tokio 异步集成。
主要能力:支持 tracepoint、kprobe、kretprobe、uprobe、XDP、TC、socket filter、perf event、LSM、sk_msg 等程序类型;支持 HashMap、Array、RingBuf、PerfEventArray、LruHashMap 等 map;可通过 aya-tool 从 vmlinux BTF 生成内核类型绑定,并用 bpf_core_read! 实现 CO-RE 字段访问。
使用方式:安装 aya-tool 与 cargo-generate,用 cargo generate https://github.com/aya-rs/aya-template 创建模板工程,工作区含内核侧 crate、用户空间 crate 与 xtask。用 cargo xtask build-ebpf 构建 BPF 对象,cargo xtask run 构建并以 sudo 运行。内核侧用 #[map]、#[tracepoint] 等宏定义 map 与程序,用户空间用 Bpf::load、BpfLogger::init、program.attach 加载挂载,并通过 RingBuf 配合 tokio 的 AsyncFd 读取事件。
适用场景:系统调用跟踪、网络数据包处理、连接跟踪、安全审计等低层可观测性与内核编程任务。
限制:需 CAP_BPF 或 CAP_SYS_ADMIN 权限;常见错误包括无效内存访问、BTF 不匹配、权限不足、map 已存在,需按提示排查;具体平台与版本要求资料未提供。