运维
运维相关知识和内容
eBPF实战2026:零侵入APM与全栈安全监控部署指南
eBPF:2026年运维必掌握的核心技术
eBPF让你在不修改任何应用代码的情况下,观察任意进程的任意行为。 与传统APM Agent(CPU开销5-15%)相比,eBPF开销约0.3%。
一、bpftrace快速分析
# 安装
apt install bpftrace
# 追踪所有进程的文件打开操作
bpftrace -e 'tracepoint:syscalls:sys_enter_openat {
printf("PID %d (%s) opened: %s\n", pid, comm, str(args->filename));
}'
# 统计函数延迟(找性能瓶颈)
bpftrace -e 'kprobe:tcp_sendmsg { @start[tid] = nsecs; }
kretprobe:tcp_sendmsg /@start[tid]/ {
@latency = hist(nsecs - @start[tid]);
delete(@start[tid]);
}'
二、BCC生产工具集
# 追踪MySQL慢查询(零侵入)
/usr/share/bcc/tools/dbslower mysql -p $(pgrep mysqld)
# 追踪TCP重传(诊断网络问题)
/usr/share/bcc/tools/tcpretrans
# 块设备I/O延迟分布
/usr/share/bcc/tools/biolatency -D
三、Python+BCC自定义探针
from bcc import BPF
bpf_text = """
BPF_HASH(start, u64);
BPF_HISTOGRAM(dist);
int trace_http_start(struct pt_regs *ctx) {
u64 id = bpf_get_current_pid_tgid();
u64 ts = bpf_ktime_get_ns();
start.update(&id, &ts);
return 0;
}
int trace_http_end(struct pt_regs *ctx) {
u64 id = bpf_get_current_pid_tgid();
u64 *s = start.lookup(&id);
if (s) {
u64 delta = bpf_ktime_get_ns() - *s;
dist.increment(bpf_log2l(delta / 1000)); // 微秒
start.delete(&id);
}
return 0;
}
"""
b = BPF(text=bpf_text)
b.attach_uprobe(name="/usr/local/bin/myapp",
sym="net/http.(*ServeMux).ServeHTTP",
fn_name="trace_http_start")
b.attach_uretprobe(name="/usr/local/bin/myapp",
sym="net/http.(*ServeMux).ServeHTTP",
fn_name="trace_http_end")
b.trace_print()
四、Kubernetes中部署Cilium+Hubble
helm install cilium cilium/cilium \
--version 1.16.0 \
--namespace kube-system \
--set kubeProxyReplacement=true \
--set hubble.enabled=true \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true
# 实时查看被丢弃的流量
hubble observe --follow --namespace production --verdict DROPPED
五、Tetragon安全事件检测
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: detect-sensitive-file-access
spec:
kprobes:
- call: "security_file_open"
args:
- index: 0
type: "file"
selectors:
- matchArgs:
- index: 0
operator: "Prefix"
values:
- "/etc/shadow"
- "/proc/keys"
matchActions:
- action: Sigkill # 直接终止访问敏感文件的进程
六、生产性能数据
| 指标 | 无eBPF | eBPF开启 | 开销 |
|---|---|---|---|
| CPU额外开销 | 基准 | +0.3% | 极低 |
| 内存额外开销 | 基准 | +50MB/节点 | 极低 |
| 网络延迟增加 | 基准 | +0.1ms p99 | 可忽略 |
eBPF是可观测性技术的未来,2026年建议从bpftrace开始学习,逐步引入Cilium到生产。