1. 课程导论:BPF与eBPF技术概述、Prometheus生态简介、网络观测与资源配额审计的挑战与价值
1.1 BPF 与 eBPF 技术概述
BPF(Berkeley Packet Filter)最初设计用于网络数据包过滤,其核心思想是在内核中执行用户定义的安全策略,避免将数据包拷贝到用户空间。eBPF(extended BPF)是 BPF 的演进版本,它扩展了指令集、增加了辅助函数和 Map 数据结构,使得开发者可以在不修改内核源码或加载内核模块的情况下,安全高效地注入自定义程序。
核心能力: eBPF 程序通过验证器(Verifier)确保安全性,通过 JIT 编译器实现接近原生性能,支持 kprobes、tracepoints、perf_events、XDP、tc 等多种挂载点。
关键区别: 传统 BPF 仅用于网络过滤,eBPF 则覆盖网络、跟踪、安全、性能调优等多个领域,且支持 Map 与用户态双向通信。
1.2 Prometheus 生态简介
Prometheus 是云原生计算基金会(CNCF)毕业的监控与告警系统,采用拉取(Pull)模型采集指标数据,支持多维数据模型(Metric Name + Labels)和强大的 PromQL 查询语言。其生态核心组件包括:
| 组件 | 功能 | 典型用途 |
|---|---|---|
| Prometheus Server | 指标采集、存储、查询、告警规则评估 | 核心时序数据库与计算引擎 |
| Exporters | 将第三方系统指标转换为 Prometheus 格式 | Node Exporter、Blackbox Exporter、自定义 Exporter |
| Alertmanager | 告警去重、分组、路由、静默、通知 | 对接 Slack、PagerDuty、邮件等 |
| PromQL | 灵活的查询与聚合语言 | 实时仪表盘、异常检测、历史分析 |
| Service Discovery | 自动发现目标(Kubernetes、Consul、DNS) | 动态基础设施下的自动采集 |
生态扩展: Prometheus 与 Grafana 深度集成,支持 Thanos、VictoriaMetrics 等长期存储方案,并通过 Remote Write/Read 协议与外部系统互通。
1.3 网络观测与资源配额审计的挑战与价值
1.3.1 网络观测的挑战
- 数据平面不可见: 传统监控工具(如 netstat、ss)只能提供统计快照,无法捕获每个数据包的流向、延迟和协议细节。
- 内核态与用户态鸿沟: 网络栈处理在内核中完成,用户态工具难以低开销地获取连接跟踪、拥塞控制、重传等细粒度信息。
- 容器与微服务复杂性: 服务网格(Service Mesh)、Overlay 网络(如 Calico、Cilium)引入额外封装层,传统抓包方式难以关联容器 IP 与 Pod 身份。
- 大规模下的性能开销: 全量抓包或轮询统计在千节点集群中会产生巨大资源消耗,影响业务稳定性。
1.3.2 资源配额校准与权限审计的挑战
| 领域 | 挑战 | 后果 |
|---|---|---|
| 资源配额校准 | 容器 CPU/内存/网络带宽的实际使用与申请值偏差大;突发流量导致限流或 OOM;多租户环境下配额分配不透明 | 资源利用率低、SLA 违约、成本失控 |
| 权限审计 | 系统调用、网络连接、文件访问等敏感操作缺乏细粒度审计;传统 auditd 日志量大且难以关联容器身份 | 安全合规风险、事件溯源困难、取证效率低 |
1.3.3 课程价值:eBPF + Prometheus 的融合方案
本课程将 eBPF 的内核可观测能力与 Prometheus 的指标生态相结合,构建一套覆盖网络观测、资源配额校准与权限审计的完整方案。核心价值包括:
- 零侵入内核观测: 通过 eBPF 在内核中直接采集网络连接、系统调用、资源使用等数据,无需修改业务代码或重启服务。
- 高精度指标暴露: 将 eBPF 采集的细粒度数据(如每个 Pod 的 TCP 重传率、每秒连接数、系统调用频率)转换为 Prometheus 指标,支持实时告警与历史回溯。
- 配额校准与审计闭环: 基于真实观测数据校准资源配额,生成权限审计日志,并通过 Prometheus 告警规则实现异常行为自动响应。
- 生产级可扩展性: 结合 Cilium、Pixie 等成熟 eBPF 项目,以及 Prometheus Operator、Thanos 等云原生工具,确保方案在大规模集群中的稳定性与可维护性。
课程目标: 学完本课程后,你将能够独立设计并部署一套基于 eBPF 与 Prometheus 的网络观测与审计系统,实现从内核数据采集到业务指标可视化的全链路闭环。
注意: 本课程假设学员已具备 Linux 基础操作、Docker/Kubernetes 基本概念以及 Prometheus 初步使用经验。对于 eBPF 编程和内核原理,课程将从基础概念逐步深入,无需提前精通。