更新时间:2025-06-09 17:12:35
封面
版权信息
内容简介
前言
第1章 eBPF的发展与应用
1.1 eBPF概述
1.1.1 Linux的跟踪与诊断技术简介
1.1.2 eBPF的发展史
1.1.3 eBPF与cBPF的功能区别
1.1.4 eBPF与内核模块
1.1.5 eBPF的优势与劣势
1.2 eBPF应用场景
1.2.1 eBPF跟踪与性能分析
1.2.2 eBPF与可观测
1.2.3 eBPF与网络
1.2.4 eBPF与安全
1.3 eBPF基础架构
1.3.1 eBPF加载流程和相关组件
1.3.2 eBPF的JIT编译原理
1.3.3 eBPF的挂载与执行
1.4 本章小结
第2章 eBPF的特性解析
2.1 eBPF指令架构
2.1.1 cBPF指令集
2.1.2 eBPF指令集
2.1.3 使用C语言编写eBPF程序
2.1.4 使用汇编语言编写eBPF程序
2.1.5 使用字节码编写eBPF程序
2.2 eBPF系统调用
2.2.1 eBPF系统调用的函数原型
2.2.2 eBPF系统调用的类型
2.2.3 eBPF系统调用的数据结构解析
2.3 eBPF辅助函数
2.3.1 eBPF辅助函数的设计
2.3.2 eBPF辅助函数的实现
2.4 eBPF程序类型设计
2.4.1 eBPF程序类型
2.4.2 验证器接口设计
2.4.3 测试接口设计
2.4.4 卸载接口设计
2.5 跟踪诊断类eBPF程序
2.5.1 kprobe/kretprobe类程序
2.5.2 uprobe/uretprobe类程序
2.5.3 tracepoint类程序
2.5.4 perf事件类程序
2.6 网络处理类:XDP程序
2.6.1 XDP基本原理
2.6.2 XDP应用场景
2.6.3 XDP内核解析
2.7 本章小结
第3章 eBPF开发框架
3.1 libbpf
3.1.1 使用libbpf开发eBPF程序
3.1.2 BPF类型格式
3.1.3 CO-RE功能
3.2 BCC
3.2.1 环境配置
3.2.2 使用BCC开发eBPF程序
3.2.3 编译运行
3.3 bpftrace
3.3.1 环境配置
3.3.2 使用bpftrace开发eBPF程序
3.3.3 编译运行
3.4 eunomia-bpf
3.4.1 环境配置
3.4.2 使用eunomia-bpf开发eBPF程序
3.4.3 编译运行
3.5 Coolbpf
3.5.1 环境配置
3.5.2 使用Coolbpf开发eBPF程序
3.5.3 编译运行
3.6 eBPF开发框架对比
3.7 本章小结
第4章 基于eBPF的应用可观测实践
4.1 使用uprobe/USDT观测应用程序
4.1.1 uprobe:用户空间的动态追踪工具
4.1.2 USDT:用户空间的静态追踪点技术
4.2 Nginx函数延迟观测与性能分析
4.2.1 基于eBPF分析函数延迟
4.2.2 Nginx中与性能相关的关键函数
4.2.3 测试Nginx的函数延迟
4.3 Java应用的GC观测
4.3.1 GC策略简介与问题排查示例
4.3.2 通过eBPF实现GC观测
4.4 MySQL慢查询监测与排障实践
4.4.1 慢查询的常见原因
4.4.2 慢查询监测方法与示例场景
4.4.3 利用bpftrace程序追踪MySQL查询
4.5 观测SSL/TLS明文数据
4.5.1 TLS的工作原理
4.5.2 OpenSSL API工作机制分析
4.5.3 sslsniff的eBPF内核代码编写
4.5.4 sslsniff的用户态代码分析
4.5.5 编译与运行sslsniff工具
4.6 使用eBPF跟踪Go协程状态
4.6.1 跟踪Go协程状态的eBPF内核代码
4.6.2 运行eBPF程序追踪Go协程状态
4.7 本章小结
第5章 基于eBPF的网络可观测实践
5.1 内核网络协议栈