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
追踪点查询
# 查询所有内核插桩和跟踪点
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
其它方式:
- 查询 /sys/kernel/debug 路径
没有该路径,需要挂载sudo mount -t debugfs debugfs /sys/kernel/debug
- 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
网友评论