全栈分布式追踪

DeepFlow 利用 eBPF 创新的实现了 AutoTracing,对分布式调用的追踪覆盖了 API 调用和网络传输两个层面,这与 OpenTelemetry 对应用代码内函数粒度的覆盖正好形成互补。

通过集成 OpenTelemetry、SkyWalking 等 APM 数据源,AutoTracing 能力更加完善,能够实现打通应用、系统、网络的全栈分布式追踪能力。在下图中的火焰图中我们可以看到:

  • 复杂冗长的网关路径都能追踪,包括 API 网关、微服务网关、负载均衡器、Ingress 等
  • 任意微服务的上下游调用都能追踪,包括开发者容易忽略的 DNS 等调用,包括 MySQL、Redis 等无法插码的服务
  • 任意两个微服务之间的全栈网络路径都能追踪,覆盖从应用代码到系统调用、Sidecar/iptables/ipvs 等容器网络组件、OvS/LinuxBridge 等虚拟机网络组件、NFV 网关等云网络组件

DeepFlow 与 APM 集成

DeepFlow 与 APM 集成

DeepFlow 与 APM 的集成方法很多,分为如下四种:

  • 由 DeepFlow 展示全栈分布式追踪结果
  • 由 APM 展示全栈分布式追踪结果
      1. 提供 API:APM 调用 DeepFlow 提供的 Trace Completion API,获取 DepeFlow 中的 SYS Span 和 NET Span,配置方法参考 Trace Completion API 文档
      1. 导出数据:APM 以 OTLP 协议接收 DeepFlow 导出的 SYS Span 和 NET Span,配置方法参考 OTLP Exporter 文档

上述四种方法中,方案 1 和 2 的工作量最低,只需配置即可;方案 3 的开发工作量也非常小,非常适合前期使用;方案 4 需要理解 SYS Span、NET Span 与 APP Span 的关联逻辑,开发工作量较大,适合对 DeepFlow 深入理解后使用。