EBPF 可观测性系列

6 篇文章
1
eBPF 可观测性入门:从 OOM Killer 监控开始
· 7 分钟阅读

eBPF(Extended Berkeley Packet Filter)最初是网络包过滤工具,经过近十年发展,已经成为 Linux 内核最强大的可观测性框架。它允许你在不修改内核源码、不加载内核模块的前提下,安全地注入并执行自定义程序。

2
用 eBPF + Go 构建 OOM Killer 事件追踪器
· 4 分钟阅读

bpftrace 适合快速探查和临时调试,但如果要构建持续运行的生产级监控工具,就需要完整的 eBPF 程序了。典型的架构分两层:

  • 内核态:用 C 编写 eBPF 程序,挂载到 hook 点,采集事件数据
  • 用户态:用 Go(或 Rust / libbpf C)编写 loader,加载 eBPF 程序并读取事件

这个模式在行业里已经非常成熟——Pixie、Parca、Cilium 等开源项目都遵循这个架构。

3
eBPF 内存可观测性进阶:容器追踪与 Rust Aya 实践
· 6 分钟阅读

前两篇文章覆盖了 eBPF 基础概念和 OOM Killer 事件追踪。这篇文章进入更深的层次:容器级别的 OOM 定位、内存分配速率的实时追踪,以及用 Rust Aya 框架来实现同样的功能。

容器级 OOM 定位

在 Kubernetes 环境中,“某个 Pod OOM 了"实际上是一个模糊的描述。Pod 由多个容器组成,容器可能属于不同的 cgroup。eBPF 可以穿透这一层,精确地定位到"是哪个容器里的哪个进程"导致了 OOM。

4
BPF OOM 内核补丁深度解析:用 eBPF 自定义 OOM 策略
· 6 分钟阅读

前几篇文章展示了如何使用 eBPF 追踪 OOM 事件。但这还不够——我们只是在"看",不能"管"。内核的 OOM Killer 选谁杀谁,由 oom_badness() 算法决定,用户无法干预。

6
eBPF系列之:Pixie浅剖析
· 2 分钟阅读

部署过程和指令参考:pixie install

Pixie平台主要由以下组件组成:

  • Pixie Edge Module 边缘模块(PEM): Pixie’s agent, installed per node. PEMs use eBPF to collect data, which is stored locally on the node. Pixie的代理,安装在每个节点上。PEM使用eBPF收集数据,这些数据存储在节点本地。