很多东西的学习都开始于一个’hello world’, ebpf也不例外。
实验环境: ubuntu 20.04
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_BPF_EVENTS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENTS=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_UPROBES=y
CONFIG_UPROBE_EVENTS=y
CONFIG_DEBUG_FS=y
sudo apt-get install -y bpftrace
# bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("hello ebpf %s %s\n", comm, str(args->filename)); }'
Attaching 1 probe...
hello ebpf code /etc/hosts
hello ebpf feishu /proc/self/status
hello ebpf DetectThread /proc/stat
hello ebpf DetectThread /proc/self/status
hello ebpf code /etc/hosts
docker image
为了简化环境安装,可以将常用ebpf工具制作成镜像.
具体制作脚本我已做好,可以下载使用:
https://github.com/happyAnger66/perf
本篇内容通过一个hello ebpf
的bpftrace命令跟踪进程打开文件的例子,展示了ebpf的强大功能。
最后分享了一个将ebpf工具打包成docker image的例子.
下一篇将介绍一下ebpf的发展历史和基本原理.