可观测性技术

eBPF 内存可观测性进阶:容器追踪与 Rust Aya 实践

前两篇文章覆盖了 eBPF 基础概念和 OOM Killer 事件追踪。这篇文章进入更深的层次:容器级别的 OOM 定位、内存分配速率的实时追踪,以及用 Rust Aya 框架来实现同样的功能。 容器级 OOM 定位 在 Kubernetes 环境中,“某个 Pod OOM 了"实际上是一个模糊的描述。Pod 由多个容器组成,容器可能属于不同的 cgroup。eBPF 可以穿透这一层,精确地定位到"是哪个容器里的哪个进程"导致了 OOM。

Continue reading →

用 eBPF + Go 构建 OOM Killer 事件追踪器

bpftrace 适合快速探查和临时调试,但如果要构建持续运行的生产级监控工具,就需要完整的 eBPF 程序了。典型的架构分两层: 内核态:用 C 编写 eBPF 程序,挂载到 hook 点,采集事件数据 用户态:用 Go(或 Rust / libbpf C)编写 loader,加载 eBPF 程序并读取事件 这个模式在行业里已经非常成熟——Pixie、Parca、Cilium 等开源项目都遵循这个架构。

Continue reading →

security-collector-exporter:监控 Linux 的安全审计

为什么写这个 管服务器的人大概都有过这种经历:安全审计来了,一台一台 SSH 上去检查——SSH 配置对不对、SELinux 开没开、防火墙跑没跑、有没有过期账户、密码策略合不合规范。几台机器还好,几十台上百台就纯体力活了。

Continue reading →

VictoriaMetrics指标流聚合三年回顾与现状(2026)

前言 距离上一篇文章 《VictoriaMetrics的指标流聚合能力应用》 发布于 2023年3月,至今已经整整三年。这三年里,VictoriaMetrics生态发生了翻天覆地的变化——让我们一起来回顾这篇博客提出的问题,看看官方解决了多少,我们的 stream-metrics-route 项目又在今天的位置。

Continue reading →

eBPF系列之:DeepFlow 扩展协议解析实践(MongoDB协议与Kafka协议)

概述: 如何分析一个协议(MongoDB) 协议文档的分析思路 MongoDB协议操作码说明表 对最常见的操作码OP_MSG分析 在DeepFlow Agent扩展一个协议解析采集 DeepFlow Agent的开发文档概要 代码指引 定义一个协议,并用一个常量标识。 为新协议准备解析逻辑 定义结构体 实现 L7ProtocolParserInterface 利用Wasm插件扩展DeepFlow的协议采集 Kafka协议分析 Kafka的Header和Data概览 Kafka的Fetch API Kafka的Produce API Kafka协议DeepFlow Agent原生解码 DeepFlow Agent的 Wasm 插件 Wasm Go SDK 的框架 插件代码指引 结语 原生Rust扩展 Wasm插件扩展 附录 概述: MongoDB 目前使用广泛,但是缺乏有效的可观测能力。 DeepFlow 在可观测能力上是很优秀的解决方案,但是却缺少了对 MongoDB 协议的支持。 该文是为 DeepFlow 扩展了 MongoDB 协议解析,增强 MongoDB 生态的可观测能力,简要描述了从协议文档分析到在 DeepFlow 内实现代码解析的过程拆解。

Continue reading →