项目/bpfstream
更新于 2026/02/10
bpfstream
高吞吐处理 bpftrace JSON 事件流,支持实时聚合、格式化输出与 DuckDB 导入。
bpfstream 是 bpftrace 与分析存储之间的流处理层。它从标准输入或文件读取 bpftrace 的 JSON/NDJSON 输出,将内核事件转换为实时计数、结构化终端输出,或直接追加到 DuckDB 表中。
处理能力
- VFS:聚合 read、write、open、fsync 等操作,或保存带路径、offset 和返回值的原始事件。
- 网络:处理 TCP、UDP、连接、重传和 accept 等事件。
- 内存:统计 mmap、munmap、brk 与 page fault。
- 进程:统计 exec、fork、clone 与 exit。
- syscall:按系统调用名称聚合,或保存参数与返回值。
聚合命令支持 table、JSON 与 CSV 输出,也能在 --live 模式下逐个时间窗口展示结果。原始事件路径使用 simdjson 解析输入、logfmt 解码字段,并通过 DuckDB appender 批量写入,避免逐行 SQL insert。
仓库给出的 VFS 导入基准在 Ryzen 7 9700X 上处理 740 万行数据,吞吐约 124 万行/秒。该结果反映指定硬件和样本下的 parser-to-DuckDB 路径,不代表探针采集开销或其他事件类型的固定性能。
使用边界
项目目前没有 release,也没有声明开源许可证。公开源码不等于获得复制、修改或分发授权。
bpfstream 本身不加载 eBPF 程序,而是消费 bpftrace 输出。仓库当前只附带 VFS 的 count 与 raw probe 脚本;网络、内存、进程和 syscall 命令需要调用方提供匹配字段约定的事件流。
GitHub Actions 会运行格式检查、静态检查、构建和测试。使用时仍需在 Linux 上安装 bpftrace,并根据内核版本和目标 probe 验证输入格式。