ebpfexplorer:一款用 Go 编写的终端 TUI 工具

26次阅读
没有评论
ebpfexplorer v0.6.0 免费下载
获取下载链
微信关注「软件教程管家」公众号,回复 ebpfexplorer
官方渠道:GitHub 仓库

30 秒速读:ebpfexplorer 是一款用 Go 编写的终端 TUI 工具,专门用来浏览本机已加载的 eBPF 程序、maps 和 map 条目。如果你平时靠 bpftool 一条命令查一项,ebpfexplorer 能把”程序 → map → 条目 → 持有进程”串成一条可交互的浏览链:按验证器重写后的指令看代码、给二进制 map 数据套上 C 结构体格式、按字段搜索键。本篇讲清三种安装方式的取舍、装完必做的 4 个设置,以及打开”写 map”开关前必须知道的安全事项。

软件信息一览

项目 说明
最新版本 v0.6.0(2026-10-21 发布,提供 linux-amd64 / linux-arm64 二进制)
适用平台 Linux
实现语言 Go(终端 TUI,英文界面)
许可证 据项目说明,仓库根目录暂未声明 LICENSE 文件,商用前请先核对仓库说明
运行权限 查看程序指令需要 root;普通用户可进界面但指令列为空

下载方式怎么选:Release 二进制 vs 源码编译

方式 适合谁 说明
Release 二进制(推荐) 只想用工具的人 v0.6.0 提供 linux-amd64 / linux-arm64 单文件,下载即用
go install 本机有 Go 环境的开发者 go install github.com/noboruma/ebpfexplorer@latest
源码编译 想改代码或跟 main 最新提交 go build -o ebpfexplorer .

推荐:Release 二进制。Go 静态编译的单文件、无运行时依赖,下载即用,升级时替换文件即可;本机有 Go 环境才考虑 go install;只有要改功能、跟 main 最新提交时才需要源码编译。

安装步骤(Release 二进制)

  1. 按架构下载:x86_64 取 amd64 包,aarch64 取 arm64 包;或一条命令自动判别:
    arch=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
    curl -fsSL -o ebpfexplorer "https://github.com/noboruma/ebpfexplorer/releases/latest/download/ebpfexplorer-linux-${arch}"
  2. 加执行权限:
    chmod +x ebpfexplorer

    (卡点:跳过这步直接运行会报 Permission denied)

  3. root 启动:
    sudo ./ebpfexplorer

    (卡点:读程序指令必须 root;普通用户启动能进界面,但指令列与源码列是空的,别误以为工具坏了)

验证:首屏程序列表出现本机已加载的 eBPF 程序(ID / Name / Type / Attached 列有内容)即安装成功。

装完先做这 4 件事

  1. 背下 5 个通用键:入口:任意界面通用。[↑/↓] 移动,[←/→] 横向滚动查看被截断的列(在左边缘再按 [←] 会返回上一级),[enter] 进入,[esc] 返回,[q] 退出。体感差别:全键盘操作,排查时不用在终端和鼠标之间来回切换。
  2. 给常用 map 定义显示格式:入口:条目界面按 [e]。按 map 实际的键/值大小写 C struct,例如 struct { ipv4 saddr; __be16 sport; __u8 proto; __u32 ifindex; };格式按 map 名保存在 /usr/local/bin/ebpfexplorer-formats.json,程序重载后自动复用。体感差别:十六进制天书变成 saddr=10.0.0.1 sport=443 这样的字段表。
  3. 想改 map 值先开写开关:入口:启动时加参数 sudo ./ebpfexplorer --allow-write。写入默认是关闭的;开启后在条目界面按 [w] 弹出逐字段编辑框,只写你改过的字段,写前二次确认。体感差别:生产机上多一道保险,手滑也写不坏内核数据。
  4. 学会看”验证器重写后”的指令:入口:程序列表选中程序按 [d]。代码页展示的是内核实际执行的指令(bpftool 风格 C 语法);用 clang -g 编译的程序,右侧还有 C 源码行对照,无需源码文件;在跳转或 bpf-to-bpf 调用上按 [enter] 可跳进目标。体感差别:排查”验证器改了我的代码”这类问题时,一眼看到改动点。

注意事项与 FAQ

  • 读指令必须 root:无 root 时指令列与源码列空白,这是权限问题,不是 bug。
  • 程序没用 clang -g 编译:源码对照列自然为空,只能看指令——这是正常的。
  • 写条目的红线:file descriptor 类的值(program array、map of maps、sockmap)写不了;键已不存在的条目不会被重新创建,删掉的写不回去。
  • 格式定义必须对上大小:struct 总字节数要等于 map 的键/值大小,对不上会保存失败并在状态行提示,按 map 名重存一份即可。

适合谁、和 bpftool 怎么选

适合:写 XDP / TC / kprobe 程序的内核开发者、线上排查 eBPF 行为的运维、学 eBPF 想”看见”内核里有什么的人。

不适合:要图形界面、跨机器采集、长期监控告警的人——据项目说明,这些能力 README 没有提及,选型前建议先看源码确认。

横向对比:bpftool 是”一次查一项”的命令行,适合写脚本;ebpfexplorer 是”一条链浏览”的交互界面,适合人肉排查;BCC / bpftrace 是写探针采集数据,与它是互补关系而非替代关系。

一句话取舍:临时看本机 eBPF 全貌 → 用 ebpfexplorer;要编排采集、做监控告警 → 另选 bpftool 脚本或可观测性方案。

开源地址

前往 GitHub 仓库

GitHub 国内访问较慢,如打不开可多刷新几次

版本对比与推荐

推荐结论:只想用工具的人直接选 Release 二进制 v0.6.0;本机有 Go 环境才考虑 go install;只有要改功能、跟最新提交时才需要源码编译。

版本来源 适合场景 稳定性 推荐结论
Release 二进制 v0.6.0 只想用工具的人 稳定版,单文件无运行时依赖 推荐:下载即用,升级替换文件即可
go install 最新版 本机有 Go 环境的开发者 跟随最新发布,版本以仓库为准 可用:适合已有 Go 工具链的人
源码编译 main 分支 想改代码或跟最新提交 开发版,未必经过发布验证 不推荐日常排查使用

补充设置与排错指南

补充设置:格式文件、写开关与浏览习惯

第一,常用 map 的显示格式定义一次、长期复用:格式按 map 名保存,重载后自动复用,不用每次现写。第二,写开关默认关闭是对的:只在确实要改 map 值的当次启动时加参数开启,用完即关,不要把它写进日常启动命令。第三,排查时先用字段搜索定位键,再展开条目看详情,比逐页翻列表快得多。

常见问题补充

第一,非 root 启动时指令列与源码列空白:这是权限问题,不是工具故障,读程序指令必须用 root 启动。第二,没有用 clang -g 编译的程序:源码对照列自然为空,只能看指令,这是正常的。第三,格式定义保存失败:先核对结构体总字节数是否等于 map 的键或值大小,对不上会保存失败并在状态行提示,按 map 名重存一份即可。

报错排错

第一,运行报 Permission denied:先补 chmod +x 加执行权限,跳过这步直接运行就会报这个错。第二,进界面但程序列表为空:先确认是否用 sudo 启动,再确认本机确实已加载 eBPF 程序。第三,写条目被拒绝:先确认是否加了写开关参数,再确认目标值是不是 file descriptor 类的值,这类值写不了,键已不存在的条目也不会被重新创建。

推广ebpfexplorer v0.6.0 免费下载

关注「软件教程管家」

回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。

版权与使用提示

本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›

上次编辑至今:10小时 · 内容还比较新鲜

公告

契机库网站正式上线!

了解更多
正文完
 0
评论(没有评论)