Skip to content

eBPF 全链路观测(Beyla + Tempo)on uat1

零侵入(不改代码、不注入 sidecar)为 uat1(RKE2)集群所有服务提供 RED 指标 + 分布式 Trace + 服务拓扑:Grafana Beyla DaemonSet 通过 eBPF 自动埋点节点上全部进程,指标直出 Prometheus,trace 直发 Tempo;Tempo metrics-generator 再聚合 spanmetrics / servicegraph 回写 Prometheus,Grafana 一处看板贯通 指标 ↔ trace ↔ 拓扑。

文件说明
部署文档.md完整部署手册:架构、镜像同步、安装、Grafana 接入、验证、踩坑、生产注意事项、卸载
操作文档.md日常运维:看板使用、Trace 查询、指标速查、扩缩容/升级、排障速查
deploy.sh一键部署(幂等;--sync 先同步镜像,需 export HARBOR_PASSWORD 或 .secrets.env)
sync-images.sh / images.txt镜像同步:docker.m.daocloud.io → Harbor observability 项目(2 个镜像)
tempo.yamlTempo v2.10.7 单实例 monolithic:OTLP 接收 + metrics-generator + local backend(NFS PVC)
beyla.yamlBeyla v3.30.0 DaemonSet:SA/RBAC + ConfigMap + DS + metrics Service
monitoring.yamlServiceMonitor(beyla/tempo)+ PrometheusRule(RED 告警,接入现有飞书路由)
grafana/dashboard-ebpf-apm-red.jsonRED 总览看板(uid=ebpf-apm-red,Grafana 导入即用)

架构

各节点进程(HTTP/gRPC/SQL/Redis/Kafka…)
        ▲ eBPF uprobes/kprobes(零侵入)
   Beyla DaemonSet(6 节点,hostPID,最小 caps)
     ├── Prometheus export :9090 ──► rancher-monitoring Prometheus(RED 指标,ServiceMonitor)
     └── OTLP/gRPC ──► Tempo :4317(observability ns)
                          ├── local backend:WAL + blocks(NFS PVC 10Gi,保留 48h)
                          └── metrics-generator ── remote_write ──► Prometheus
                                    (traces_spanmetrics_* / traces_service_graph_*)
Grafana(rancher-monitoring)
     ├── 数据源 Prometheus(exemplar trace_id ──► 跳转 Tempo)
     ├── 数据源 Tempo(Node Graph 用 Prometheus servicegraph 数据)
     └── 看板 eBPF APM - RED 总览(uid ebpf-apm-red)

关键信息

  • 组件版本:Beyla v3.30.0(已捐赠 OTel,亦称 OBI)、Tempo v2.10.7(未选 3.0:架构大改,UAT 求稳)
  • 内核要求:5.8+ 且带 BTF;本集群 Rocky 9.8 内核 5.14 满足
  • Beyla 权限:非 privileged,仅需 BPF + PERFMON + NET_ADMIN + SYS_PTRACE caps + hostPID
  • Tempo 存储:local backend(UAT 够用),NFS PVC 10Gi,块保留 48h;生产换对象存储(S3/MinIO)
  • 自动覆盖的协议:HTTP/HTTPS/HTTP2、gRPC、SQL、Redis、Kafka、Mongo(DNS/GPU 默认关闭)
  • 实测自动埋点:Knative 全链路(activator/queue-proxy/user-container/kourier)、redis、proxysql、kibana、logstash(Java 通用模式)、k8sgpt 等,无需任何配置
  • 告警:PrometheusRule ebpf-apm-red——应用 5xx 错误率 >2%、P99 延迟 >1s、Beyla/Tempo down,复用现有 Alertmanager 飞书路由

已知限制(UAT 可接受)

  • 跨进程 trace 断链:Go context propagation(写 traceparent 头)需 bpf_probe_write_user + CAP_SYS_ADMIN,当前未加 SYS_ADMIN,跨服务调用链在进程边界断开(单服务内 span 完整)
  • Java TLS:JDK 进程 SSL 加密流量的 telemetry 不可用(java attach timed out),明文 HTTP 正常
  • 老 Go(<1.17)程序:仅通用 instrumentation,无 Go 专属高精度追踪
  • Knative 缩容到零:ksvc 无流量 70s 后 pod 消失,对应 trace 也停止产生(正常现象)
  • Tempo 单点:单实例无 HA,重启期间 trace 接收中断(Beyla 侧有重试缓冲,短暂中断可恢复)