bpftrace安裝
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查看詳細(xì)參數(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
其它方式:
- 查詢 /sys/kernel/debug 路徑
沒有該路徑吹埠,需要掛載sudo mount -t debugfs debugfs /sys/kernel/debug
- 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 (謹(jǐn)慎操作祭钉,先關(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