BCC 工具集总览

BCC 提供一组开箱即用的 eBPF 工具, 覆盖进程、文件系统、块层、网络与调度观测。

工具集总览

这是一组开箱即用的 eBPF 观测工具,覆盖进程、文件系统、块层、网络与调度等方向。它们把常见观测任务封装成命令行程序:谁启动了新进程、块设备延迟分布如何、哪条连接在重传、运行队列等待多久。相比自己写脚本,这些工具的参数与输出格式已经过打磨,适合作为排查的第一批手段。

基本信息

适用平台Linux,需要内核 eBPF 支持
工具位置系统工具目录,路径随发行版不同
命名习惯发行版常在工具名后加统一后缀
权限要求运行需要较高权限
使用方式不带参数运行通常能看到用法提示

典型使用场景

  • 排查一闪而过的进程:谁在反复拉起子进程。
  • 存储侧问题定性:块层延迟是整体抬高还是长尾。
  • 文件系统卡顿点名:哪些操作超过了阈值。
  • 调度压力确认:任务在队列里等了多久。
  • 网络异常定位:哪条连接在重传、哪些连接异常终止。

浏览工具

浏览工具
ls /usr/share/bcc/tools | head -40            # 列出可用工具
ls /usr/share/bpfcc/tools 2>/dev/null | head   # 发行版后缀不同时的备用路径
execsnoop-bpfcc -t                             # 带时间戳观察新进程
execsnoop-bpfcc                                # 不带参数也能看到用法
biolatency-bpfcc 10 1                          # 块层延迟分布,10 秒窗口每秒刷新
biolatency-bpfcc -h                            # 查看全部参数

常用工具与用途

工具方向观测内容输出形态
进程启动新进程与其父进程逐条事件
块层延迟IO 完成延迟分布直方图
逐条 IO单次 IO 的进程与延迟逐条明细
文件操作超过阈值的慢操作逐条明细
调度等待可运行到获得处理器的时间直方图
先运行不带参数的工具看用法提示,比翻文档快;工具名与包名随发行版不同,自动化脚本里硬编码路径容易在换机器后失败。
旧内核可能缺少新工具依赖的特性,运行会直接失败或采集不到数据;使用前先确认内核版本与工具要求是否匹配,避免在生产环境反复试错。

易错点

  • 工具名与包名随发行版不同,脚本里硬编码路径在换机器后失败。
  • 在旧内核上运行依赖新特性的工具,采集为空却以为系统没有问题。
  • 不先看用法提示就凭猜测传参,参数含义理解错误导致结论偏差。
  • 把逐条明细工具用在高负载环境,输出量失控拖慢排查。
  • 长期挂着观测工具不退出,额外开销持续影响生产系统。

数据来源与参考

  • BCC 项目文档(iovisor/bcc)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌