返回首页
⚙️ 后端 / 架构
eBPF 云原生观测实战:零侵入的可观测性方案
eBPF 让 Linux 内核可编程,无需修改应用代码就能观测网络/性能/安全。本文演示 Cilium + Pixie 的实战用法。
eBPF · Cilium · 可观测性 · 后端
📰
今日技术简讯
📰 技术简讯 · 2026-05-07
今日聚合 6 条热门技术内容。
🤖 AI / LLM
1. Anthropic Skills 协议开源
- 链接:https://github.com/anthropic/skills
- 来源:Anthropic
- 摘要:Skills 协议开源,开发者可自由实现兼容 Skills 的工具。
🎨 前端 / Web
2. Deno 2.1 LTS 发布
- 链接:https://deno.com/blog/deno-2-1-lts
- 来源:Deno
- 摘要:Deno 2.1 进入 LTS,承诺 5 年安全更新,npm 兼容性 100%。
⚙️ 后端 / 架构
3. eBPF 云原生观测
- 链接:https://ebpf.io/summit-2026
- 来源:Cilium / eBPF 基金会
- 摘要:Cilium / Falco / Pixie 等 eBPF 工具进入主流,零侵入式观测/网络/安全。
4. Traefik 3.0 发布
- 链接:https://traefik.io/blog/3-0
- 来源:Traefik
- 摘要:Traefik 3.0 引入 WebAssembly 插件系统,动态加载扩展。
🚀 独立开发 / OPC
5. AppSumo 终身版折扣
- 链接:https://appsumo.com/lifetime
- 来源:AppSumo
- 摘要:SaaS 终身版折扣交易平台,独立开发者分销新渠道。
6. Plausible 2.0 GA
- 链接:https://plausible.io/blog/v2
- 来源:Plausible
- 摘要:隐私友好分析 Plausible 2.0 正式发布,更快 + 自定义事件。
数据来源:掘金 / InfoQ 中文 / HN / GitHub / Dev.to 采集时间:2026-05-07 09:00 (UTC+8)
📝
今日深度文
eBPF 云原生观测实战:零侵入的可观测性方案
一句话结论:eBPF 是云原生时代"可观测性"的杀手锏。它让你不用改一行应用代码,就能看到系统全貌。
背景
eBPF(Extended Berkeley Packet Filter)是 Linux 内核的"沙箱程序":
- 在内核空间运行,安全可控
- 监听网络 / 系统调用 / 性能事件
- 零侵入(不用修改应用)
- 高性能(JIT 编译)
到 2026 年,eBPF 已经从"网络工具"演变成"云原生基础设施"。
4 个核心能力
1. 网络可观测性
传统方式:tcpdump / iptables 日志 / Wireshark
eBPF 方式:Cilium Hubble 自动捕获所有网络流量
应用 → Pod → Service → 外部
↓
eBPF 拦截
↓
Hubble UI(可视化)
2. 性能分析
传统方式:perf / strace / systemtap(侵入式)
eBPF 方式:Parca / Pixie(持续采样)
3. 安全审计
传统方式:auditd / SELinux(配置复杂)
eBPF 方式:Falco / Tetragon(运行时检测)
4. 服务网格
传统方式:Envoy sidecar(资源开销 50MB+)
eBPF 方式:Cilium(内核级别,< 5MB)
实战:部署 Cilium + Hubble
Step 1:安装 Cilium
# 用 Helm 安装 Cilium
helm repo add cilium https://helm.cilium.io
helm install cilium cilium/cilium \
--namespace kube-system \
--set hubble.enabled=true \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true
Step 2:启用 Hubble UI
# 端口转发
kubectl port-forward -n kube-system svc/hubble-ui 12000:80
# 访问 http://localhost:12000
Step 3:观察服务间流量
# 查看所有 namespace 的流量
hubble observe --all
# 过滤 HTTP 流量
hubble observe --verdict DROPPED -f
# 实时查看某个 Pod 的流量
hubble observe pod/default/my-app -f
输出示例:
TIMESTAMP SOURCE DESTINATION
May 7 12:34:56.123 default/order-service default/payment-service
TCP TCP
HTTP/1.1 POST /charge FORWARDED
latency: 45ms
Step 4:网络策略
# Cilium Network Policy(替代 Kubernetes NetworkPolicy)
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: api-allow
spec:
endpointSelector:
matchLabels:
app: api
ingress:
- fromEndpoints:
- matchLabels:
app: frontend
toPorts:
- ports:
- port: "8080"
protocol: TCP
实战:使用 Pixie 调试应用
安装 Pixie
# K8s 集群
helm install pixi pixie-operator/pixie-operator --namespace pl \
--set deployKey=<your-key>
newpx deploy --namespace pl
常用查询
-- 查询 1:HTTP 错误率
px.Display >> 'px/http'
| where resp_status >= 500
| summarize count() by service
| view table
-- 查询 2:慢请求 Top 10
px.Display >> 'px/http'
| where latency_ms > 1000
| sort latency_ms desc
| limit 10
| view table
-- 查询 3:数据库查询性能
px.Display >> 'px/db'
| where service == 'order-service'
| summarize avg(latency_ms), count() by query
| view table
实时 profiling
-- 持续 30 秒 CPU 火焰图
px.CPUProfile('order-service', '30s')
实战:用 Falco 做安全审计
安装
helm install falco falcosecurity/falco \
--namespace falco \
--set falco.json_output=true \
--set falco.http_output.enabled=true
检测规则示例
# 检测异常 shell 启动
- rule: Terminal shell in container
desc: Alert if a shell is spawned in a container
condition: >
spawned_process and container and
proc.name in (shell_binaries)
output: >
Shell spawned in container
(user=%user.name command=%proc.cmdline container=%container.name)
priority: WARNING
# 检测敏感文件访问
- rule: Read sensitive file
desc: Alert if /etc/shadow is read
condition: open_read and fd.name = /etc/shadow
output: Sensitive file read
priority: CRITICAL
5 个常见坑
坑 1:内核版本不兼容
# 检查内核版本
uname -r
# 需要 >= 4.19
# 检查 eBPF 支持
cat /proc/sys/kernel/unprivileged_bpf_disabled
坑 2:资源占用过高
eBPF 程序本身很轻量(KB 级)
但调试工具(Pixie / Hubble)可能占 100MB+ 内存
✅ 生产环境禁用 debug 模式
坑 3:内核版本与工具不匹配
# Cilium 1.16 要求 Linux 5.4+
# 旧集群需要升级内核或选旧版本
坑 4:网络策略过严
# ❌ 默认 deny 全部 → 调试难
# ✅ 先 allowlist 全部 → 再逐步限制
坑 5:日志太多
Falco 默认规则多 → 日志爆炸
✅ 用 macros 自定义规则集
✅ 配置过滤器(namespace / pod 标签)
何时用 eBPF
✅ 适合
- 云原生 / K8s 集群
- 微服务架构
- 需要细粒度可观测性
- 性能敏感场景
❌ 不适合
- 传统单体应用
- 旧内核(< 4.19)
- 团队不熟悉 Linux 内核
与传统方案对比
| 维度 | 传统 | eBPF |
|---|---|---|
| 侵入性 | 高(需改代码) | 零 |
| 性能开销 | 5-20% | < 1% |
| 部署复杂度 | 中 | 中 |
| 数据粒度 | 应用层 | 系统层 + 应用层 |
| 学习曲线 | 平缓 | 较陡 |
我的看法
eBPF 是云原生可观测性的未来:
- 零侵入:不用改应用代码
- 高性能:内核级执行
- 生态成熟:Cilium / Falco / Pixie / Parca 都生产可用
对独立开发者的意义:
- 自建服务网格(Cilium 比 Istio 简单 10 倍)
- 自建可观测性(Pixie + Grafana)
- 调试生产环境问题(不用 ssh 到服务器)
未来值得关注:
- eBPF for Windows(跨平台)
- eBPF + AI(智能检测异常)
- eBPF for 安全(运行时防护)
参考
本文示例基于 Cilium 1.16 + Pixie 0.7 + Falco 0.41,2026 年 5 月最新版本。
📚 同主题文章
⚙️后端 / 架构·
Deno 2 + Hono 实战:现代边缘运行时全栈开发
Deno 2 + Hono 是 2026 年最强的边缘运行时组合:原生 TypeScript、内置工具链、冷启动 < 5ms。本文从入门到生产,含 4 个实战项目 + 性能对比 + 迁移指南。
DenoHono边缘运行时
⚙️后端 / 架构·
Rust 1.85 + Axum 实战:高性能 Web 服务端开发
Rust 1.85 + Axum 是 2026 高性能 Web 服务的最佳组合。本文从 0 到生产级后端实战,含 4 个真实项目 + 性能对比 + 部署清单。
RustAxumWeb
⚙️后端 / 架构·
Docker 多阶段构建最佳实践:从 1GB 到 100MB
Docker 多阶段构建可以把镜像从 1GB 缩小到 100MB。本文演示 6 个真实案例,包括 Node.js / Go / Rust。
Docker多阶段构建镜像优化