<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>EBPF 可观测性系列 on Mi&amp;Bee Blog</title><link>/series/ebpf-%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7%E7%B3%BB%E5%88%97/</link><description>Recent content in EBPF 可观测性系列 on Mi&amp;Bee Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>蓝宝石的傻话</managingEditor><lastBuildDate>Sat, 13 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="/series/ebpf-%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7%E7%B3%BB%E5%88%97/rss.xml" rel="self" type="application/rss+xml"/><item><title>eBPF 可观测性入门：从 OOM Killer 监控开始</title><link>/posts/telemetry/ebpf-oom-intro/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>/posts/telemetry/ebpf-oom-intro/</guid><description>&lt;p&gt;eBPF（Extended Berkeley Packet Filter）最初是网络包过滤工具，经过近十年发展，已经成为 Linux 内核最强大的可观测性框架。它允许你在不修改内核源码、不加载内核模块的前提下，安全地注入并执行自定义程序。&lt;/p&gt;</description></item><item><title>用 eBPF + Go 构建 OOM Killer 事件追踪器</title><link>/posts/telemetry/ebpf-oom-tracer-cgo/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>/posts/telemetry/ebpf-oom-tracer-cgo/</guid><description>&lt;p&gt;bpftrace 适合快速探查和临时调试，但如果要构建持续运行的生产级监控工具，就需要完整的 eBPF 程序了。典型的架构分两层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内核态&lt;/strong&gt;：用 C 编写 eBPF 程序，挂载到 hook 点，采集事件数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户态&lt;/strong&gt;：用 Go（或 Rust / libbpf C）编写 loader，加载 eBPF 程序并读取事件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个模式在行业里已经非常成熟——Pixie、Parca、Cilium 等开源项目都遵循这个架构。&lt;/p&gt;</description></item><item><title>eBPF 内存可观测性进阶：容器追踪与 Rust Aya 实践</title><link>/posts/telemetry/ebpf-oom-advance/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>/posts/telemetry/ebpf-oom-advance/</guid><description>&lt;p&gt;前两篇文章覆盖了 eBPF 基础概念和 OOM Killer 事件追踪。这篇文章进入更深的层次：容器级别的 OOM 定位、内存分配速率的实时追踪，以及用 Rust Aya 框架来实现同样的功能。&lt;/p&gt;
&lt;h2 id="容器级-oom-定位"&gt;容器级 OOM 定位&lt;/h2&gt;
&lt;p&gt;在 Kubernetes 环境中，&amp;ldquo;某个 Pod OOM 了&amp;quot;实际上是一个模糊的描述。Pod 由多个容器组成，容器可能属于不同的 cgroup。eBPF 可以穿透这一层，精确地定位到&amp;quot;是哪个容器里的哪个进程&amp;quot;导致了 OOM。&lt;/p&gt;</description></item><item><title>BPF OOM 内核补丁深度解析：用 eBPF 自定义 OOM 策略</title><link>/posts/telemetry/ebpf-oom-bpf-patches/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid>/posts/telemetry/ebpf-oom-bpf-patches/</guid><description>&lt;p&gt;前几篇文章展示了如何使用 eBPF 追踪 OOM 事件。但这还不够——我们只是在&amp;quot;看&amp;quot;，不能&amp;quot;管&amp;quot;。内核的 OOM Killer 选谁杀谁，由 &lt;code&gt;oom_badness()&lt;/code&gt; 算法决定，用户无法干预。&lt;/p&gt;</description></item><item><title>eBPF系列之：DeepFlow 扩展协议解析实践（MongoDB协议与Kafka协议）</title><link>/posts/telemetry/deepflow-agent-proto-dev/</link><pubDate>Sat, 25 Nov 2023 00:00:00 +0000</pubDate><guid>/posts/telemetry/deepflow-agent-proto-dev/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e6%a6%82%e8%bf%b0"&gt;概述：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%a6%82%e4%bd%95%e5%88%86%e6%9e%90%e4%b8%80%e4%b8%aa%e5%8d%8f%e8%ae%aemongodb"&gt;如何分析一个协议(MongoDB)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%8d%8f%e8%ae%ae%e6%96%87%e6%a1%a3%e7%9a%84%e5%88%86%e6%9e%90%e6%80%9d%e8%b7%af"&gt;协议文档的分析思路&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#mongodb%e5%8d%8f%e8%ae%ae%e6%93%8d%e4%bd%9c%e7%a0%81%e8%af%b4%e6%98%8e%e8%a1%a8"&gt;MongoDB协议操作码说明表&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%af%b9%e6%9c%80%e5%b8%b8%e8%a7%81%e7%9a%84%e6%93%8d%e4%bd%9c%e7%a0%81op_msg%e5%88%86%e6%9e%90"&gt;对最常见的操作码&lt;code&gt;OP_MSG&lt;/code&gt;分析&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%9c%a8deepflow-agent%e6%89%a9%e5%b1%95%e4%b8%80%e4%b8%aa%e5%8d%8f%e8%ae%ae%e8%a7%a3%e6%9e%90%e9%87%87%e9%9b%86"&gt;在&lt;code&gt;DeepFlow Agent&lt;/code&gt;扩展一个协议解析采集&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#deepflow-agent%e7%9a%84%e5%bc%80%e5%8f%91%e6%96%87%e6%a1%a3%e6%a6%82%e8%a6%81"&gt;&lt;code&gt;DeepFlow Agent&lt;/code&gt;的开发文档概要&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e4%bb%a3%e7%a0%81%e6%8c%87%e5%bc%95"&gt;代码指引&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%ae%9a%e4%b9%89%e4%b8%80%e4%b8%aa%e5%8d%8f%e8%ae%ae%e5%b9%b6%e7%94%a8%e4%b8%80%e4%b8%aa%e5%b8%b8%e9%87%8f%e6%a0%87%e8%af%86"&gt;定义一个协议，并用一个常量标识。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e4%b8%ba%e6%96%b0%e5%8d%8f%e8%ae%ae%e5%87%86%e5%a4%87%e8%a7%a3%e6%9e%90%e9%80%bb%e8%be%91"&gt;为新协议准备解析逻辑&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%ae%9a%e4%b9%89%e7%bb%93%e6%9e%84%e4%bd%93"&gt;定义结构体&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%ae%9e%e7%8e%b0l7protocolparserinterface"&gt;实现 &lt;code&gt;L7ProtocolParserInterface&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%88%a9%e7%94%a8wasm%e6%8f%92%e4%bb%b6%e6%89%a9%e5%b1%95deepflow%e7%9a%84%e5%8d%8f%e8%ae%ae%e9%87%87%e9%9b%86"&gt;利用&lt;code&gt;Wasm&lt;/code&gt;插件扩展&lt;code&gt;DeepFlow&lt;/code&gt;的协议采集&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#kafka%e5%8d%8f%e8%ae%ae%e5%88%86%e6%9e%90"&gt;&lt;code&gt;Kafka&lt;/code&gt;协议分析&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#kafka%e7%9a%84header%e5%92%8cdata%e6%a6%82%e8%a7%88"&gt;&lt;code&gt;Kafka&lt;/code&gt;的&lt;code&gt;Header&lt;/code&gt;和&lt;code&gt;Data&lt;/code&gt;概览&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#kafka%e7%9a%84fetch-api"&gt;Kafka的Fetch API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#kafka%e7%9a%84produce-api"&gt;Kafka的Produce API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#kafka%e5%8d%8f%e8%ae%aedeepflow-agent%e5%8e%9f%e7%94%9f%e8%a7%a3%e7%a0%81"&gt;Kafka协议DeepFlow Agent原生解码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#deepflow-agent%e7%9a%84-wasm-%e6%8f%92%e4%bb%b6"&gt;&lt;code&gt;DeepFlow Agent&lt;/code&gt;的 &lt;code&gt;Wasm&lt;/code&gt; 插件&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#wasm-go-sdk-%e7%9a%84%e6%a1%86%e6%9e%b6"&gt;Wasm Go SDK 的框架&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e6%8f%92%e4%bb%b6%e4%bb%a3%e7%a0%81%e6%8c%87%e5%bc%95"&gt;插件代码指引&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e7%bb%93%e8%af%ad"&gt;结语&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e5%8e%9f%e7%94%9frust%e6%89%a9%e5%b1%95"&gt;原生Rust扩展&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#wasm%e6%8f%92%e4%bb%b6%e6%89%a9%e5%b1%95"&gt;Wasm插件扩展&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/posts/telemetry/deepflow-agent-proto-dev/#%e9%99%84%e5%bd%95"&gt;附录&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position:relative; padding-bottom:75%; width:100%; height:0"&gt;
&lt;iframe src="//player.bilibili.com/player.html?isOutside=true&amp;aid=921401645&amp;bvid=BV1Nu4y1A7ZC&amp;cid=1345829549&amp;p=1&amp;autoplay=false" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position:absolute; height: 100%; width: 100%;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="概述"&gt;概述：&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;MongoDB&lt;/code&gt; 目前使用广泛，但是缺乏有效的可观测能力。
&lt;code&gt;DeepFlow&lt;/code&gt; 在可观测能力上是很优秀的解决方案，但是却缺少了对 &lt;code&gt;MongoDB&lt;/code&gt; 协议的支持。
该文是为 &lt;code&gt;DeepFlow&lt;/code&gt; 扩展了 &lt;code&gt;MongoDB&lt;/code&gt; 协议解析，增强 &lt;code&gt;MongoDB&lt;/code&gt; 生态的可观测能力，简要描述了从协议文档分析到在 &lt;code&gt;DeepFlow&lt;/code&gt; 内实现代码解析的过程拆解。&lt;/p&gt;</description></item><item><title>eBPF系列之：Pixie浅剖析</title><link>/posts/telemetry/pixie-try/</link><pubDate>Fri, 10 Feb 2023 00:00:00 +0000</pubDate><guid>/posts/telemetry/pixie-try/</guid><description>&lt;p&gt;部署过程和指令参考：&lt;a href="https://docs.px.dev/installing-pixie/install-guides/self-hosted-pixie/"&gt;pixie install&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pixie平台主要由以下组件组成"&gt;Pixie平台主要由以下组件组成：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pixie Edge Module 边缘模块(PEM)&lt;/strong&gt;:
Pixie&amp;rsquo;s agent, installed per node. PEMs use eBPF to collect data, which is stored locally on the node.
Pixie的代理，安装在每个节点上。PEM使用eBPF收集数据，这些数据存储在节点本地。&lt;/p&gt;</description></item></channel></rss>