eBPF入門筆記:通過bpftrace追蹤內(nèi)核

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

追蹤點查詢

# 查詢所有內(nèi)核插樁和跟蹤點
sudo bpftrace -l

# 使用通配符查詢所有的系統(tǒng)調(diào)用跟蹤點
sudo bpftrace -l 'tracepoint:syscalls:*'

# 使用通配符查詢所有名字包含"execve"的跟蹤點
sudo bpftrace -l '*execve*'

# -v查看詳細參數(shù)
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

追蹤

單行執(zhí)行

追蹤execve 函數(shù),輸出 pid與父程序以及參數(shù):

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

執(zhí)行bpftrace oomkill 追蹤工具

執(zhí)行 tail /dev/zero 觸發(fā)oom (謹慎操作,先關(guān)閉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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容