美文网首页
eBPF入门笔记:通过bpftrace追踪内核

eBPF入门笔记:通过bpftrace追踪内核

作者: Gasxia | 来源:发表于2022-11-29 23:16 被阅读0次

    bpftrace安装

    官方Install指南
    centos repo

    curl https://repos.baslab.org/rhel/7/bpftools/bpftools.repo --output /etc/yum.repos.d/bpftools.repo
    yum install bpftrace bpftrace-tools bpftrace-doc bcc-static bcc-tools
    

    追踪点查询

    # 查询所有内核插桩和跟踪点
    sudo bpftrace -l
    
    # 使用通配符查询所有的系统调用跟踪点
    sudo bpftrace -l 'tracepoint:syscalls:*'
    
    # 使用通配符查询所有名字包含"execve"的跟踪点
    sudo bpftrace -l '*execve*'
    
    # -v查看详细参数
    bpftrace -lv "tracepoint:syscalls:sys_enter_init_module"
    tracepoint:syscalls:sys_enter_init_module
        int __syscall_nr
        void * umod
        unsigned long len
        const char * uargs
    

    其它方式:

    1. 查询 /sys/kernel/debug 路径
      没有该路径,需要挂载 sudo mount -t debugfs debugfs /sys/kernel/debug
    2. perf list

    追踪

    单行执行

    追踪execve 函数,输出 pid与父程序以及参数:

    bpftrace -e 'tracepoint:syscalls:sys_enter_execve,tracepoint:syscalls:sys_enter_execveat { printf("%-6d %-8s", pid, comm); join(args->argv);}'
    Attaching 2 probes...
    180144 bash    groups
    180145 bash    /usr/bin/locale-check C.UTF-8
    180146 bash    locale
    180148 bash    whoami
    180150 bash    grep -q history -a
    

    tools

    https://github.com/iovisor/bpftrace#tools

    执行bpftrace oomkill 追踪工具

    执行 tail /dev/zero 触发oom (谨慎操作,先关闭swap swapoff -a

    看到OOMKill输出:

    # ./oom_kill.bt
    Attaching 1 probe...
    23:04:36 Triggered by PID 180101 ("tail"), OOM kill of PID 180101 ("tail"), 8218767 pages, loadavg: 0.40 0.14 0.05 2/494 180103
    

    相关文章

      网友评论

          本文标题:eBPF入门笔记:通过bpftrace追踪内核

          本文链接:https://www.haomeiwen.com/subject/fikjfdtx.html