用 eBPF 重塑云原生可观测性
过去一年,我们把整套监控体系从"sidecar + 周期轮询"迁到了基于 eBPF 的方案,盲区消失、开销骤降。本文记录我们的踩坑与收益。
一、为什么传统方案不够用
传统 APM 要么往每个 Pod 注入 sidecar,要么靠应用埋点。前者带来可观的内存与调度开销,后者依赖业务团队配合,且对第三方组件无能为力。更糟的是,网络层的丢包、重传、连接建立耗时这些"暗物质",应用层根本看不到。
二、eBPF 的核心优势
eBPF 允许我们把经过验证器(verifier)校验的小程序挂到内核 hook 点上,安全地观测系统调用、网络包和调度事件,而无需改内核、无需重启。数据通过 eBPF Map 高效传回用户空间。
# 查看 Cilium 数据面状态
kubectl -n kube-system exec ds/cilium -- cilium status --verbose
# 实时观察服务间流量
hubble observe --namespace prod --follow
三、落地建议
先在非核心命名空间灰度,关注内核版本(建议 5.10+)与 verifier 兼容性;把 Hubble 的指标接入既有 Prometheus/Grafana,逐步替换旧 sidecar。我们最终 sidecar 数量下降 70%,节点内存回收明显。
下一篇聊聊如何用 eBPF 做无侵入的 SLO 监控。