项目/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 验证输入格式。

相关阅读

MemoArchLinux 编译 python-kornia-rsMemo命令行工具与实用技巧Memo允许 perf 采集内核回溯