mirror of
https://github.com/eunomia-bpf/bpf-developer-tutorial.git
synced 2026-02-04 02:34:16 +08:00
2.8 KiB
2.8 KiB
Summary
eBPF 实践教程:基于 libbpf 和 CO-RE
- 介绍 eBPF 的基本概念、常见的开发工具
- eBPF Hello World,基本框架和开发流程
- 使用 kprobe 监测捕获 unlink 系统调用
- 使用 fentry 监测捕获 unlink 系统调用
- 捕获进程打开文件的系统调用集合,使用全局变量过滤进程 pid
- 使用 uprobe 捕获 bash 的 readline 函数调用
- 捕获进程发送信号的系统调用集合,使用 hash map 保存状态
- 捕获进程执行/退出时间,通过 perf event array 向用户态打印输出
- 使用 exitsnoop 监控进程退出事件,使用 ring buffer 向用户态打印输出
- 一个 Linux 内核 BPF 程序,通过柱状图来总结调度程序运行队列延迟,显示任务等待运行在 CPU 上的时间长度
- 使用 hardirqs 或 softirqs 捕获中断事件
- 使用 bootstrap 开发用户态程序并跟踪 exec() 和 exit() 系统调用
- 使用 libbpf-bootstrap 开发程序统计 TCP 连接延时
- 使用 libbpf-bootstrap 记录 TCP 连接状态与 TCP RTT
- 使用 USDT 捕获用户态 Java GC 事件耗时
- 编写 eBPF 程序 Memleak 监控内存泄漏
- 编写 eBPF 程序 Biopattern 统计随机/顺序磁盘 I/O
- 更多的参考资料
- 使用 LSM 进行安全检测防御
- 使用 eBPF 进行 tc 流量控制
eBPF 高级特性与进阶主题
- 在 Android 上使用 eBPF 程序
- 使用 eBPF 追踪 HTTP 请求或其他七层协议
- 使用 sockops 加速网络请求转发
- 使用 eBPF 隐藏进程或文件信息
- 使用 bpf_send_signal 发送信号终止进程
- 使用 eBPF 添加 sudo 用户
- 使用 eBPF 替换任意程序读取或写入的文本
- BPF的生命周期:使用 Detached 模式在用户态应用退出后持续运行 eBPF 程序