首页 > 系统相关 >【linux内核】 BCC Tools命令汇总

【linux内核】 BCC Tools命令汇总

时间:2024-11-08 19:19:58浏览次数:4  
标签:775 kernel x86 BPF hce2 BCC 64 linux Tools

什么是BCC Tools

直接通过BPF指令编写BPF 程序是非常繁琐的事情,尤其对于运维人员来说,花70%的时间来编写一个BPF程序来实现一个检查点,不如花70%的时间来熟悉别人已经写好的BPF程序,并且把别人的BPF程序有效的串联起来形成自己分析问题的套路,等有了闲暇时间再去尝试突破自己,写一些现有BPF程序满足不了的额外需求。

因此针对BPF程序,提供了两种支持支持高级编程语言的BPF前端,在跟踪用途方面,主要为BCC和ftrace。

BCC(BPF 编译器集合,BPF Compiler Collection)是最早用于开发 BPF 跟踪程序的高级框架。它提供了一个编写内核 BPF 程序的C语言环境,同时还提供了其他高级语言(如Python、Lua和C++)环境来实现用户端接口。它也是

libbcc和libbpf库'的前身,这两个库提供了使用BPF 程序对事件进行观测的库函数。

当前版本的BCC Tool中提供了120多个BPF工具命令,可以用来支持性能分析和排障工作。

BCC的github地址:

https://github.com/iovisor/bcc/tree/master/tools  

BCC Tools安装

在配置yum源的情况下,安装非常简单。

[root@server02 ~]# yum -y install bcc-tools
......
Installing:
 bcc-tools                                                      x86_64                                      0.23.0-1.r2.hce2                                                        updates                                      454 k
......                                                                                                                                                       12/12 

Installed:
  bcc-0.23.0-1.r2.hce2.x86_64                bcc-tools-0.23.0-1.r2.hce2.x86_64        clang-12.0.1-1.r3.hce2.x86_64                          clang-resource-filesystem-12.0.1-1.r3.hce2.x86_64   compiler-rt-12.0.1-1.hce2.x86_64   
  emacs-filesystem-1:27.2-3.r7.hce2.noarch   gcc-c++-10.3.1-10.r18.hce2.x86_64        kernel-devel-5.10.0-182.0.0.95.r1941_123.hce2.x86_64   libstdc++-devel-10.3.1-10.r18.hce2.x86_64           llvm-libs-12.0.1-2.r1.hce2.x86_64  
  python3-bpfcc-0.23.0-1.r2.hce2.noarch      python3-netaddr-0.8.0-3.r1.hce2.noarch  

Complete!

[root@server02 ~]# rpm -qa | grep bcc-tool
bcc-tools-0.23.0-1.r2.hce2.x86_64

安装问题解决

使用BCC工具报错

顺利完成BCC-tool工具安装后,执行命令报错,如下

[root@server02 ~]# /usr/share/bcc/tools/execsnoop
modprobe: FATAL: Module kheaders not found in directory /lib/modules/5.10.0-60.18.0.50.r1083_58.hce2.x86_64
Unable to find kernel headers. Try rebuilding kernel with CONFIG_IKHEADERS=m (module) or installing the kernel development package for your running kernel version.
chdir(/lib/modules/5.10.0-60.18.0.50.r1083_58.hce2.x86_64/build): No such file or directory
Traceback (most recent call last):
  File "/usr/share/bcc/tools/execsnoop", line 227, in <module>
    b = BPF(text=bpf_text)
  File "/usr/lib/python3.9/site-packages/bpfcc/__init__.py", line 479, in __init__
    raise Exception("Failed to compile BPF module %s" % (src_file or "<text>"))
Exception: Failed to compile BPF module <text>

经过对报错内容进行排查确认,此类报错一般就是需要更新内核模块

内核升级

根据报错提示内容“ kheaders not found in directory”,先安装kernel header (yum -y install kernel-headers),其次安装kernel-devel安装包(yum -y install kernel-devel-$(uname -r))。

[root@server02 ~]# yum -y install kernel-headers
Last metadata expiration check: 0:51:49 ago on Mon 15 Jul 2024 03:42:51 PM CST.
Package kernel-headers-5.10.0-182.0.0.95.r1941_123.hce2.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@server02 ~]# yum -y install kernel-devel-$(uname -r)
......
Total download size: 17 M
Downloading Packages:
kernel-devel-5.10.0-60.18.0.50.r1083_58.hce2.x86_64.rpm  
Installed:
    kernel-devel-5.10.0-60.18.0.50.r1083_58

Complete!

使用验证

[root@server02 ~]# /usr/share/bcc/tools/opensnoop
PID    COMM               FD ERR PATH
775    hostwatch           5   0 /proc/775/stat
775    hostwatch           5   0 /proc/804/stat
775    hostwatch           5   0 /usr/local/hostguard/run/heartbeat.tick
775    hostwatch           5   0 /proc/1659/stat
775    hostwatch           5   0 /sys/devices/system/cpu/online
775    hostwatch           5   0 /usr/local/hostguard/run/restart.conf
775    hostwatch           5   0 /proc/meminfo
670    irqbalance          7   0 /proc/irq/affinity_hint_notify
670    irqbalance          7   0 /proc/irq/affinity_hint_notify
775    hostwatch           5   0 /proc/775/stat
775    hostwatch           5   0 /proc/804/stat
775    hostwatch           5   0 /usr/local/hostguard/run/heartbeat.tick
775    hostwatch           5   0 /proc/1659/stat
775    hostwatch           5   0 /sys/devices/system/cpu/online
775    hostwatch           5   0 /usr/local/hostguard/run/restart.conf
775    hostwatch           5   0 /proc/meminfo

BCC命令汇总

bcc tools中,总计有124个命令,涉及到十个方面。


经过分类,大致命令和对应的作用关系如下,后续等有时间,针对其中有价值的几个再重点分析一下。

如果有兴趣,所有命令的注解都可以自行在/usr/share/bcc/tools/doc下面找到对应的example.txt










原创 KennyQiu 运维成长手记

标签:775,kernel,x86,BPF,hce2,BCC,64,linux,Tools
From: https://www.cnblogs.com/o-O-oO/p/18535748

相关文章

  • Linux上的各种查询
    在Linux中,有许多命令可以用于查询系统信息、文件和进程等。以下是一些常用的查询命令及其简要介绍:ls:用途:列出目录中的文件和子目录。示例:ls-l(以详细格式显示)或ls-a(包括隐藏文件)。pwd:用途:显示当前工作目录的完整路径。示例:只需输入pwd。cd:用途:更改当前工作目......
  • 第二周学习笔记Linux:Linux用户权限管理 |文本处理|shell基础
    用户权限命令以及ACL权限相关命令1.Linux安全模型资源分派:Authenticaton:登陆认证,验证用户身份Authorization:授权,不同的用户设置不同权限Accouting:审计,检查用户的时候行为即Linux的AAA认证,是针对网络设备的网络访问控制策略和安全模型1用户Linux是多系统用户,可以......
  • linux文件的时间
    在类Unix系统中,文件的时间戳有几个不同的类别,每个时间戳代表了文件生命周期中的不同事件。"modify时间"(mtime)实际上是其中之一,下面是对常见时间戳的详细区分和解释:1. 修改时间(mtime -ModifyTime)定义:mtime 是文件内容最后一次被修改的时间。更新:当文件的内容发生改变......
  • 【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设
    【Linux】获得同一子网下当前在线设备IP/Latency/MAC通过nmap指定CIDR扫描当前在线设备通过路由器的后台,查看当前在线设备,受到网卡版本的影响,有时会有部分设备看不见MAC和分配的IP。此时,可以借助命令行工具扫描子网下所有连接的设备信息与通信状态。Nmap是一个强大的网......
  • 【Linux】为终端命令自定义快件键并弹窗提醒 设置快捷键切换网络代理(Network Proxy)Dis
    【Linux】为终端命令自定义快件键并弹窗提醒设置快捷键切换网络代理(NetworkProxy)Disabled/Manual并弹窗提醒可以自定义快捷键执行终端命令,执行完毕会有弹窗提醒。下面给一个例子,设置快捷键切换网络代理(NetworkProxy)Disabled/Manual并弹窗提醒。适用于Ubuntu系统,为......
  • Linux 终端控件:实时时刻表
    为了看几点才能讨论所以设计的,因此这里面有一个自带的机房时间表,你直接跑就行写得很naive,因为没找到Linux有啥API接口因此你需要在终端里跑如果用Vscode推荐分一个终端挂着否则可以单开一个终端然后置顶终端各种部件和时刻详细信息都提供了快捷修改接口,设置项全都放在......
  • 云服务器Linux部署war、jar包,并在nginx配置域名
    一,打包Jar包        一个Springboot项目默认打包jar包,无需修改配置,点击右侧Maven-Lifecycle-package打包即可注意:需要先检查pom.xml文件,可能此时打包完的jar包会出现        nomainmanifestattribute,intest-0.0.1-SNAPSHOT.jar        xx......
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-tools使用(五)
    一、前言  GLM-4是智谱AI团队于2024年1月16日发布的基座大模型,旨在自动理解和规划用户的复杂指令,并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等,支持128K的上下文窗口,使其在长文本处理和精度召回方面表现优异,且在中文对齐能力上超过GPT-4。与之前的GLM系列......
  • 【linux】Linux虚拟网络中的网络接口介绍
    原创信息技术圈IntroductiontoLinuxinterfacesforvirtualnetworkingLinux拥有丰富的虚拟网络功能,这些功能为托管虚拟机、容器以及云环境提供了基础。在这篇文章中,我将简要介绍所有常用虚拟网络接口类型。本文不涉及代码分析,仅对Linux上的接口及其使用进行简要介绍。......
  • linux新增物理卷,扩容逻辑分区,出现WARNING: xfs signature detected on /dev/vdb at of
    linux新增物理卷出现WARNING:xfssignaturedetectedon/dev/vdbatoffset0.Wipeit?[y/n]:标识这个/dev/vdb磁盘已经从0位置被标记为xfs类型的文件系统报错解释:这条信息表示在设备/dev/vdb上检测到了XFS文件系统的签名。通常情况下,这可能意味着分区/dev/vdb已被......