先判断这门课值不值得碰

这份资料讲的是 eBPF 在运维开发场景下的具体用法,不是科普概念,也不是带你过一遍命令行工具。它解决的是一类很实际的问题:当你面对一个跑着大量容器和 Go 服务的生产环境,常规监控拿不到底层数据,或者你想用内核态手段做 socket 级别的拦截和转发时,该怎么写代码、怎么定位问题。课程的核心场景集中在两块,一是抓取程序内存和 Go 协程信息,二是对 socket 做监听、过滤和转发加速。如果你平时的工作只是用现成的监控平台看看图表,不碰底层,这门课暂时不需要买。如果你要自己写探针、做性能分析或者网络优化,那它讲的恰好是中间这一层技术细节。

适合什么基础以及建议先看哪几块

资料里明确说了不适合新手,这点需要认真对待。它默认你已经懂 Linux 内核的基本概念,写过 Go 代码,并且对网络协议栈不陌生。如果你连系统调用和内核钩子的关系都还没理清,直接看会卡在前面。建议有一定基础的人先从内存获取和 Go 协程 ID 那几讲入手,这部分代码量不大,能帮你确认自己能不能跟上后面的节奏。接着重点看 socket 监听系列,从监听本地到过滤指定容器,再到把信息存进 map,这条线是整门课的主干,也是运维场景里用得最多的。最后再看转发加速那几讲,那部分逻辑比较绕,涉及 sk_msg 和数据流向,放后面啃更合适。

学完能独立做什么以及资料怎么配合练习

把这套资料跟着走完,你应该能独立写出几个东西:一个能抓取指定进程内存数据的探针,一个能拿到 Go 程序协程 ID 的工具,以及一套针对特定容器 socket 流量的监听和简单转发逻辑。这些不是大而全的平台,而是能直接嵌进你现有运维链路里的小工具。练习的时候不要只看视频,每一讲提到的代码结构自己要敲一遍,尤其是 map 的读写和 hook 点的挂载逻辑,光看不写很容易漏掉细节。socket 那几讲最好配一个本地容器环境,起一个简单的 Go 服务当靶子,边监听边改过滤条件,看数据是不是你预期的。转发加速的部分验证起来麻烦一些,先在本地回环上跑通基本逻辑,再考虑往真实流量上靠。整套资料的价值在于它把内核态和用户态的代码怎么配合讲得比较细,但这只有你自己动手跑过才会变成实际能用的东西。


eBPF开发系列(工具使用教程没兴趣开)我们将不断深入、不断开新课程。前面讲了一坨基础课和网络篇,还没完结。这回同步开一个运维工具篇。本课程不适合新手,前置课程

课程目录

*   第1讲:开张课、课程内容、前置知识点

*   第2讲:获取程序内存(1) 基本代码结构、基本原理

*   第3讲:如何获取golang的协程ID(纯GO和eBPF两种方案)

*   第4讲:独立课时:eBPF对socket的监听和分析(1)

*   第5讲:eBPF监听socket(2)监听指定容器的socket

*   第6讲:eBPF监听socket(3)理解操作类型、获取socket请求IP和端口

*   第7讲:eBPF监听socket(4) 保存socket信息到map中

*   第8讲:再说socket网络加速的原理和过程、sk_msg初始化

*   第9讲:初步实现socket转发以实现网络加速

*   第10讲:简单验证socket转发后的网络加速

*   第11讲:使用bpf_redirect转发加速网络(1):基本过程原理

*   第12讲:使用bpf转发加速网络(2): 演示课:跨节点容器转发方案的基本实现原理

*   第13讲:eBPF分析http包(1) 基本解析手法

*   第14讲:eBPF分析http包(2) 在内核态直接区分http请求和响应